[
  {
    "path": ".gitattributes",
    "content": "###############################################################################\n# Set default behavior to automatically normalize line endings.\n###############################################################################\n* text=auto\n\n###############################################################################\n# Set default behavior for command prompt diff.\n#\n# This is need for earlier builds of msysgit that does not have it on by\n# default for csharp files.\n# Note: This is only used by command line\n###############################################################################\n#*.cs     diff=csharp\n\n###############################################################################\n# Set the merge driver for project and solution files\n#\n# Merging from the command prompt will add diff markers to the files if there\n# are conflicts (Merging from VS is not affected by the settings below, in VS\n# the diff markers are never inserted). Diff markers may cause the following \n# file extensions to fail to load in VS. An alternative would be to treat\n# these files as binary and thus will always conflict and require user\n# intervention with every merge. To do so, just uncomment the entries below\n###############################################################################\n#*.sln       merge=binary\n#*.csproj    merge=binary\n#*.vbproj    merge=binary\n#*.vcxproj   merge=binary\n#*.vcproj    merge=binary\n#*.dbproj    merge=binary\n#*.fsproj    merge=binary\n#*.lsproj    merge=binary\n#*.wixproj   merge=binary\n#*.modelproj merge=binary\n#*.sqlproj   merge=binary\n#*.wwaproj   merge=binary\n\n###############################################################################\n# behavior for image files\n#\n# image files are treated as binary by default.\n###############################################################################\n#*.jpg   binary\n#*.png   binary\n#*.gif   binary\n\n###############################################################################\n# diff behavior for common document formats\n# \n# Convert binary document formats to text before diffing them. This feature\n# is only available from the command line. Turn it on by uncommenting the \n# entries below.\n###############################################################################\n#*.doc   diff=astextplain\n#*.DOC   diff=astextplain\n#*.docx  diff=astextplain\n#*.DOCX  diff=astextplain\n#*.dot   diff=astextplain\n#*.DOT   diff=astextplain\n#*.pdf   diff=astextplain\n#*.PDF   diff=astextplain\n#*.rtf   diff=astextplain\n#*.RTF   diff=astextplain\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "github: [BartoszCichecki]\ncustom: [\"https://paypal.me/bartoszcichecki\"]\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/1_feature_request.yml",
    "content": "name: Feature Request\ndescription: Suggest an idea for this project\nlabels: [\"feature\"]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        > [!IMPORTANT]\n        > Before you start, read [the rules](https://github.com/BartoszCichecki/LenovoLegionToolkit/blob/master/CONTRIBUTING.md) for contributing.\n  \n  - type: input\n    id: version\n    attributes:\n      label: Version\n      description: Which Lenovo Legion Toolkit version do you use?\n      placeholder: e.g. 2.14.0\n    validations:\n      required: true\n  - type: input\n    id: os\n    attributes:\n      label: OS\n      description: Which operating system do you use?\n      placeholder: e.g. Windows 11 21H2 build 22000\n    validations:\n      required: true\n  - type: input\n    id: device\n    attributes:\n      label: Device\n      description: Which laptop do you use?\n      placeholder: e.g. Legion 5 Pro 16ACH6\n    validations:\n      required: true\n  - type: textarea\n    id: problem\n    attributes:\n      label: Is your feature request related to a problem?\n      description: A clear and concise description of what the problem is.\n      placeholder: A clear and concise description of what the problem is.\n    validations:\n      required: true\n  - type: textarea\n    id: solution\n    attributes:\n      label: How would you like the problem to be solved?\n      description: A clear and concise description of what you would like to happen.\n      placeholder: A clear and concise description of what you would like to happen.\n    validations:\n      required: true\n  - type: textarea\n    id: alternatives\n    attributes:\n      label: What alternatives have you considered?\n      description: A clear and concise description of any alternative solutions or features you have considered.\n      placeholder: A clear and concise description of any alternative solutions or features you have considered.\n    validations:\n      required: true\n  - type: textarea\n    id: additional\n    attributes:\n      label: Additional information\n      description: If applicable, add screenshots or other relevant information to help explain your problem.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/2_bug_report.yml",
    "content": "name: Bug Report\ndescription: Something isn't working correctly\nlabels: [\"bug\"]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        > [!IMPORTANT]\n        > Before you start, read [the rules](https://github.com/BartoszCichecki/LenovoLegionToolkit/blob/master/CONTRIBUTING.md) for contributing.\n  \n  - type: input\n    id: version\n    attributes:\n      label: Version\n      description: Which Lenovo Legion Toolkit version do you use?\n      placeholder: e.g. 2.14.0\n    validations:\n      required: true\n  - type: input\n    id: os\n    attributes:\n      label: OS\n      description: Which operating system do you use?\n      placeholder: e.g. Windows 11 21H2 build 22000\n    validations:\n      required: true\n  - type: input\n    id: device\n    attributes:\n      label: Device\n      description: Which laptop do you use?\n      placeholder: e.g. Legion 5 Pro 16ACH6\n    validations:\n      required: true\n  - type: input\n    id: bios\n    attributes:\n      label: BIOS version\n      description: Which BIOS version do you have?\n      placeholder: e.g. GKCN57WW\n    validations:\n      required: true\n  - type: textarea\n    id: troubleshoot\n    attributes:\n      label: What is wrong?\n      description: Provide detailed description of what is wrong or does not work as expected.\n      placeholder: Provide detailed description of what is wrong or does not work as expected.\n    validations:\n      required: true\n  - type: textarea\n    id: description\n    attributes:\n      label: What did you try already?\n      description: Provide detailed description of how did you troubleshoot the issue and what have you tried already.\n      placeholder: Provide detailed description of how did you troubleshoot the issue and what have you tried already.\n    validations:\n      required: true\n  - type: textarea\n    id: reproduce\n    attributes:\n      label: How to reproduce the bug?\n      description: Describe how to reproduce the behavior. Be as specific as possible and provide as many details as possible.\n      placeholder: |\n        1. Go to '...'\n        2. Click on '....'\n        3. Scroll down to '....'\n        4. See error\n    validations:\n      required: true\n  - type: textarea\n    id: expected-behaviour\n    attributes:\n      label: What is the behavior that you expected?\n      description: Describe what did you expect would happen.\n      placeholder: Describe what did you expect would happen.\n    validations:\n      required: true\n  - type: textarea\n    id: logs\n    attributes:\n      label: Logs\n      placeholder: Please drag and drop log files here. You can check README for instructions on how to collect logs.\n      description: Please drag and drop log files here. You can check README for instructions on how to collect logs.\n    validations:\n      required: true\n  - type: textarea\n    id: additional\n    attributes:\n      label: Additional information\n      description: If applicable, add screenshots or other relevant information to help explain your problem.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/3_compatibility_request.yml",
    "content": "name: Compatibility Request\ndescription: Request support for a device that is not supported\nlabels: [\"compatibility\"]\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        > [!IMPORTANT]\n        > Before you start, read [the rules](https://github.com/BartoszCichecki/LenovoLegionToolkit/blob/master/CONTRIBUTING.md) for contributing.\n  \n  - type: input\n    id: version\n    attributes:\n      label: Version\n      description: Which Lenovo Legion Toolkit version do you use?\n      placeholder: e.g. 2.14.0\n    validations:\n      required: true\n  - type: input\n    id: os\n    attributes:\n      label: OS\n      description: Which operating system do you use?\n      placeholder: e.g. Windows 11 21H2 build 22000\n    validations:\n      required: true\n  - type: input\n    id: device\n    attributes:\n      label: Device\n      description: Which laptop do you use?\n      placeholder: e.g. Legion 5 Pro 16ACH6\n    validations:\n      required: true\n  - type: input\n    id: bios\n    attributes:\n      label: BIOS version\n      description: Which BIOS version do you have?\n      placeholder: e.g. GKCN57WW\n    validations:\n      required: true\n  - type: textarea\n    id: what-was-test\n    attributes:\n      label: Which features of the application did you test?\n      description: A clear and concise description of features that were tested.\n      placeholder: Type here...\n    validations:\n      required: true\n  - type: textarea\n    id: what-is-broken\n    attributes:\n      label: Which features of the application do not work as expected?\n      description: A clear and concise description of features that do not work as expected.\n      placeholder: Type here...\n    validations:\n      required: true\n  - type: textarea\n    id: logs\n    attributes:\n      label: Logs\n      description: If you encountered problems, please drag and drop log files here. You can check README for instructions on how to collect logs.\n  - type: textarea\n    id: additional\n    attributes:\n      label: Additional information\n      description: If applicable, add screenshots or other relevant information to help explain your problem.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: General questions\n    url: https://github.com/BartoszCichecki/LenovoLegionToolkit/discussions/new?category=q-a\n    about: Please ask questions here.\n"
  },
  {
    "path": ".github/pull_request_template.md",
    "content": "<!---\nImportant!\n\nPlease make yourself familiar with Contribution section in the README and CONTRIBUTING.md file to make sure that your pull request is compliant.\n-->\n"
  },
  {
    "path": ".github/workflows/build.yml",
    "content": "name: Build\n\non:\n  push:\n    branches: [ master ]\n  pull_request:\n    branches: [ master ]\n\njobs:\n  build:\n\n    runs-on: windows-2022\n\n    steps:\n    - name: Checkout\n      uses: actions/checkout@v4\n    - name: Setup .NET\n      uses: actions/setup-dotnet@v3\n      with:\n        dotnet-version: 8.0.x\n    - name: Restore\n      run: dotnet restore\n    - name: Build\n      run: .\\make.bat\n    - name: Upload artifact\n      uses: actions/upload-artifact@v4\n      with:\n        name: installer\n        path: build_installer\\LenovoLegionToolkitSetup.exe\n"
  },
  {
    "path": ".github/workflows/release.yml",
    "content": "name: Release\n\non:\n  push:\n    tags:\n      - \"[0-9]*.[0-9]*.[0-9]*\"\n\njobs:\n  build:\n\n    runs-on: windows-2022\n\n    steps:\n    - name: Checkout\n      uses: actions/checkout@v4\n    - name: Setup .NET\n      uses: actions/setup-dotnet@v3\n      with:\n        dotnet-version: 8.0.x\n    - name: Restore\n      run: dotnet restore\n    - name: Build\n      run: .\\make.bat ${{ github.ref_name }}\n    - name: Release\n      uses: softprops/action-gh-release@v0.1.13\n      with:\n        draft: true\n        files: build_installer/LenovoLegionToolkitSetup.exe\n        fail_on_unmatched_files: true\n    - name: Upload artifact\n      uses: actions/upload-artifact@v4\n      with:\n        name: installer\n        path: build_installer/LenovoLegionToolkitSetup.exe\n"
  },
  {
    "path": ".gitignore",
    "content": "\n# Created by https://www.toptal.com/developers/gitignore/api/visualstudio,dotnetcore,csharp\n# Edit at https://www.toptal.com/developers/gitignore?templates=visualstudio,dotnetcore,csharp\n\n### Csharp ###\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*.rsuser\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Mono auto generated files\nmono_crash.*\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\n[Ww][Ii][Nn]32/\n[Aa][Rr][Mm]/\n[Aa][Rr][Mm]64/\nbld/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n[Ll]ogs/\nbuild/\n\n# Visual Studio 2015/2017 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# Visual Studio 2017 auto generated files\nGenerated\\ Files/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUnit\n*.VisualState.xml\nTestResult.xml\nnunit-*.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# Benchmark Results\nBenchmarkDotNet.Artifacts/\n\n# .NET Core\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n\n# ASP.NET Scaffolding\nScaffoldingReadMe.txt\n\n# StyleCop\nStyleCopReport.xml\n\n# Files built by Visual Studio\n*_i.c\n*_p.c\n*_h.h\n*.ilk\n*.meta\n*.obj\n*.iobj\n*.pch\n*.pdb\n*.ipdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*_wpftmp.csproj\n*.log\n*.tlog\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# Visual Studio Trace Files\n*.e2e\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# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# AxoCover is a Code Coverage Tool\n.axoCover/*\n!.axoCover/settings.json\n\n# Coverlet is a free, cross platform Code Coverage Tool\ncoverage*.json\ncoverage*.xml\ncoverage*.info\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# Note: 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# NuGet Symbol Packages\n*.snupkg\n# except build/, which is used as an MSBuild target.\n!**/[Pp]ackages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/[Pp]ackages/repositories.config\n# NuGet v3's project.json files produces more ignorable files\n*.nuget.props\n*.nuget.targets\n\n# Nuget personal access tokens and Credentials\nnuget.config\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*.appx\n*.appxbundle\n*.appxupload\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# Including strong name files can present a security risk\n# (https://github.com/github/gitignore/pull/2483#issue-259490424)\n#*.snk\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\nServiceFabricBackup/\n*.rptproj.bak\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*.rptproj.rsuser\n*- [Bb]ackup.rdl\n*- [Bb]ackup ([0-9]).rdl\n*- [Bb]ackup ([0-9][0-9]).rdl\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# 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# CodeRush personal settings\n.cr/personal\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# Tabs Studio\n*.tss\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# OpenCover UI analysis results\nOpenCover/\n\n# Azure Stream Analytics local run output\nASALocalRun/\n\n# MSBuild Binary and Structured Log\n*.binlog\n\n# NVidia Nsight GPU debugger configuration file\n*.nvuser\n\n# MFractors (Xamarin productivity tool) working folder\n.mfractor/\n\n# Local History for Visual Studio\n.localhistory/\n\n# BeatPulse healthcheck temp database\nhealthchecksdb\n\n# Backup folder for Package Reference Convert tool in Visual Studio 2017\nMigrationBackup/\n\n# Ionide (cross platform F# VS Code tools) working folder\n.ionide/\n\n# Fody - auto-generated XML schema\nFodyWeavers.xsd\n\n# VS Code files for those working on multiple tools\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n*.code-workspace\n\n# Local History for Visual Studio Code\n.history/\n\n# Windows Installer files from build outputs\n*.cab\n*.msi\n*.msix\n*.msm\n*.msp\n\n# JetBrains Rider\n.idea/\n*.sln.iml\n\n### DotnetCore ###\n# .NET Core build folders\nbin/\nobj/\n\n# Common node modules locations\n/node_modules\n/wwwroot/node_modules\n\n### VisualStudio ###\n\n# User-specific files\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n\n# Mono auto generated files\n\n# Build results\n\n# Visual Studio 2015/2017 cache/options directory\n# Uncomment if you have tasks that create the project's static files in wwwroot\n\n# Visual Studio 2017 auto generated files\n\n# MSTest test Results\n\n# NUnit\n\n# Build Results of an ATL Project\n\n# Benchmark Results\n\n# .NET Core\n\n# ASP.NET Scaffolding\n\n# StyleCop\n\n# Files built by Visual Studio\n\n# Chutzpah Test files\n\n# Visual C++ cache files\n\n# Visual Studio profiler\n\n# Visual Studio Trace Files\n\n# TFS 2012 Local Workspace\n\n# Guidance Automation Toolkit\n\n# ReSharper is a .NET coding add-in\n\n# TeamCity is a build add-in\n\n# DotCover is a Code Coverage Tool\n\n# AxoCover is a Code Coverage Tool\n\n# Coverlet is a free, cross platform Code Coverage Tool\n\n# Visual Studio code coverage results\n\n# NCrunch\n\n# MightyMoose\n\n# Web workbench (sass)\n\n# Installshield output folder\n\n# DocProject is a documentation generator add-in\n\n# Click-Once directory\n\n# Publish Web Output\n# Note: 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\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\n\n# NuGet Packages\n# NuGet Symbol Packages\n# The packages folder can be ignored because of Package Restore\n# except build/, which is used as an MSBuild target.\n# Uncomment if necessary however generally it will be regenerated when needed\n# NuGet v3's project.json files produces more ignorable files\n\n# Nuget personal access tokens and Credentials\n\n# Microsoft Azure Build Output\n\n# Microsoft Azure Emulator\n\n# Windows Store app package directories and files\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n# but keep track of directories ending in .cache\n\n# Others\n\n# Including strong name files can present a security risk\n# (https://github.com/github/gitignore/pull/2483#issue-259490424)\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\n# RIA/Silverlight projects\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\n# SQL Server files\n\n# Business Intelligence projects\n\n# Microsoft Fakes\n\n# GhostDoc plugin setting file\n\n# Node.js Tools for Visual Studio\n\n# Visual Studio 6 build log\n\n# Visual Studio 6 workspace options file\n\n# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)\n\n# Visual Studio LightSwitch build output\n\n# Paket dependency manager\n\n# FAKE - F# Make\n\n# CodeRush personal settings\n\n# Python Tools for Visual Studio (PTVS)\n\n# Cake - Uncomment if you are using it\n# tools/**\n# !tools/packages.config\n\n# Tabs Studio\n\n# Telerik's JustMock configuration file\n\n# BizTalk build output\n\n# OpenCover UI analysis results\n\n# Azure Stream Analytics local run output\n\n# MSBuild Binary and Structured Log\n\n# NVidia Nsight GPU debugger configuration file\n\n# MFractors (Xamarin productivity tool) working folder\n\n# Local History for Visual Studio\n\n# BeatPulse healthcheck temp database\n\n# Backup folder for Package Reference Convert tool in Visual Studio 2017\n\n# Ionide (cross platform F# VS Code tools) working folder\n\n# Fody - auto-generated XML schema\n\n# VS Code files for those working on multiple tools\n\n# Local History for Visual Studio Code\n\n# Windows Installer files from build outputs\n\n# JetBrains Rider\n\n### VisualStudio Patch ###\n# Additional files built by Visual Studio\n\n# End of https://www.toptal.com/developers/gitignore/api/visualstudio,dotnetcore,csharp\n\nbuild_installer\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "## Welcome to Lenvo Legion Toolkit contributing guide!\n\n### Other language versions of this contributing guide:\n* [简体中文版开发者指南](CONTRIBUTING_zh-hans.md)\n* [日本語版の貢献ガイド](CONTRIBUTING_ja-JP.md)\n\nThanks for investing your time in contributing to this project! Giving the growing popularity of LLT, here are a few rules to follow to ensure that your contribution goes smoothly.\n\n<br/>\n\n_Due to large number of issues created, those that do not meet the criteria will be deleted without warning. Repeating offenders will be banned._\n\n<br/>\n\n**1. Before reporting an issue make yourself familiar with the README**\n\n[README](https://github.com/BartoszCichecki/LenovoLegionToolkit/blob/master/README.md) is regularly updated to include answers to frequently asked questions as well as information about most common issues. Take your time to go through what is there before creating an issue or starting a discussion.\n\n**2. Check already reported issues**\n\nGo through [issues](https://github.com/BartoszCichecki/LenovoLegionToolkit/issues?q=is%3Aissue) that were already reported, as well as [discussions](https://github.com/BartoszCichecki/LenovoLegionToolkit/discussions?discussions_q=). Do not create duplicate issues or discussions. Even if the issue is marked as closed, you can still leave a comment there.\n\n**3. Use English**\n\nThis makes it easier for everyone to follow the conversation.\n\n**4. Respect scope of the project**\n\nThis is not meant to be a do-it-all type of application. The vision for the project is clear: provide a replacement of Vantage for Legion laptops. Do not request support for other types/models/etc devices.\n\n**5. Verify your problem before creating an issue**\n\nMake sure that a bug is really a bug in LLT - this isn't a free system troubleshooting forum. If you use modified version of Windows or your Windows is acting funny, that's on you.\n\n**6. Describe your problem as best as you can**\n\nProviding good description is key. Fill out all the fields of the form when creating an issue, including logs. The better the description, the higher the chance that we will understand each other correctly.\n\n**7. Give a good title to issues and discussions**\n\nIt is a lot easier to browse the list and follow issues and discussions. \"Error when using LLT\" is not a good title.\n\n**8. Stay on topic**\n\nDo not leave unnecessary comments or spam.\n\n**9. One problem per issue**\n\nDo not report many problems or request many features withing one issue. Make one issue or discussion per problem/topic/idea. This makes it easier to follow.\n\n**10. Translations**\n\nTranslation contributions are done using [Crowdin](https://crowdin.com/project/llt), so please request access to the project there if you want to contribute.\n\n**11. Pull requests**\n\nPull requests are welcome (of course). Unless you create a very simple and understandable PR, make an issue first and describe the problem you are solving. It doesn't make sense to spend time working on an idea that will be rejected, because it doesn't fit the project vision. Follow the code style and architecture of the project.\n\n<br/>\n\nOnce again, thanks for investing your time in helping LLT get better!\n"
  },
  {
    "path": "CONTRIBUTING_ja-JP.md",
    "content": "## Lenovo Legion Toolkit への貢献ガイドへようこそ！\n\n### この貢献ガイドの他の言語バージョン：\n* [英語版の貢献ガイド](CONTRIBUTING.md)\n* [簡体字中国語版の貢献ガイド](CONTRIBUTING_zh-hans.md)\n\nこのプロジェクトに貢献するために時間を割いていただきありがとうございます！ LLTの人気が高まっているため、貢献がスムーズに進むようにするために、いくつかのルールに従ってください。\n\n<br/>\n\n_作成された問題の数が多いため、基準を満たさないものは警告なしに削除されます。繰り返し違反する者は禁止されます。_\n\n<br/>\n\n**1. 問題を報告する前にREADMEをよく読んでください**\n\n[README](https://github.com/BartoszCichecki/LenovoLegionToolkit/blob/master/README.md)は、よくある質問への回答や最も一般的な問題に関する情報を���むように定期的に更新されます。問題を作成する前に、そこにある内容を確認してください。\n\n**2. 既に報告されている問題を確認してください**\n\n既に報告されている[問題](https://github.com/BartoszCichecki/LenovoLegionToolkit/issues?q=is%3Aissue)や[ディスカッション](https://github.com/BartoszCichecki/LenovoLegionToolkit/discussions?discussions_q=)を確認してください。重複する問題やディスカッションを作成しないでください。問題がクローズされていても、コメントを残すことができます。\n\n**3. 英語を使用してください**\n\nこれにより、すべての人が会話を追跡しやすくなります。\n\n**4. プロジェクトの範囲を尊重してください**\n\nこれは万能のアプリケーションを目指しているわけではありません。プロジェクトのビジョンは明確です：LegionノートパソコンのためのVantageの代替品を提供すること。他のタイプ/モデル/デバイスのサポートを要求しないでください。\n\n**5. 問題を作成する前に問題を確認してください**\n\nバグが本当にLLTのバグであることを確認してください - これは無料のシステムトラブルシューティングフォーラムではありません。Windowsの改造版を使用している場合や、Windowsが正常に動作していない場合、それはあなたの責任です。\n\n**6. 問題をできるだけ詳しく説明してください**\n\n良い説明を提供することが重要です。問題を作成する際には、フォームのすべてのフィールドを記入し、ログを含めてください。説明が良ければ良いほど、私たちが正しく理解する可能性が高くなります。\n\n**7. 問題やディスカッションに良いタイトルを付けてください**\n\nリストを閲覧し、問題やディスカッションを追跡するのがはるかに簡単です。「LLTを使用中にエラーが発生しました」は良いタイトルではありません。\n\n**8. トピックに集中してください**\n\n不要なコメントやスパムを残さないでください。\n\n**9. 1つの問題につき1つの問題**\n\n1つの問題で多くの問題を報告したり、多くの機能を要求したりしないでください。問題/トピック/アイデアごとに1つの問題やディスカッションを作成してください。これにより、追跡が容易になります。\n\n**10. 翻訳**\n\n翻訳の貢献は[Crowdin](https://crowdin.com/project/llt)を使用して行われるため、貢献したい場合はそこでプロジェクトへのアクセスをリクエストしてください。\n\n**11. プルリクエスト**\n\nプルリクエストは歓迎されます（もちろんです）。非常にシンプルで理解しやすいPRを作成しない限り、最初に問題を作成し、解決している問題を説明してください。プロジェクトのビジョンに合わないアイデアに時間を費やすのは意味がありません。プロジェクトのコードスタイルとアーキテクチャに従ってください。\n\n<br/>\n\nもう一度、LLTをより良くするために時間を割いていただきありがとうございます！\n"
  },
  {
    "path": "CONTRIBUTING_zh-hans.md",
    "content": "## 欢迎来到拯救者工具箱开发者指南\n\n首先感谢你花时间为此项目做出贡献！随着拯救者工具箱的热度越来越高，为了确保你的贡献能够被迅速采纳，你应该遵守一定的格式和规则。\n\n<br/>\n\n_由于 Issues 总量的增加，不符合标准的 Issue 会在无预先警告的情况下被关闭或删除。屡次违反者将被本项目封禁。_\n\n<br/>\n\n**1. 在报告 Issue 前请仔细阅读 README**\n\n绝大多数常见问题的解决方法和重要信息都已在 [README](https://github.com/BartoszCichecki/LenovoLegionToolkit/blob/master/README_zh-hans.md) 内阐明。请务必在报告 Issue 或发起讨论前通读其中的内容。\n\n**2. 检查已被报告的 Issues**\n\n请检查项目仓库下的 [Issues](https://github.com/BartoszCichecki/LenovoLegionToolkit/issues?q=is%3Aissue) 和 [Discussions](https://github.com/BartoszCichecki/LenovoLegionToolkit/discussions?discussions_q=) 栏目。请不要报告重复的 Issue 或发起重复的讨论。即使你找到的 Issue 已经被关闭，你一样可以在那里留言。\n\n**3. 使用英语**\n\n这会让所有人之间的交流都更加便利。\n\n译者提示：若你无法流畅地使用英语表达，你可以在使用中文完成草稿后使用百度翻译或 [DeepL](https://www.deepl.com/zh/translator) 等翻译网站或软件将草稿翻译为英语后提交。\n\n**4. 尊重项目目标**\n\n这不是一个万能的应用。项目的愿景很明确：为拯救者笔记本提供一个 Legion Zone（海外版则为 Vantage）的替代品。请勿要求支持其它类型或型号的设备。\n\n**5. 在新建 Issue 前审查你的问题**\n\n请确保 Bug 确实是 LLT 的 Bug。这不是一个免费的系统故障排除论坛，如果你在使用被修改过的 Windows 版本或你的系统本身已经出现问题，请自行解决。\n\n**6. 尽所能详细描述你的问题**\n\n详细的描述是解决问题的关键所在。请在新建 Issue 时填写表单内的所有项目并提供日志文件。只有提供良好的描述我们才能更快地解决问题。\n\n**7. 为你的 Issue 或条论起一个好的标题**\n\n这样可以极大方便浏览 Issue 和讨论列表。“使用 LLT 时出现问题”并不是一个好的标题。\n\n**8. 围绕主题**\n\n不要发表与主题无关或无意义的留言。\n\n**9. 一个 Issue 一个问题**\n\n请不要在一个 Issue 内同时报告多个问题或请求添加多个功能。请为每一个问题、主题或想法新建一个单独的 Issue 或讨论，这会让后期跟进更加容易。\n\n**10. 翻译**\n\n我们使用 [Crowdin](https://crowdin.com/project/llt) 作为软件翻译平台。如果你想为翻译做出贡献，请在那里申请访问项目的权限。\n\n**11. Pull requests**\n\n我们欢迎你提交 PR（当然了）。除非你提交了一个非常简单易懂的 PR，请先创建一个 Issue 并描述你正在解决的问题。为一个会被拒绝的点子花时间并没有什么意义，因为这不符合本项目的愿景。同时请遵循现有的代码风格和项目组织。\n\n<br/>\n\n再次感谢你花时间帮助 LLT 变得更好！\n"
  },
  {
    "path": "InnoDependencies/Arabic.isl",
    "content": "﻿; *** Inno Setup version 6.1.0+ arabic messages ***\n;\n; Translated by nacer baaziz (nacerstile@gmail.com)\n;   http://www.jrsoftware.org/files/istrans/\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n\n[LangOptions]\n; The following three entries are very important. Be sure to read and \n; understand the '[LangOptions] section' topic in the help file.\nLanguageName=arabic\nLanguageID=$0401\nLanguageCodePage=0\nRightToLeft=yes\n; If the language you are translating to requires special font faces or\n; sizes, uncomment any of the following entries and change them accordingly.\n;DialogFontName=\n;DialogFontSize=8\n;WelcomeFontName=Verdana\n;WelcomeFontSize=12\n;TitleFontName=Arial\n;TitleFontSize=29\n;CopyrightFontName=Arial\n;CopyrightFontSize=8\n\n[Messages]\n\n; *** Application titles\nSetupAppTitle=إعداد\nSetupWindowTitle=إعداد - %1\nUninstallAppTitle=إزالة التثبيت\nUninstallAppFullTitle=إزالة تثبيت %1\n\n; *** Misc. common\nInformationTitle=معلومات\nConfirmTitle=تأكيد\nErrorTitle=خطأ\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=هذا المعالج سيقوم بتثبيت %1. هل تريد المتابعة?\nLdrCannotCreateTemp=تعذر إنشاء الملفات المؤقتة, تم فشل معالج التثبيت.\nLdrCannotExecTemp=تعذر تشغيل الملفات من المجلد المؤقت. فشل معالج التثبيت.\nHelpTextNote=\n\n; *** Startup error messages\nLastErrorMessage=%1.%n%n خطأ %2: %3\nSetupFileMissing=الملف %1 مفقود من دليل التثبيت. الرجاء تصحيح المشكلة أو الحصول على نسخة جديدة من البرنامج.\nSetupFileCorrupt=ملفات الإعداد تالفة. الرجاء الحصول على نسخة جديدة من البرنامج.\nSetupFileCorruptOrWrongVer=ملفات الإعداد تالفة أو غير متوافقة مع هذا الإصدار من برنامج الإعداد. الرجاء تصحيح المشكلة أو الحصول على نسخة جديدة من البرنامج.\nInvalidParameter=تم تمرير أوامر غير صالحة على سطر الأوامر : %n%n%1\nSetupAlreadyRunning=برنامج الإعداد قيد التشغيل بالفعل.\nWindowsVersionNotSupported=لا يدعم هذا البرنامج إصدار Windows الذي يعمل به الكمبيوتر.\nWindowsServicePackRequired=هذا البرنامج يتطلب %1 حزمة الخدمة %2 أو أعلى.\nNotOnThisPlatform=لن يتم تشغيل هذا البرنامج على %1.\nOnlyOnThisPlatform=يجب تشغيل هذا البرنامج على %1.\nOnlyOnTheseArchitectures=يمكن تثبيت هذا البرنامج فقط على إصدارات Windows المصممة لهندسة المعالج التالية : %n%n%1\nWinVersionTooLowError=هذا البرنامج يتطلب %1 الإصدار %2 أو أعلى.\nWinVersionTooHighError=لا يمكن تثبيت هذا البرنامج على %1 الإصدار %2 أو أعلى.\nAdminPrivilegesRequired=يجب أن يتم تسجيل دخولك كمسؤول عند تثبيت هذا البرنامج.\nPowerUserPrivilegesRequired=يجب أن يتم تسجيل دخولك كمسؤول أو كعضو في مجموعة Power Users عند تثبيت هذا البرنامج.\nSetupAppRunningError=لقد كشف معالج الإعداد أن  %1 يعمل بالفعل. %n%n يرجى إغلاق كل أجزائه الآن , ثم إضغط حسنا للمتابعة أو إلغاء الأمر للخروج.\nUninstallAppRunningError=كشف معالج إلغاء التثبيت بأن %1 يعمل بالفعل.%n%n يرجى إغلاق كل أجزائه الآن , ثم إضغط حسنا للمتابعة أو إلغاء الأمر للخروج.\n\n; *** Startup questions\nPrivilegesRequiredOverrideTitle=تحديد وضع تثبيت الإعداد\nPrivilegesRequiredOverrideInstruction=تحديد وضع التثبيت\nPrivilegesRequiredOverrideText1=يمكن ل %1 أن يُثَبَّت على جميع المستخدمين (يتطلب إمتيازات المسؤول), أو لك فقط..\nPrivilegesRequiredOverrideText2=.يمكن ل %1  أن يُثَبَّت لك فقط, أو أن يُثَبَّت على جميع المستخدمين (يتطلب إمتيازات المسؤول).\nPrivilegesRequiredOverrideAllUsers=التثبيت ل&كافة المستخدمين\nPrivilegesRequiredOverrideAllUsersRecommended=تثبيت ل&كافة المستخدمين (مستحسن)\nPrivilegesRequiredOverrideCurrentUser=تثبيت لي &فقط\nPrivilegesRequiredOverrideCurrentUserRecommended=تثبيت بالنسبة لي &فقط (مستحسن)\n\n; *** Misc. errors\nErrorCreatingDir=تعذر على برنامج الإعداد إنشاء الدليل \"%1\"\nErrorTooManyFilesInDir=تعذر إنشاء ملف في الدليل  \"%1\" لأنه يحتوي على ملفات كثيرة جداً\n\n; *** Setup common messages\nExitSetupTitle=الخروج من معالج التثبيت\nExitSetupMessage=لم يكتمل الإعداد. إذا قمت بالخروج الآن، لن يتم تثبيت البرنامج.%n%nYou يمكنك تشغيل برنامج الإعداد مرة أخرى في وقت آخر لإكمال التثبيت.%n%n إنهاء الإعداد؟\nAboutSetupMenuItem=&حول الإعداد...\nAboutSetupTitle=حول برنامج الإعداد\nAboutSetupMessage=%1 الإصدار %2%n%3%n%n%1 صفحة الأنترنت:%n%4\nAboutSetupNote=\nTranslatorNote=تم ترجمة المعالج إلى اللغة العربية بواسطة ناصر بعزيز\n\n; *** Buttons\nButtonBack=< ال&سابق\nButtonNext=ال&تالي >\nButtonInstall=&تثبيت\nButtonOK=&حسنا\nButtonCancel=إل&غاء الأمر\nButtonYes=&نعم\nButtonYesToAll=نعم لل&كل\nButtonNo=&لا\nButtonNoToAll=لا &للكل\nButtonFinish=إ&نهاء\nButtonBrowse=اس&تعراض...\nButtonWizardBrowse=اس&تعراض...\nButtonNewFolder=إن&شاء مجلد جديد\n\n; *** \"Select Language\" dialog messages\nSelectLanguageTitle=إختر لغة معالج الإعداد\nSelectLanguageLabel=حدد اللغة التي يجب استخدامها أثناء التثبيت.\n\n; *** Common wizard text\nClickNext=انقر فوق التالي للمتابعة، أو إلغاء الأمر لإنهاء الإعداد.\nBeveledLabel=\nBrowseDialogTitle=تصفح لاختيار مجلد\nBrowseDialogLabel=حدد مجلدًا في القائمة أدناه، ثم انقر فوق حسنا.\nNewFolderName=مجلد جديد\n\n; *** \"Welcome\" wizard page\nWelcomeLabel1=مرحبا بكم في معالج تثبيت [name]\nWelcomeLabel2=هذا المعالج سيقوم بتثبيت  [name/ver] على جهازك. %n%nمن المستحسن أن تقوم بإغلاق كافة التطبيقات الأخرى قبل المتابعة.\n\n; *** \"Password\" wizard page\nWizardPassword=كلمة السر\nPasswordLabel1=هذا التثبيت محمي بكلمة سر.\nPasswordLabel3=الرجاء تقديم كلمة المرور، ثم انقر فوق التالي للمتابعة. كلمات المرور حساسة لحالة الأحرف.\nPasswordEditLabel=&كلمة السر:\nIncorrectPassword=كلمة السر التي أدخلتها غير صحيحة. يرجى إعادة المحاولة.\n\n; *** \"License Agreement\" wizard page\nWizardLicense=اتفاقية الترخيص\nLicenseLabel=يرجى قراءة المعلومات الهامة التالية قبل المتابعة.\nLicenseLabel3=الرجاء قراءة اتفاقية الترخيص التالية. يجب قبول شروط هذه الاتفاقية قبل متابعة التثبيت.\nLicenseAccepted=أنا أواف&ق على هذه الإتفاقية\nLicenseNotAccepted=أنا &لا أوافق على الإتفاقية\n\n; *** \"Information\" wizard pages\nWizardInfoBefore=معلومات\nInfoBeforeLabel=يرجى قراءة المعلومات الهامة التالية قبل المتابعة.\nInfoBeforeClickLabel=عندما تكون جاهزًا للمتابعة مع الإعداد، انقر فوق التالي.\nWizardInfoAfter=معلومات\nInfoAfterLabel=يرجى قراءة المعلومات الهامة التالية قبل المتابعة.\nInfoAfterClickLabel=عندما تكون جاهزًا للمتابعة مع الإعداد، انقر فوق التالي.\n\n; *** \"User Information\" wizard page\nWizardUserInfo=معلومات المستخدم\nUserInfoDesc=يرجى إدخال معلوماتك.\nUserInfoName=إسم ال&مستخدم :\nUserInfoOrg=المن&ظمة:\nUserInfoSerial=&الرقم التسلسلي:\nUserInfoNameRequired=يجب إدخال إسم.\n\n; *** \"Select Destination Location\" wizard page\nWizardSelectDir=تحديد موقع الوِجْهة\nSelectDirDesc=أين يجب تثبيت [name]؟\nSelectDirLabel3=سيقوم معالج التثبيت بتثبيت  [name] في المجلد التالي.\nSelectDirBrowseLabel=للمتابعة، انقر فوق التالي. إذا كنت ترغب في تحديد مجلد آخر، انقر فوق استعراض.\nDiskSpaceGBLabel=تحتاج على الأقل [gb] GB من المساحة لتثبيت البرنامج. \nDiskSpaceMBLabel=تحتاج على الأقل [mb] MB من المساحة لتثبيت البرنامج.\nCannotInstallToNetworkDrive=يتعذر على برنامج الإعداد التثبيت على محرك أقراص شبكة اتصال.\nCannotInstallToUNCPath=يتعذر على برنامج الإعداد تثبيت مسار UNC.\nInvalidPath=يجب إدخال مسار كامل مع حرف محرك الأقراص; على سبيل المثال: %n%nC:\\APP%n%أو مسار UNC في النموذج:%n%n\\\\server\\share\nInvalidDrive=محرك الأقراص أو مشاركة UNC التي حددتها غير موجود أو غير قابل للوصول. الرجاء تحديد آخر.\nDiskSpaceWarningTitle=مساحة القرص غير كافية\nDiskSpaceWarning=Sيتطلب الإعداد على الأقل %1 KB من المساحة الفارغة للتثبيت، ولكن محرك الأقراص المحدد فيه فقط %2 KB متوفرة.%n%nهل تريد المتابعة على أية حال؟\nDirNameTooLong=اسم المجلد أو المسار طويل جداً.\nInvalidDirName=اسم المجلد غير صالح.\nBadDirName32=لا يمكن لأسماء المجلدات تضمين أي من الأحرف التالية:%n%n%1\nDirExistsTitle=المجلد موجود بالفعل\nDirExists=المجلد:%n%n%1%n%n موجود بالفعل. هل ترغب في التثبيت على هذا المجلد على أي حال؟\nDirDoesntExistTitle=المجلد غير موجود\nDirDoesntExist=المجلد:%n%n%1%n%nغير موجود. هل تريد إنشاء المجلد؟\n\n; *** \"Select Components\" wizard page\nWizardSelectComponents=تحديد المكونات\nSelectComponentsDesc=ما هي المكونات التي يجب تثبيتها؟\nSelectComponentsLabel2=حدد المكونات التي تريد تثبيتها ؛ امسح المكونات التي لا تريد تثبيتها. انقر فوق \"التالي\" عندما تكون مستعدًا للمتابعة.\nFullInstallation=تثبيت كامل\n; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)\nCompactInstallation=تثبيت مدمج\nCustomInstallation=تثبيت مخصص\nNoUninstallWarningTitle=مكونات موجودة\nNoUninstallWarning=اكتشف برنامج الإعداد أن المكونات التالية مثبتة بالفعل على جهاز الكمبيوتر الخاص بك: %n%n%1%n%nلن يؤدي إلغاء تحديد هذه المكونات إلى إزالة تثبيتها.%n%nهل ترغب في الاستمرار على أي حال?\nComponentSize1=%1 KB\nComponentSize2=%1 MB\nComponentsDiskSpaceGBLabel=الاختيار الحالي يتطلب على الأقل [gb] GB من مساحة القرص.\nComponentsDiskSpaceMBLabel=الاختيار الحالي يتطلب على الأقل [mb] MB من مساحة القرص.\n\n; *** \"Select Additional Tasks\" wizard page\nWizardSelectTasks=حدد المهام الإضافية\nSelectTasksDesc=ما المهام الإضافية التي ينبغي تنفيذها؟\nSelectTasksLabel2=حدد المهام الإضافية التي ترغب في أن يقوم الإعداد بتنفيذها أثناء تثبيت [name], ثم إضغط التالي.\n\n; *** \"Select Start Menu Folder\" wizard page\nWizardSelectProgramGroup=حدد مجلد قائمة ابدأ\nSelectStartMenuFolderDesc=أين يجب أن يضع الإعداد اختصارات البرنامج؟\nSelectStartMenuFolderLabel3=سيقوم برنامج الإعداد بإنشاء اختصارات البرنامج في مجلد قائمة ابدأ التالية.\nSelectStartMenuFolderBrowseLabel=للمتابعة، انقر فوق التالي. إذا كنت ترغب في تحديد مجلد آخر، انقر فوق استعراض.\nMustEnterGroupName=يجب إدخال اسم مجلد.\nGroupNameTooLong=اسم المجلد أو المسار طويل جداً.\nInvalidGroupName=اسم المجلد غير صالح.\nBadGroupName=لا يمكن أن يتضمن اسم المجلد أي من الأحرف التالية:%n%n%1\nNoProgramGroupCheck2=&عدم إنشاء مجلد قائمة ابدأ\n\n; *** \"Ready to Install\" wizard page\nWizardReady=جاهز للتثبيت\nReadyLabel1=الإعداد جاهز الآن لبدء تثبيت [name] على جهازك.\nReadyLabel2a=انقر فوق تثبيت لمتابعة التثبيت، أو انقر فوق \"السابق\" إذا كنت ترغب في مراجعة أو تغيير أية إعدادات.\nReadyLabel2b=انقر فوق تثبيت لمتابعة التثبيت.\nReadyMemoUserInfo=معلومات المستخدم:\nReadyMemoDir=مسار الوِجْهة:\nReadyMemoType=نوع الإعداد:\nReadyMemoComponents=المكونات المحددة:\nReadyMemoGroup=مجلد قائمة ابدأ:\nReadyMemoTasks=مهام إضافية:\n\n; *** TDownloadWizardPage wizard page and DownloadTemporaryFile\nDownloadingLabel=تحميل الملفات الإضافية...\nButtonStopDownload=إي&قاف التحميل\nStopDownload=هل أنت متأكد من أنك ترغب في إيقاف التحميل؟\nErrorDownloadAborted=تم إلغاء التحميل\nErrorDownloadFailed=فشل التحميل: %1 %2\nErrorDownloadSizeFailed=خطأ في قراءة الحجم: %1 %2\nErrorFileHash1=خطأ في قراءة الهاش الخاص بالملف: %1\nErrorFileHash2=خطأ في هاش الملف: كان من المتوقع أن يكن : %1, بينما تم إيجاد : %2\nErrorProgress=خطأ في الحصول على نسبة التقدم: %1 من %2\nErrorFileSize=خطأ في حجم الملف: المتوقع هو : %1, الحجم الذي وجدناه هو : %2\n\n; *** \"Preparing to Install\" wizard page\nWizardPreparing=التحضير للتثبيت\nPreparingDesc=الإعداد يستعد لتثبيت [name] على جهازك.\nPreviousInstallNotCompleted=لم يكتمل التثبيت / إزالة البرنامج السابق. ستحتاج إلى إعادة تشغيل الكمبيوتر لإكمال هذا التثبيت.%n%nبعد إعادة تشغيل جهاز الكمبيوتر الخاص بك ، شغّل برنامج الإعداد مرة أخرى لإكمال تثبيت [name].\nCannotContinue=لا يمكن لبرنامج الإعداد المتابعة. يرجى النقر فوق \"إلغاء\" للخروج.\nApplicationsFound=تستخدم التطبيقات التالية الملفات التي تحتاج إلى تحديث بواسطة برنامج الإعداد. يوصى بالسماح لبرنامج الإعداد بإغلاق هذه التطبيقات تلقائيًا.\nApplicationsFound2=تستخدم التطبيقات التالية الملفات التي تحتاج إلى تحديث بواسطة برنامج الإعداد. يوصى بالسماح لبرنامج الإعداد بإغلاق هذه التطبيقات تلقائيًا. بعد اكتمال التثبيت ، سيحاول برنامج الإعداد إعادة تشغيل التطبيقات.\nCloseApplications=أغلق التطبيقات &تلقائيًا\nDontCloseApplications=&لا تغلق التطبيقات\nErrorCloseApplications=لم يتمكن الإعداد من إغلاق جميع التطبيقات تلقائيًا. يوصى بإغلاق جميع التطبيقات التي تستخدم الملفات التي تحتاج إلى تحديث بواسطة برنامج الإعداد قبل المتابعة.\nPrepareToInstallNeedsRestart=برنامج الإعداد يجب أن يقوم بإعادة تشغيل الجهاز. بعد إعادة تشغيل جهازك, قم بتشغيل برنامج الإعداد مرة أخرى لإكمال تثبيت [name].%n%nهل تحب إعادة التشغيل الآن?\n\n; *** \"Installing\" wizard page\nWizardInstalling=جاري التثبيت\nInstallingLabel=يرجى الانتظار حتى يقوم برنامج الإعداد بتثبي [name] على جهازك.\n\n; *** \"Setup Completed\" wizard page\nFinishedHeadingLabel=إنهاء معالج تثبيت [name]\nFinishedLabelNoIcons=إكتمل معالج التثبيت من تثبيت [name] على جهازك.\nFinishedLabel=اكتمل معالج التثبيت من تثبيت [name] على جهازك. قد يتم تشغيل التطبيق عن طريق تحديد الاختصارات المثبتة.\nClickFinish=إضغط إنهاء للخروج من معالج التثبيت\nFinishedRestartLabel=لاستكمال تثبيت [name], يجب على برنامج الإعداد إعادة تشغيل جهاز الكمبيوتر الخاص بك. هل ترغب في إعادة التشغيل الآن؟\nFinishedRestartMessage=لاستكمال تثبيت [name], يجب على برنامج الإعداد إعادة تشغيل جهاز الكمبيوتر الخاص بك.%n%nهل ترغب في إعادة التشغيل الآن؟\nShowReadmeCheck=نعم ، أرغب عرض ملف README\nYesRadio=&نعم أعد تشغيل الكومبيوتر الان\nNoRadio=&لا ، سأعيد تشغيل الكمبيوتر لاحقًا\n; used for example as 'Run MyProg.exe'\nRunEntryExec=تشغيل %1\n; used for example as 'View Readme.txt'\nRunEntryShellExec=عرض %1\n\n; *** \"Setup Needs the Next Disk\" stuff\nChangeDiskTitle=يحتاج برنامج الإعداد إلى القرص التالي\nSelectDiskLabel2=الرجاء إدراج القرص %1 وانقر فوق حسنا.%n%nإذا كان يمكن العثور على الملفات الموجودة على هذا القرص في مجلد غير الذي يظهر أدناه، أدخل المسار الصحيح أو انقر فوق استعراض.\nPathLabel=&مسار :\nFileNotInDir2=لم نتمكن من العثور على الملف \"%1\" في \"%2\". الرجاء إدراج القرص الصحيح أو تحديد مجلد آخر.\nSelectDirectoryLabel=الرجاء تحديد موقع القرص التالي.\n\n; *** Installation phase messages\nSetupAborted=لم يتم إكمال الإعداد. %n%nالرجاء تصحيح المشكلة وتشغيل الإعداد مرة أخرى.\nAbortRetryIgnoreSelectAction=حدد إجراء\nAbortRetryIgnoreRetry=أ&عد مجددا\nAbortRetryIgnoreIgnore=&تجاهل الخطأ والمتابعة\nAbortRetryIgnoreCancel=إلغاء التثبيت\n\n; *** Installation status messages\nStatusClosingApplications=إغلاق التطبيقات...\nStatusCreateDirs=إنشاء المجلدات...\nStatusExtractFiles=استخراج الملفات...\nStatusCreateIcons=إنشاء الإختصارات...\nStatusCreateIniEntries=إنشاء مدخلات INI...\nStatusCreateRegistryEntries=إنشاء مفاتيح السجل...\nStatusRegisterFiles=تسجيل الملفات...\nStatusSavingUninstall=تسجيل معلومات إزالة التثبيت...\nStatusRunProgram=الإنتهاء من التثبيت...\nStatusRestartingApplications=إعادة تشغيل التطبيقات...\nStatusRollback=التراجع عن التغييرات...\n\n; *** Misc. errors\nErrorInternal2=خطأ داخلي: %1\nErrorFunctionFailedNoCode=فشل %1\nErrorFunctionFailed=فشل %1; رقم الخطء %2\nErrorFunctionFailedWithMessage=فشل %1; رقم الخطء %2.%n%3\nErrorExecutingProgram=الإعداد غير قابل على تشغيل الملف:%n%1\n\n; *** Registry errors\nErrorRegOpenKey=خطأ في فتح مفتاح التسجيل:%n%1\\%2\nErrorRegCreateKey=خطأ في إنشاء مفتاح التسجيل:%n%1\\%2\nErrorRegWriteKey=خطأ في الكتابة على مفتاح التسجيل:%n%1\\%2\n\n; *** INI errors\nErrorIniEntry=حدث خطأ في إنشاء إدخال INI في الملف \"%1\".\n\n; *** File copying errors\nFileAbortRetryIgnoreSkipNotRecommended=&تخطي هذا الملف (غير مستحسن)\nFileAbortRetryIgnoreIgnoreNotRecommended=&تجاهل الخطأ والمتابعة (غير مستحسن)\nSourceIsCorrupted=الملف المصدر تالف\nSourceDoesntExist=الملف \"%1\"غير موجود\nExistingFileReadOnly2=تعذر استبدال الملف الموجود لأنه تم وضع علامة للقراءة فقط.\nExistingFileReadOnlyRetry=&أزل القراءة فقط عن الملفات ثم حاول مرة أخرى\nExistingFileReadOnlyKeepExisting=&إحتفظ بالملفات الموجودة\nErrorReadingExistingDest=حدث خطأ أثناء محاولة قراءة الملف الموجود:\nFileExistsSelectAction=اختر إجراء\nFileExists2=الملف موجود بالفعل.\nFileExistsOverwriteExisting=&استبدال الملف الموجود\nFileExistsKeepExisting=ا&بقاء الملف الموجود\nFileExistsOverwriteOrKeepAll=ا&فعل هذا للنزاعات القادمة\nExistingFileNewerSelectAction=اختر إجراء\nExistingFileNewer2=الملف الموجود أحدث من الملف الذي سيقوم معالج الإعداد بتثبيته.\nExistingFileNewerOverwriteExisting=&&استبدال الملف الموجود\nExistingFileNewerKeepExisting=ال&ابقاء على الملف الموجود (مستحسن)\nExistingFileNewerOverwriteOrKeepAll=ا&فعل هذا مع النزاعات القادمة\nErrorChangingAttr=حدث خطأ أثناء محاولة تغيير سمات الملف الموجود:\nErrorCreatingTemp=حدث خطأ أثناء محاولة إنشاء ملف في الدليل الوجهة:\nErrorReadingSource=حدث خطأ أثناء محاولة قراءة ملف مصدر:\nErrorCopying=حدث خطأ أثناء محاولة نسخ ملف:\nErrorReplacingExistingFile=حدث خطأ أثناء محاولة استبدال الملف الموجود:\nErrorRestartReplace=فشل إعادة تشغيل \"استبدال\":\nErrorRenamingTemp=حدث خطأ أثناء محاولة إعادة تسمية ملف في الدليل الوجهة:\nErrorRegisterServer=تعذر تسجيل ملفات DLL/OCX: %1\nErrorRegSvr32Failed=فشل RegSvr32 مع رمز الخروج %1\nErrorRegisterTypeLib=الإعداد غير قادر على تسجيل مكتبة النوع: %1\n\n; *** Uninstall display name markings\n; used for example as 'My Program (32-bit)'\nUninstallDisplayNameMark=%1 (%2)\n; used for example as 'My Program (32-bit, All users)'\nUninstallDisplayNameMarks=%1 (%2, %3)\nUninstallDisplayNameMark32Bit=32-bit\nUninstallDisplayNameMark64Bit=64-bit\nUninstallDisplayNameMarkAllUsers=كافة المستخدمين\nUninstallDisplayNameMarkCurrentUser=المستخدم الحالي\n\n; *** Post-installation errors\nErrorOpeningReadme=حدث خطأ أثناء محاولة فتح ملف إقرأني.\nErrorRestartingComputer=لم يتمكن برنامج الإعداد من إعادة تشغيل الكمبيوتر. الرجاء القيام بذلك يدوياً.\n\n; *** Uninstaller messages\nUninstallNotFound=الملف \"%1\" غير موجود. لا يمكن إزالة التثبيت.\nUninstallOpenError=تعذر فتح \"%1\". لا يمكن إزالة التثبيت.\nUninstallUnsupportedVer=ملف سجل الإزالة \"%1\" في تنسيق غير معروف من قبل هذا الإصدار من برنامج إلغاء التثبيت. لا يمكن إزالة التثبيت\nUninstallUnknownEntry=إدخال غير معروف (%1) تمت مصادفة في سجل إلغاء التثبيت\nConfirmUninstall=هل أنت متأكد من أنك تريد إزالة %1 تماما, وجميع مكوناته?\nUninstallOnlyOnWin64=يمكن إلغاء تثبيت هذا التثبيت على Windows 64-بت فقط.\nOnlyAdminCanUninstall=يمكن إلغاء تثبيت هذا التثبيت فقط من قبل مستخدم له امتيازات إدارية.\nUninstallStatusLabel=يرجى الإنتظار ريت ما يتم إزالة تثبيت %1 من جهازك.\nUninstalledAll=تم إزالة %1 تماما من جهازك بنجاح.\nUninstalledMost=اكتمل إزالة %1.%n%nتعذر إزالة بعض العناصر. يمكن إزالة هذه يدوياً.\nUninstalledAndNeedsRestart=لإكمال إلغاء تثبيت %1, يجب إعادة تشغيل الكمبيوتر.%n%nهل تريد إعادة تشغيل الآن؟\nUninstallDataCorrupted=الملف \"%1\" تالف. لا يمكن إزالة التثبيت\n\n; *** Uninstallation phase messages\nConfirmDeleteSharedFileTitle=إزالة ملف مشترك؟\nConfirmDeleteSharedFile2=يشير النظام إلى أن الملف المشترك التالي لم يعد في الاستخدام من قبل أي برامج. هل ترغب في أن يقوم إلغاء التثبيت بإزالة هذا الملف المشترك?%n%nإذا كانت أية برامج لا تزال تستخدم هذا الملف وتتم إزالته، قد لا تعمل هذه البرامج بشكل صحيح. إذا كنت غير متأكد، اختر لا. ترك الملف على النظام الخاص بك لن يسبب أي ضرر.\nSharedFileNameLabel=اسم الملف:\nSharedFileLocationLabel=الموقع :\nWizardUninstalling=حالة إزالة التثبيت\nStatusUninstalling=جاري إزالة تثبيت %1...\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=جاري تثبيت %1.\nShutdownBlockReasonUninstallingApp=جاري تثبيت %1.\n\n; The custom messages below aren't used by Setup itself, but if you make\n; use of them in your scripts, you'll want to translate them.\n\n[CustomMessages]\n\nNameAndVersion=%1 الإصدار %2\nAdditionalIcons=اختصارات إضافية:\nCreateDesktopIcon=إنشاء اختصار في &سطح المكتب\nCreateQuickLaunchIcon=إنشاء اختصار \"الت&شغيل السريع\"\nProgramOnTheWeb=%1 على الأنترنت\nUninstallProgram=إزالة تثبيت %1\nLaunchProgram=تشغيل %1\nAssocFileExtension=اربط %1 مع صيغة ملف %2\nAssocingFileExtension=جاري ربط %1 مع صيغة ملف %2\nAutoStartProgramGroupDescription=بدأ التشغيل:\nAutoStartProgram=تشغيل %1 تلقائيا\nAddonHostProgramNotFound= تعذر العثور على %1 في الموقع الذي إخترته.%n%nهل تريد المتابعة على أية حال؟\n"
  },
  {
    "path": "InnoDependencies/ChineseSimplified.isl",
    "content": "﻿; *** Inno Setup version 6.1.0+ Chinese Simplified messages ***\n;\n; To download user-contributed translations of this file, go to:\n;   https://jrsoftware.org/files/istrans/\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n;\n; Maintained by Zhenghan Yang\n; Email: 847320916@QQ.com\n; Translation based on network resource\n; The latest Translation is on https://github.com/kira-96/Inno-Setup-Chinese-Simplified-Translation\n;\n\n[LangOptions]\n; The following three entries are very important. Be sure to read and \n; understand the '[LangOptions] section' topic in the help file.\nLanguageName=简体中文\n; If Language Name display incorrect, uncomment next line\n; LanguageName=<7B80><4F53><4E2D><6587>\n; About LanguageID, to reference link:\n; https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/a9eac961-e77d-41a6-90a5-ce1a8b0cdb9c\nLanguageID=$0804\nLanguageCodePage=936\n; If the language you are translating to requires special font faces or\n; sizes, uncomment any of the following entries and change them accordingly.\n;DialogFontName=\n;DialogFontSize=8\n;WelcomeFontName=Verdana\n;WelcomeFontSize=12\n;TitleFontName=Arial\n;TitleFontSize=29\n;CopyrightFontName=Arial\n;CopyrightFontSize=8\n\n[Messages]\n\n; *** 应用程序标题\nSetupAppTitle=安装\nSetupWindowTitle=安装 - %1\nUninstallAppTitle=卸载\nUninstallAppFullTitle=%1 卸载\n\n; *** Misc. common\nInformationTitle=信息\nConfirmTitle=确认\nErrorTitle=错误\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=现在将安装 %1。您想要继续吗？\nLdrCannotCreateTemp=不能创建临时文件。安装中断。\nLdrCannotExecTemp=不能执行临时目录中的文件。安装中断。\nHelpTextNote=\n\n; *** 启动错误消息\nLastErrorMessage=%1.%n%n错误 %2: %3\nSetupFileMissing=安装目录中的文件 %1 丢失。请修正这个问题或者获取程序的新副本。\nSetupFileCorrupt=安装文件已损坏。请获取程序的新副本。\nSetupFileCorruptOrWrongVer=安装文件已损坏，或是与这个安装程序的版本不兼容。请修正这个问题或获取新的程序副本。\nInvalidParameter=无效的命令行参数：%n%n%1\nSetupAlreadyRunning=安装程序正在运行。\nWindowsVersionNotSupported=这个程序不支持当前计算机运行的Windows版本。\nWindowsServicePackRequired=这个程序需要 %1 服务包 %2 或更高。\nNotOnThisPlatform=这个程序将不能运行于 %1。\nOnlyOnThisPlatform=这个程序必须运行于 %1。\nOnlyOnTheseArchitectures=这个程序只能在为下列处理器结构设计的Windows版本中进行安装：%n%n%1\nWinVersionTooLowError=这个程序需要 %1 版本 %2 或更高。\nWinVersionTooHighError=这个程序不能安装于 %1 版本 %2 或更高。\nAdminPrivilegesRequired=在安装这个程序时您必须以管理员身份登录。\nPowerUserPrivilegesRequired=在安装这个程序时您必须以管理员身份或有权限的用户组身份登录。\nSetupAppRunningError=安装程序发现 %1 当前正在运行。%n%n请先关闭所有运行的窗口，然后点击“确定”继续，或按“取消”退出。\nUninstallAppRunningError=卸载程序发现 %1 当前正在运行。%n%n请先关闭所有运行的窗口，然后点击“确定”继续，或按“取消”退出。\n\n; *** 启动问题\nPrivilegesRequiredOverrideTitle=选择安装程序模式\nPrivilegesRequiredOverrideInstruction=选择安装模式\nPrivilegesRequiredOverrideText1=%1 可以为所有用户安装(需要管理员权限)，或仅为您安装。\nPrivilegesRequiredOverrideText2=%1 只能为您安装，或为所有用户安装(需要管理员权限)。\nPrivilegesRequiredOverrideAllUsers=为所有用户安装(&A)\nPrivilegesRequiredOverrideAllUsersRecommended=为所有用户安装(&A) (建议选项)\nPrivilegesRequiredOverrideCurrentUser=只为我安装(&M)\nPrivilegesRequiredOverrideCurrentUserRecommended=只为我安装(&M) (建议选项)\n\n; *** 其它错误\nErrorCreatingDir=安装程序不能创建目录“%1”。\nErrorTooManyFilesInDir=不能在目录“%1”中创建文件，因为里面的文件太多\n\n; *** 安装程序公共消息\nExitSetupTitle=退出安装程序\nExitSetupMessage=安装程序还未完成安装。如果您现在退出，程序将不能安装。%n%n您可以以后再运行安装程序完成安装。%n%n现在退出安装程序吗？\nAboutSetupMenuItem=关于安装程序(&A)...\nAboutSetupTitle=关于安装程序\nAboutSetupMessage=%1 版本 %2%n%3%n%n%1 主页：%n%4\nAboutSetupNote=\nTranslatorNote=\n\n; *** 按钮\nButtonBack=< 上一步(&B)\nButtonNext=下一步(&N) >\nButtonInstall=安装(&I)\nButtonOK=确定\nButtonCancel=取消\nButtonYes=是(&Y)\nButtonYesToAll=全是(&A)\nButtonNo=否(&N)\nButtonNoToAll=全否(&O)\nButtonFinish=完成(&F)\nButtonBrowse=浏览(&B)...\nButtonWizardBrowse=浏览(&R)...\nButtonNewFolder=新建文件夹(&M)\n\n; *** “选择语言”对话框消息\nSelectLanguageTitle=选择安装语言\nSelectLanguageLabel=选择安装时要使用的语言。\n\n; *** 公共向导文字\nClickNext=点击“下一步”继续，或点击“取消”退出安装程序。\nBeveledLabel=\nBrowseDialogTitle=浏览文件夹\nBrowseDialogLabel=在下列列表中选择一个文件夹，然后点击“确定”。\nNewFolderName=新建文件夹\n\n; *** “欢迎”向导页\nWelcomeLabel1=欢迎使用 [name] 安装向导\nWelcomeLabel2=现在将安装 [name/ver] 到您的电脑中。%n%n推荐您在继续安装前关闭所有其它应用程序。\n\n; *** “密码”向导页\nWizardPassword=密码\nPasswordLabel1=这个安装程序有密码保护。\nPasswordLabel3=请输入密码，然后点击“下一步”继续。密码区分大小写。\nPasswordEditLabel=密码(&P)：\nIncorrectPassword=您所输入的密码不正确，请重试。\n\n; *** “许可协议”向导页\nWizardLicense=许可协议\nLicenseLabel=继续安装前请阅读下列重要信息。\nLicenseLabel3=请仔细阅读下列许可协议。您在继续安装前必须同意这些协议条款。\nLicenseAccepted=我同意此协议(&A)\nLicenseNotAccepted=我不同意此协议(&D)\n\n; *** “信息”向导页\nWizardInfoBefore=信息\nInfoBeforeLabel=请在继续安装前阅读下列重要信息。\nInfoBeforeClickLabel=如果您想继续安装，点击“下一步”。\nWizardInfoAfter=信息\nInfoAfterLabel=请在继续安装前阅读下列重要信息。\nInfoAfterClickLabel=如果您想继续安装，点击“下一步”。\n\n; *** “用户信息”向导页\nWizardUserInfo=用户信息\nUserInfoDesc=请输入您的信息。\nUserInfoName=用户名(&U)：\nUserInfoOrg=组织(&O)：\nUserInfoSerial=序列号(&S)：\nUserInfoNameRequired=您必须输入用户名。\n\n; *** “选择目标目录”向导页\nWizardSelectDir=选择目标位置\nSelectDirDesc=您想将 [name] 安装在哪里？\nSelectDirLabel3=安装程序将安装 [name] 到下列文件夹中。\nSelectDirBrowseLabel=点击“下一步”继续。如果您想选择其它文件夹，点击“浏览”。\nDiskSpaceGBLabel=至少需要有 [gb] GB 的可用磁盘空间。\nDiskSpaceMBLabel=至少需要有 [mb] MB 的可用磁盘空间。\nCannotInstallToNetworkDrive=安装程序无法安装到一个网络驱动器。\nCannotInstallToUNCPath=安装程序无法安装到一个UNC路径。\nInvalidPath=您必须输入一个带驱动器卷标的完整路径，例如：%n%nC:\\APP%n%n或下列形式的UNC路径：%n%n\\\\server\\share\nInvalidDrive=您选定的驱动器或 UNC 共享不存在或不能访问。请选选择其它位置。\nDiskSpaceWarningTitle=没有足够的磁盘空间\nDiskSpaceWarning=安装程序至少需要 %1 KB 的可用空间才能安装，但选定驱动器只有 %2 KB 的可用空间。%n%n您一定要继续吗？\nDirNameTooLong=文件夹名称或路径太长。\nInvalidDirName=文件夹名称无效。\nBadDirName32=文件夹名称不能包含下列任何字符：%n%n%1\nDirExistsTitle=文件夹已存在\nDirExists=文件夹：%n%n%1%n%n已经存在。您一定要安装到这个文件夹中吗？\nDirDoesntExistTitle=文件夹不存在\nDirDoesntExist=文件夹：%n%n%1%n%n不存在。您想要创建此文件夹吗？\n\n; *** “选择组件”向导页\nWizardSelectComponents=选择组件\nSelectComponentsDesc=您想安装哪些程序的组件？\nSelectComponentsLabel2=选择您想要安装的组件；清除您不想安装的组件。然后点击“下一步”继续。\nFullInstallation=完全安装\n; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)\nCompactInstallation=简洁安装\nCustomInstallation=自定义安装\nNoUninstallWarningTitle=组件已存在\nNoUninstallWarning=安装程序检测到下列组件已在您的电脑中安装：%n%n%1%n%n取消选定这些组件将不能卸载它们。%n%n您一定要继续吗？\nComponentSize1=%1 KB\nComponentSize2=%1 MB\nComponentsDiskSpaceGBLabel=当前选择的组件至少需要 [gb] GB 的磁盘空间。\nComponentsDiskSpaceMBLabel=当前选择的组件至少需要 [mb] MB 的磁盘空间。\n\n; *** “选择附加任务”向导页\nWizardSelectTasks=选择附加任务\nSelectTasksDesc=您想要安装程序执行哪些附加任务？\nSelectTasksLabel2=选择您想要安装程序在安装 [name] 时执行的附加任务，然后点击“下一步”。\n\n; *** “选择开始菜单文件夹”向导页\nWizardSelectProgramGroup=选择开始菜单文件夹\nSelectStartMenuFolderDesc=安装程序应该在哪里放置程序的快捷方式？\nSelectStartMenuFolderLabel3=安装程序现在将在下列开始菜单文件夹中创建程序的快捷方式。\nSelectStartMenuFolderBrowseLabel=点击“下一步”继续。如果您想选择其它文件夹，点击“浏览”。\nMustEnterGroupName=您必须输入一个文件夹名。\nGroupNameTooLong=文件夹名或路径太长。\nInvalidGroupName=文件夹名是无效的。\nBadGroupName=文件夹名不能包含下列任何字符：%n%n%1\nNoProgramGroupCheck2=不创建开始菜单文件夹(&D)\n\n; *** “准备安装”向导页\nWizardReady=准备安装\nReadyLabel1=安装程序现在准备开始安装 [name] 到您的电脑中。\nReadyLabel2a=点击“安装”继续此安装程序。如果您想要回顾或修改设置，请点击“上一步”。\nReadyLabel2b=点击“安装”继续此安装程序？\nReadyMemoUserInfo=用户信息：\nReadyMemoDir=目标位置：\nReadyMemoType=安装类型：\nReadyMemoComponents=选定组件：\nReadyMemoGroup=开始菜单文件夹：\nReadyMemoTasks=附加任务：\n\n; *** TDownloadWizardPage wizard page and DownloadTemporaryFile\nDownloadingLabel=正在下载附加文件...\nButtonStopDownload=停止下载(&S)\nStopDownload=您确定要停止下载吗？\nErrorDownloadAborted=下载已中止\nErrorDownloadFailed=下载失败：%1 %2\nErrorDownloadSizeFailed=获取下载大小失败：%1 %2\nErrorFileHash1=校验文件哈希失败：%1\nErrorFileHash2=无效的文件哈希：预期 %1，实际 %2\nErrorProgress=无效的进度：%1，总共%2\nErrorFileSize=文件大小错误：预期 %1，实际 %2\n\n; *** “正在准备安装”向导页\nWizardPreparing=正在准备安装\nPreparingDesc=安装程序正在准备安装 [name] 到您的电脑中。\nPreviousInstallNotCompleted=先前程序的安装/卸载未完成。您需要重新启动您的电脑才能完成安装。%n%n在重新启动电脑后，再运行安装完成 [name] 的安装。\nCannotContinue=安装程序不能继续。请点击“取消”退出。\nApplicationsFound=下列应用程序正在使用的文件需要更新设置。它是建议您允许安装程序自动关闭这些应用程序。\nApplicationsFound2=下列应用程序正在使用的文件需要更新设置。它是建议您允许安装程序自动关闭这些应用程序。安装完成后，安装程序将尝试重新启动应用程序。\nCloseApplications=自动关闭该应用程序(&A)\nDontCloseApplications=不要关闭该应用程序(&D)\nErrorCloseApplications=安装程序无法自动关闭所有应用程序。在继续之前，我们建议您关闭所有使用需要更新的安装程序文件。\nPrepareToInstallNeedsRestart=安装程序必须重新启动计算机。重新启动计算机后，请再次运行安装程序以完成 [name] 的安装。%n%n是否立即重新启动？\n\n; *** “正在安装”向导页\nWizardInstalling=正在安装\nInstallingLabel=安装程序正在安装 [name] 到您的电脑中，请稍等。\n\n; *** “安装完成”向导页\nFinishedHeadingLabel=[name] 安装完成\nFinishedLabelNoIcons=安装程序已在您的电脑中安装了 [name]。\nFinishedLabel=安装程序已在您的电脑中安装了 [name]。此应用程序可以通过选择安装的快捷方式运行。\nClickFinish=点击“完成”退出安装程序。\nFinishedRestartLabel=要完成 [name] 的安装，安装程序必须重新启动您的电脑。您想要立即重新启动吗？\nFinishedRestartMessage=要完成 [name] 的安装，安装程序必须重新启动您的电脑。%n%n您想要立即重新启动吗？\nShowReadmeCheck=是，我想查阅自述文件\nYesRadio=是，立即重新启动电脑(&Y)\nNoRadio=否，稍后重新启动电脑(&N)\n; used for example as 'Run MyProg.exe'\nRunEntryExec=运行 %1\n; used for example as 'View Readme.txt'\nRunEntryShellExec=查阅 %1\n\n; *** “安装程序需要下一张磁盘”提示\nChangeDiskTitle=安装程序需要下一张磁盘\nSelectDiskLabel2=请插入磁盘 %1 并点击“确定”。%n%n如果这个磁盘中的文件可以在下列文件夹之外的文件夹中找到，请输入正确的路径或点击“浏览”。\nPathLabel=路径(&P)：\nFileNotInDir2=文件“%1”不能在“%2”定位。请插入正确的磁盘或选择其它文件夹。\nSelectDirectoryLabel=请指定下一张磁盘的位置。\n\n; *** 安装状态消息\nSetupAborted=安装程序未完成安装。%n%n请修正这个问题并重新运行安装程序。\nAbortRetryIgnoreSelectAction=选择操作\nAbortRetryIgnoreRetry=重试(&T)\nAbortRetryIgnoreIgnore=忽略错误并继续(&I)\nAbortRetryIgnoreCancel=关闭安装程序\n\n; *** 安装状态消息\nStatusClosingApplications=正在关闭应用程序...\nStatusCreateDirs=正在创建目录...\nStatusExtractFiles=正在解压缩文件...\nStatusCreateIcons=正在创建快捷方式...\nStatusCreateIniEntries=正在创建 INI 条目...\nStatusCreateRegistryEntries=正在创建注册表条目...\nStatusRegisterFiles=正在注册文件...\nStatusSavingUninstall=正在保存卸载信息...\nStatusRunProgram=正在完成安装...\nStatusRestartingApplications=正在重启应用程序...\nStatusRollback=正在撤销更改...\n\n; *** 其它错误\nErrorInternal2=内部错误：%1\nErrorFunctionFailedNoCode=%1 失败\nErrorFunctionFailed=%1 失败；错误代码 %2\nErrorFunctionFailedWithMessage=%1 失败；错误代码 %2.%n%3\nErrorExecutingProgram=不能执行文件：%n%1\n\n; *** 注册表错误\nErrorRegOpenKey=打开注册表项时出错：%n%1\\%2\nErrorRegCreateKey=创建注册表项时出错：%n%1\\%2\nErrorRegWriteKey=写入注册表项时出错：%n%1\\%2\n\n; *** INI 错误\nErrorIniEntry=在文件“%1”中创建INI条目时出错。\n\n; *** 文件复制错误\nFileAbortRetryIgnoreSkipNotRecommended=跳过这个文件(&S) (不推荐)\nFileAbortRetryIgnoreIgnoreNotRecommended=忽略错误并继续(&I) (不推荐)\nSourceIsCorrupted=源文件已损坏\nSourceDoesntExist=源文件“%1”不存在\nExistingFileReadOnly2=无法替换现有文件，因为它是只读的。\nExistingFileReadOnlyRetry=移除只读属性并重试(&R)\nExistingFileReadOnlyKeepExisting=保留现有文件(&K)\nErrorReadingExistingDest=尝试读取现有文件时出错：\nFileExistsSelectAction=选择操作\nFileExists2=文件已经存在。\nFileExistsOverwriteExisting=覆盖已经存在的文件(&O)\nFileExistsKeepExisting=保留现有的文件(&K)\nFileExistsOverwriteOrKeepAll=为所有的冲突文件执行此操作(&D)\nExistingFileNewerSelectAction=选择操作\nExistingFileNewer2=现有的文件比安装程序将要安装的文件更新。\nExistingFileNewerOverwriteExisting=覆盖已经存在的文件(&O)\nExistingFileNewerKeepExisting=保留现有的文件(&K) (推荐)\nExistingFileNewerOverwriteOrKeepAll=为所有的冲突文件执行此操作(&D)\nErrorChangingAttr=尝试改变下列现有的文件的属性时出错：\nErrorCreatingTemp=尝试在目标目录创建文件时出错：\nErrorReadingSource=尝试读取下列源文件时出错：\nErrorCopying=尝试复制下列文件时出错：\nErrorReplacingExistingFile=尝试替换现有的文件时出错：\nErrorRestartReplace=重新启动替换失败：\nErrorRenamingTemp=尝试重新命名以下目标目录中的一个文件时出错：\nErrorRegisterServer=无法注册 DLL/OCX：%1\nErrorRegSvr32Failed=RegSvr32 失败；退出代码 %1\nErrorRegisterTypeLib=无法注册类型库：%1\n\n; *** 卸载显示名字标记\n; used for example as 'My Program (32-bit)'\nUninstallDisplayNameMark=%1 (%2)\n; used for example as 'My Program (32-bit, All users)'\nUninstallDisplayNameMarks=%1 (%2, %3)\nUninstallDisplayNameMark32Bit=32位\nUninstallDisplayNameMark64Bit=64位\nUninstallDisplayNameMarkAllUsers=所有用户\nUninstallDisplayNameMarkCurrentUser=当前用户\n\n; *** 安装后错误\nErrorOpeningReadme=尝试打开自述文件时出错。\nErrorRestartingComputer=安装程序不能重新启动电脑，请手动重启。\n\n; *** 卸载消息\nUninstallNotFound=文件“%1”不存在。无法卸载。\nUninstallOpenError=文件“%1”不能打开。无法卸载。\nUninstallUnsupportedVer=此版本的卸载程序无法识别卸载日志文件“%1”的格式。无法卸载\nUninstallUnknownEntry=在卸载日志中遇到一个未知的条目 (%1)\nConfirmUninstall=您确认想要完全删除 %1 及它的所有组件吗？\nUninstallOnlyOnWin64=这个安装程序只能在64位Windows中进行卸载。\nOnlyAdminCanUninstall=这个安装的程序需要有管理员权限的用户才能卸载。\nUninstallStatusLabel=正在从您的电脑中删除 %1，请稍等。\nUninstalledAll=%1 已顺利地从您的电脑中删除。\nUninstalledMost=%1 卸载完成。%n%n有一些内容无法被删除。您可以手动删除它们。\nUninstalledAndNeedsRestart=要完成 %1 的卸载，您的电脑必须重新启动。%n%n您想立即重新启动电脑吗？\nUninstallDataCorrupted=文件“%1”已损坏，无法卸载\n\n; *** 卸载状态消息\nConfirmDeleteSharedFileTitle=删除共享文件吗？\nConfirmDeleteSharedFile2=系统中包含的下列共享文件已经不再被其它程序使用。您想要卸载程序删除这些共享文件吗？%n%n如果这些文件被删除，但还有程序正在使用这些文件，这些程序可能不能正确执行。如果您不能确定，选择“否”。把这些文件保留在系统中以免引起问题。\nSharedFileNameLabel=文件名：\nSharedFileLocationLabel=位置：\nWizardUninstalling=卸载状态\nStatusUninstalling=正在卸载 %1...\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=正在安装 %1。\nShutdownBlockReasonUninstallingApp=正在卸载 %1。\n\n; The custom messages below aren't used by Setup itself, but if you make\n; use of them in your scripts, you'll want to translate them.\n\n[CustomMessages]\n\nNameAndVersion=%1 版本 %2\nAdditionalIcons=附加快捷方式：\nCreateDesktopIcon=创建桌面快捷方式(&D)\nCreateQuickLaunchIcon=创建快速运行栏快捷方式(&Q)\nProgramOnTheWeb=%1 网站\nUninstallProgram=卸载 %1\nLaunchProgram=运行 %1\nAssocFileExtension=将 %2 文件扩展名与 %1 建立关联(&A)\nAssocingFileExtension=正在将 %2 文件扩展名与 %1 建立关联...\nAutoStartProgramGroupDescription=启动组：\nAutoStartProgram=自动启动 %1\nAddonHostProgramNotFound=%1无法找到您所选择的文件夹。%n%n您想要继续吗？\n"
  },
  {
    "path": "InnoDependencies/ChineseTraditional.isl",
    "content": "﻿; *** Inno Setup version 6.1.0+ Chinese (Traditional) messages ***\n; Name: Enfeng Tsao, nelson22768384@gmail.com\n; Based on 5.5.3+ translations by Samuel Lee, Email: 751555749@qq.com\n; Translation based on network resource\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n\n[LangOptions]\n; The following three entries are very important. Be sure to read and \n; understand the '[LangOptions] section' topic in the help file.\nLanguageName=<7e41><9ad4><4e2d><6587>\nLanguageID=$0404\nLanguageCodepage=950\n; If the language you are translating to requires special font faces or\n; sizes, uncomment any of the following entries and change them accordingly.\n;DialogFontName=\n;DialogFontSize=8\n;TitleFontName=Arial\n;TitleFontSize=29\n;WelcomeFontName=Verdana\n;WelcomeFontSize=12\n;CopyrightFontName=Arial\n;CopyrightFontSize=8\n\n[Messages]\n\n; *** Application titles\nSetupAppTitle=安裝程式\nSetupWindowTitle=%1 安裝程式\nUninstallAppTitle=解除安裝\nUninstallAppFullTitle=解除安裝 %1\n\n; *** Misc. common\nInformationTitle=訊息\nConfirmTitle=確認\nErrorTitle=錯誤\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=這將會安裝 %1。您想要繼續嗎？\nLdrCannotCreateTemp=無法建立暫存檔案。安裝程式將會結束。\nLdrCannotExecTemp=無法執行暫存檔案。安裝程式將會結束。\nHelpTextNote=\n\n; *** Startup error messages\nLastErrorMessage=%1%n%n錯誤 %2: %3\nSetupFileMissing=安裝資料夾中遺失檔案 %1。請修正此問題或重新取得此軟體。\nSetupFileCorrupt=安裝檔案已經損毀。請重新取得此軟體。\nSetupFileCorruptOrWrongVer=安裝檔案已經損毀，或與安裝程式的版本不符。請重新取得此軟體。\nInvalidParameter=某個無效的變量已被傳遞到了命令列:%n%n%1\nSetupAlreadyRunning=安裝程式已經在執行。\nWindowsVersionNotSupported=本安裝程式並不支援目前在電腦所運行的 Windows 版本。\nWindowsServicePackRequired=本安裝程式需要 %1 Service Pack %2 或更新。\nNotOnThisPlatform=這個程式無法在 %1 執行。\nOnlyOnThisPlatform=這個程式必須在 %1 執行。\nOnlyOnTheseArchitectures=這個程式只能在專門為以下處理器架構而設計的 Windows 上安裝:%n%n%1\nWinVersionTooLowError=這個程式必須在 %1 版本 %2 或以上的系統執行。\nWinVersionTooHighError=這個程式無法安裝在 %1 版本 %2 或以上的系統。\nAdminPrivilegesRequired=您必須登入成系統管理員以安裝這個程式。\nPowerUserPrivilegesRequired=您必須登入成具有系統管理員或 Power User 權限的使用者以安裝這個程式。\nSetupAppRunningError=安裝程式偵測到 %1 正在執行。%n%n請關閉該程式後按 「確定」 繼續，或按 「取消」 離開。\nUninstallAppRunningError=解除安裝程式偵測到 %1 正在執行。%n%n請關閉該程式後按 「確定」 繼續，或按 「取消」 離開。\n\n; *** Startup questions\nPrivilegesRequiredOverrideTitle=選擇安裝程式安裝模式\nPrivilegesRequiredOverrideInstruction=選擇安裝模式\nPrivilegesRequiredOverrideText1=可以為所有使用者安裝 %1 (需要系統管理權限)，或是僅為您安裝。\nPrivilegesRequiredOverrideText2=可以僅為您安裝 %1，或是為所有使用者安裝 (需要系統管理權限)。\nPrivilegesRequiredOverrideAllUsers=為所有使用者安裝 (&A)\nPrivilegesRequiredOverrideAllUsersRecommended=為所有使用者安裝 (建議選項) (&A)\nPrivilegesRequiredOverrideCurrentUser=僅為我安裝 (&M)\nPrivilegesRequiredOverrideCurrentUserRecommended=僅為我安裝 (建議選項) (&M)\n\n; *** Misc. errors\nErrorCreatingDir=安裝程式無法建立資料夾“%1”。\nErrorTooManyFilesInDir=無法在資料夾“%1”內建立檔案，因為資料夾內有太多的檔案。\n\n; *** Setup common messages\nExitSetupTitle=結束安裝程式\nExitSetupMessage=安裝尚未完成。如果您現在結束安裝程式，這個程式將不會被安裝。%n%n您可以稍後再執行安裝程式以完成安裝程序。您現在要結束安裝程式嗎?\nAboutSetupMenuItem=關於安裝程式 (&A)...\nAboutSetupTitle=關於安裝程式\nAboutSetupMessage=%1 版本 %2%n%3%n%n%1 網址:%n%4\nAboutSetupNote=\nTranslatorNote=\n\n; *** Buttons\nButtonBack=< 上一步(&B)\nButtonInstall=安裝(&I)\nButtonNext=下一步(&N)  >\nButtonOK=確定\nButtonCancel=取消\nButtonYes=是(&Y)\nButtonYesToAll=全部皆是 (&A)\nButtonNo=否(&N)\nButtonNoToAll=全部皆否 (&O)\nButtonFinish=完成 (&F)\nButtonBrowse=瀏覽 (&B)...\nButtonWizardBrowse=瀏覽 (&R)...\nButtonNewFolder=建立新資料夾 (&M)\n\n; *** \"Select Language\" dialog messages\nSelectLanguageTitle=選擇安裝語言\nSelectLanguageLabel=選擇在安裝過程中使用的語言:\n\n; *** Common wizard text\nClickNext=按 「下一步」 繼續安裝，或按 「取消」 結束安裝程式。\nBeveledLabel=\nBrowseDialogTitle=瀏覽資料夾\nBrowseDialogLabel=在下面的資料夾列表中選擇一個資料夾，然後按 「確定」。\nNewFolderName=新資料夾\n\n; *** \"Welcome\" wizard page\nWelcomeLabel1=歡迎使用 [name] 安裝程式\nWelcomeLabel2=這個安裝程式將會安裝 [name/ver] 到您的電腦。%n%n我們強烈建議您在安裝過程中關閉其它的應用程式，以避免與安裝程式發生沖突。\n\n; *** \"Password\" wizard page\nWizardPassword=密碼\nPasswordLabel1=這個安裝程式具有密碼保護。\nPasswordLabel3=請輸入密碼，然後按 「下一步」 繼續。密碼是區分大小寫的。\nPasswordEditLabel=密碼 (&P):\nIncorrectPassword=您輸入的密碼不正確，請重新輸入。\n\n; *** \"License Agreement\" wizard page\nWizardLicense=授權合約\nLicenseLabel=請閱讀以下授權合約。\nLicenseLabel3=請閱讀以下授權合約，您必須接受合約的各項條款才能繼續安裝。\nLicenseAccepted=我同意 (&A)\nLicenseNotAccepted=我不同意 (&D)\n\n; *** \"Information\" wizard pages\nWizardInfoBefore=訊息\nInfoBeforeLabel=在繼續安裝之前請閱讀以下重要資訊。\nInfoBeforeClickLabel=當您準備好繼續安裝，請按 「下一步」。\nWizardInfoAfter=訊息\nInfoAfterLabel=在繼續安裝之前請閱讀以下重要資訊。\nInfoAfterClickLabel=當您準備好繼續安裝，請按 「下一步」。\n\n; *** \"User Information\" wizard page\nWizardUserInfo=使用者資訊\nUserInfoDesc=請輸入您的資料。\nUserInfoName=使用者名稱(&U):\nUserInfoOrg=組織(&O):\nUserInfoSerial=序號(&S):\nUserInfoNameRequired=您必須輸入您的名稱。\n\n; *** \"Select Destination Location\" wizard page\nWizardSelectDir=選擇目的資料夾\nSelectDirDesc=選擇安裝程式安裝 [name] 的位置。\nSelectDirLabel3=安裝程式將會把 [name] 安裝到下面的資料夾。\nSelectDirBrowseLabel=按 「下一步」 繼續，如果您想選擇另一個資料夾，請按 「瀏覽」。\nDiskSpaceGBLabel=最少需要 [gb] GB 磁碟空間。\nDiskSpaceMBLabel=最少需要 [mb] MB 磁碟空間。\nCannotInstallToNetworkDrive=安裝程式無法安裝於網絡磁碟機。\nCannotInstallToUNCPath=安裝程式無法安裝於 UNC 路徑。\nInvalidPath=您必須輸入完整的路徑名稱及磁碟機代碼。%n%n例如 C:\\App 或 UNC 路徑格式 \\\\伺服器\\共用資料夾。\nInvalidDrive=您選取的磁碟機或 UNC 名稱不存在或無法存取，請選擇其他的目的地。\nDiskSpaceWarningTitle=磁碟空間不足\nDiskSpaceWarning=安裝程式需要至少 %1 KB 的磁碟空間，您所選取的磁碟只有 %2 KB 可用空間。%n%n您要繼續安裝嗎？\nDirNameTooLong=資料夾名稱或路徑太長。\nInvalidDirName=資料夾名稱不正確。\nBadDirName32=資料夾名稱不得包含以下特殊字元:%n%n%1\nDirExistsTitle=資料夾已經存在\nDirExists=資料夾：%n%n%1%n%n 已經存在。仍要安裝到該資料夾嗎？\nDirDoesntExistTitle=資料夾不存在\nDirDoesntExist=資料夾：%n%n%1%n%n 不存在。要建立該資料夾嗎？\n\n; *** \"Select Components\" wizard page\nWizardSelectComponents=選擇元件\nSelectComponentsDesc=選擇將會被安裝的元件。\nSelectComponentsLabel2=選擇您想要安裝的元件；清除您不想安裝的元件。然後按 「下一步」 繼續安裝。\nFullInstallation=完整安裝\n; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)\nCompactInstallation=最小安裝\nCustomInstallation=自訂安裝\nNoUninstallWarningTitle=元件已存在\nNoUninstallWarning=安裝程式偵測到以下元件已經安裝在您的電腦上:%n%n%1%n%n取消選擇這些元件將不會移除它們。%n%n您仍然要繼續嗎？\nComponentSize1=%1 KB\nComponentSize2=%1 MB\nComponentsDiskSpaceGBLabel=目前的選擇需要至少 [gb] GB 磁碟空間。\nComponentsDiskSpaceMBLabel=目前的選擇需要至少 [mb] MB 磁碟空間。\n\n; *** \"Select Additional Tasks\" wizard page\nWizardSelectTasks=選擇附加的工作\nSelectTasksDesc=選擇要執行的附加工作。\nSelectTasksLabel2=選擇安裝程式在安裝 [name] 時要執行的附加工作，然後按 「下一步」。\n\n; *** \"Select Start Menu Folder\" wizard page\nWizardSelectProgramGroup=選擇「開始」功能表的資料夾\nSelectStartMenuFolderDesc=選擇安裝程式建立程式的捷徑的位置。\nSelectStartMenuFolderLabel3=安裝程式將會把程式的捷徑建立在下面的「開始」功能表資料夾。\nSelectStartMenuFolderBrowseLabel=按 「下一步」 繼續，如果您想選擇另一個資料夾，請按 「瀏覽」。\nMustEnterGroupName=您必須輸入一個資料夾的名稱。\nGroupNameTooLong=資料夾名稱或路徑太長。\nInvalidGroupName=資料夾名稱不正確。\nBadGroupName=資料夾名稱不得包含下列字元:%n%n%1\nNoProgramGroupCheck2=不要在「開始」功能表中建立資料夾 (&D)\n\n; *** \"Ready to Install\" wizard page\nWizardReady=準備安裝\nReadyLabel1=安裝程式將開始安裝 [name] 到您的電腦中。\nReadyLabel2a=按下 「安裝」 繼續安裝，或按 「上一步」 重新檢視或設定各選項的內容。\nReadyLabel2b=按下 「安裝」 繼續安裝。\nReadyMemoUserInfo=使用者資訊\nReadyMemoDir=目的資料夾:\nReadyMemoType=安裝型態:\nReadyMemoComponents=選擇的元件:\nReadyMemoGroup=「開始」功能表資料夾:\nReadyMemoTasks=附加工作:\n\n; *** TDownloadWizardPage wizard page and DownloadTemporaryFile\nDownloadingLabel=正在下載額外檔案...\nButtonStopDownload=停止下載 (&S)\nStopDownload=您確定要停止下載嗎？\nErrorDownloadAborted=已停止下載\nErrorDownloadFailed=下載失敗: %1 %2\nErrorDownloadSizeFailed=取得檔案大小失敗: %1 %2\nErrorFileHash1=檔案雜湊失敗: %1\nErrorFileHash2=檔案雜湊無效: 必須為 %1，收到 %2\nErrorProgress=進度無效: %1 之 %2\nErrorFileSize=檔案大小無效: 必須為 %1，收到 %2\n\n; *** \"Preparing to Install\" wizard page\nWizardPreparing=準備安裝程式\nPreparingDesc=安裝程式準備將 [name] 安裝到您的電腦上。\nPreviousInstallNotCompleted=先前的安裝/ 解除安裝尚未完成，您必須重新啟動電腦以完成該安裝。%n%n在重新啟動電腦之後，請再執行這個程式來安裝 [name]。\nCannotContinue=安裝程式無法繼續。請按 「取消」 離開。\nApplicationsFound=下面的應用程式正在使用安裝程式所需要更新的檔案。建議您允許安裝程式自動關閉這些應用程式。\nApplicationsFound2=下面的應用程式正在使用安裝程式所需要更新的檔案。建議您允許安裝程式自動關閉這些應用程式。當安裝過程結束後，本安裝程式將會嘗試重新開啟該應用程式。\nCloseApplications=關閉應用程式 (&A)\nDontCloseApplications=不要關閉應用程式 (&D)\nErrorCloseApplications=安裝程式無法自動關閉所有應用程式。建議您在繼續前先關閉所有應用程式使用的檔案。\nPrepareToInstallNeedsRestart=安裝程式必須重新啟動您的電腦。重新啟動後，請再次執行安裝程式以完成 [name] 的安裝。%n%n您想要現在重新啟動電腦嗎？\n\n; *** \"Installing\" wizard page\nWizardInstalling=正在安裝\nInstallingLabel=請稍候，安裝程式正在將 [name] 安裝到您的電腦上\n\n; *** \"Setup Completed\" wizard page\nFinishedHeadingLabel=安裝完成\nFinishedLabelNoIcons=安裝程式已經將 [name] 安裝在您的電腦上。\nFinishedLabel=安裝程式已經將 [name] 安裝在您的電腦中，您可以選擇程式的圖示來執行該應用程式。\nClickFinish=按 「完成」 以結束安裝程式。\nFinishedRestartLabel=要完成 [name] 的安裝，安裝程式必須重新啟動您的電腦。您想要現在重新啟動電腦嗎？\nFinishedRestartMessage=要完成 [name] 的安裝，安裝程式必須重新啟動您的電腦。%n%n您想要現在重新啟動電腦嗎？\nShowReadmeCheck=是，我要閱讀讀我檔案。\nYesRadio=是，立即重新啟動電腦(&Y)\nNoRadio=否，我稍後重新啟動電腦(&N)\n; used for example as 'Run MyProg.exe'\nRunEntryExec=執行 %1\n; used for example as 'View Readme.txt'\nRunEntryShellExec=檢視 %1\n\n; *** \"Setup Needs the Next Disk\" \nChangeDiskTitle=安裝程式需要下一張磁片\nSelectDiskLabel2=請插入磁片 %1，然後按 「確定」。%n%n如果檔案不在以下所顯示的資料夾之中，請輸入正確的資料夾名稱或按 [瀏覽] 選取。\nPathLabel=路徑(&P):\nFileNotInDir2=檔案“%1”無法在“%2”找到。請插入正確的磁片或選擇其它的資料夾。\nSelectDirectoryLabel=請指定下一張磁片的位置。\n\n; *** Installation phase messages\nSetupAborted=安裝沒有完成。%n%n請更正問題後重新安裝一次。\nAbortRetryIgnoreSelectAction=選取動作\nAbortRetryIgnoreRetry=請再試一次 (&T)\nAbortRetryIgnoreIgnore=略過錯誤並繼續 (&I)\nAbortRetryIgnoreCancel=取消安裝\n\n; *** Installation status messages\nStatusClosingApplications=正在關閉應用程式...\nStatusCreateDirs=正在建立資料夾...\nStatusExtractFiles=正在解壓縮檔案...\nStatusCreateIcons=正在建立程式集圖示...\nStatusCreateIniEntries=寫入 INI 檔案的項目...\nStatusCreateRegistryEntries=正在更新系統登錄...\nStatusRegisterFiles=正在登錄檔案...\nStatusSavingUninstall=儲存解除安裝資訊...\nStatusRunProgram=正在完成安裝...\nStatusRestartingApplications=正在重新開啟應用程式...\nStatusRollback=正在復原變更...\n\n; *** Misc. errors\nErrorInternal2=內部錯誤: %1\nErrorFunctionFailedNoCode=%1 失敗\nErrorFunctionFailed=%1 失敗；代碼 %2\nErrorFunctionFailedWithMessage=%1 失敗；代碼 %2.%n%3\nErrorExecutingProgram=無法執行檔案:%n%1\n\n; *** Registry errors\nErrorRegOpenKey=無法開啟登錄鍵:%n%1\\%2\nErrorRegCreateKey=無法建立登錄項目:%n%1\\%2\nErrorRegWriteKey=無法變更登錄項目:%n%1\\%2\n\n; *** INI errors\nErrorIniEntry=在檔案“%1”建立 INI 項目錯誤。\n\n; *** File copying errors\nFileAbortRetryIgnoreSkipNotRecommended=略過這個檔案 (不建議) (&S)\nFileAbortRetryIgnoreIgnoreNotRecommended=略過錯誤並繼續 (不建議) (&I)\nSourceDoesntExist=來源檔案“%1”不存在。\nSourceIsCorrupted=來源檔案已經損毀。\nExistingFileReadOnly2=無法取代現有檔案，因為檔案已標示為唯讀。\nExistingFileReadOnlyRetry=移除唯讀屬性並重試 (&R)\nExistingFileReadOnlyKeepExisting=保留現有檔案 (&K)\nErrorReadingExistingDest=讀取一個已存在的檔案時發生錯誤:\nFileExistsSelectAction=選擇操作\nFileExists2=檔案已存在。\nFileExistsOverwriteExisting=覆寫現有檔案\nFileExistsKeepExisting=保留現有檔案 (&O)\nFileExistsOverwriteOrKeepAll=對下次衝突執行相同操作 (&D)\nExistingFileNewerSelectAction=選擇操作\nExistingFileNewer2=現有檔案比安裝程式嘗試安裝的檔案還新。\nExistingFileNewerOverwriteExisting=覆寫現有檔案 (&O)\nExistingFileNewerKeepExisting=保留現有檔案 (&K) (建議選項)\nExistingFileNewerOverwriteOrKeepAll=對下次衝突執行相同操作 (&D)\nErrorChangingAttr=在變更檔案屬性時發生錯誤:\nErrorCreatingTemp=在目的資料夾中建立檔案時發生錯誤:\nErrorReadingSource=讀取原始檔案時發生錯誤:\nErrorCopying=複製檔案時發生錯誤:\nErrorReplacingExistingFile=取代檔案時發生錯誤:\nErrorRestartReplace=重新啟動電腦後取代檔案失敗:\nErrorRenamingTemp=在目的資料夾變更檔案名稱時發生錯誤:\nErrorRegisterServer=無法注冊 DLL/OCX 檔案: %1。\nErrorRegSvr32Failed=RegSvr32 失敗；退出代碼 %1\nErrorRegisterTypeLib=無法注冊類型庫: %1。\n\n; *** Uninstall display name markings\n; used for example as 'My Program (32-bit)'\nUninstallDisplayNameMark=%1 (%2)\n; used for example as 'My Program (32-bit, All users)'\nUninstallDisplayNameMarks=%1 (%2, %3)\nUninstallDisplayNameMark32Bit=32 位元\nUninstallDisplayNameMark64Bit=64 位元\nUninstallDisplayNameMarkAllUsers=所有使用者\nUninstallDisplayNameMarkCurrentUser=目前使用者\n\n; *** Post-installation errors\nErrorOpeningReadme=開啟讀我檔案時發生錯誤。\nErrorRestartingComputer=安裝程式無法重新啟動電腦，請自行重新啟動。\n\n; *** Uninstaller messages\nUninstallNotFound=檔案“%1”不存在，無法解除安裝。\nUninstallOpenError=無法開啟檔案“%1”，無法解除安裝\nUninstallUnsupportedVer=這個版本的解除安裝程式無法辨識記錄檔 “%1” 之格式，無法解除安裝。\nUninstallUnknownEntry=解除安裝記錄檔中發現未知的記錄 (%1)。\nConfirmUninstall=您確定要完全移除 %1 及其相關的檔案嗎？\nUninstallOnlyOnWin64=這個程式只能在 64 位元的 Windows 上解除安裝。\nOnlyAdminCanUninstall=這個程式要具備系統管理員權限的使用者方可解除安裝。\nUninstallStatusLabel=正在從您的電腦移除 %1 中，請稍候...\nUninstalledAll=%1 已經成功從您的電腦中移除。\nUninstalledMost=%1 解除安裝完成。%n%n某些檔案及元件無法移除，您可以自行刪除這些檔案。\nUninstalledAndNeedsRestart=要完成 %1 的解除安裝程序，您必須重新啟動電腦。%n%n您想要現在重新啟動電腦嗎？\nUninstallDataCorrupted=檔案“%1”已經損毀，無法解除安裝\n\n; *** Uninstallation phase messages\nConfirmDeleteSharedFileTitle=移除共用檔案\nConfirmDeleteSharedFile2=系統顯示下列共用檔案已不再被任何程式所使用，您要移除這些檔案嗎?%n%n%1%n%n倘若您移除了以上檔案但仍有程式需要使用它們，將造成這些程式無法正常執行，因此您若無法確定請選擇 [否]。保留這些檔案在您的系統中不會造成任何損害。\nSharedFileNameLabel=檔案名稱:\nSharedFileLocationLabel=位置:\nWizardUninstalling=解除安裝狀態\nStatusUninstalling=正在解除安裝 %1...\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=正在安裝 %1。\nShutdownBlockReasonUninstallingApp=正在解除安裝 %1。\n\n; The custom messages below aren't used by Setup itself, but if you make\n; use of them in your scripts, you'll want to translate them.\n\n[CustomMessages]\n\nNameAndVersion=%1 版本 %2\nAdditionalIcons=附加圖示:\nCreateDesktopIcon=建立桌面圖示(&D)\nCreateQuickLaunchIcon=建立快速啟動圖示(&Q)\nProgramOnTheWeb=%1 的網站\nUninstallProgram=解除安裝 %1\nLaunchProgram=啟動 %1\nAssocFileExtension=將 %1 與檔案副檔名 %2 產生關聯(&A)\nAssocingFileExtension=正在將 %1 與檔案副檔名 %2 產生關聯...\nAutoStartProgramGroupDescription=開啟:\nAutoStartProgram=自動開啟 %1\nAddonHostProgramNotFound=%1 無法在您所選的資料夾中找到。%n%n您是否還要繼續？"
  },
  {
    "path": "InnoDependencies/Greek.isl",
    "content": "﻿; *** Inno Setup version 6.1.0+ Greek messages ***\n;\n; To download user-contributed translations of this file, go to:\n;   https://jrsoftware.org/files/istrans/\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n;\n; Originally translated by Anastasis Chatzioglou, baldycom@hotmail.com\n; Updated by XhmikosR [XhmikosR, my_nickname at yahoo dot com]\n; Updated to version 6.1.0+ by Vasileios Karamichail, v.karamichail@outlook.com\n;\n\n[LangOptions]\n; The following three entries are very important. Be sure to read and \n; understand the '[LangOptions] section' topic in the help file.\nLanguageName=Ελληνικά\nLanguageID=$0408\nLanguageCodePage=1253\n; If the language you are translating to requires special font faces or\n; sizes, uncomment any of the following entries and change them accordingly.\n;DialogFontName=\n;DialogFontSize=8\n;WelcomeFontName=Verdana\n;WelcomeFontSize=12\n;TitleFontName=Arial\n;TitleFontSize=29\n;CopyrightFontName=Arial\n;CopyrightFontSize=8\n\n[Messages]\n\n; *** Application titles\nSetupAppTitle=Εγκατάσταση\nSetupWindowTitle=Εγκατάσταση - %1\nUninstallAppTitle=Απεγκατάσταση\nUninstallAppFullTitle=%1 Απεγκατάσταση\n\n; *** Misc. common\nInformationTitle=Πληροφορίες\nConfirmTitle=Επιβεβαίωση\nErrorTitle=Σφάλμα\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=Θα εκτελεστεί η εγκατάσταση του %1. Θέλετε να συνεχίσετε;\nLdrCannotCreateTemp=Σφάλμα στη δημιουργία προσωρινού αρχείου. Η εγκατάσταση τερματίστηκε\nLdrCannotExecTemp=Αδύνατη η εκτέλεση αρχείου στον φάκελο προσωρινών αρχείων. Η εγκατάσταση τερματίστηκε\nHelpTextNote=\n\n; *** Startup error messages\nLastErrorMessage=%1.%n%nΣφάλμα %2: %3\nSetupFileMissing=Το αρχείο %1 λείπει από τον κατάλογο εγκατάστασης. Διορθώστε το πρόβλημα ή αποκτήστε ένα νέο αντίγραφο του προγράμματος.\nSetupFileCorrupt=Το αρχείο εγκατάστασης είναι κατεστραμμένο. Παρακαλώ προμηθευτείτε ένα νέο αντίγραφο του προγράμματος.\nSetupFileCorruptOrWrongVer=Το αρχείο εγκατάστασης είναι κατεστραμμένο ή δεν είναι συμβατό με αυτήν την έκδοση του προγράμματος εγκατάστασης. Διορθώστε το πρόβλημα ή αποκτήστε ένα νέο αντίγραφο του προγράμματος.\nInvalidParameter=Μία μη έγκυρη παράμετρος χρησιμοποιήθηκε στη γραμμή εντολών:%n%n%1\nSetupAlreadyRunning=Η εγκατάσταση τρέχει ήδη.\nWindowsVersionNotSupported=Αυτό το πρόγραμμα δεν υποστηρίζει την έκδοση των Windows που εκτελεί ο υπολογιστής σας.\nWindowsServicePackRequired=Αυτό το πρόγραμμα χρειάζεται το %1 Service Pack %2 ή νεότερο.\nNotOnThisPlatform=Αυτό το πρόγραμμα δεν μπορεί να εκτελεστεί σε %1.\nOnlyOnThisPlatform=Αυτό το πρόγραμμα μπορεί να εκτελεστεί μόνο σε %1.\nOnlyOnTheseArchitectures=Αυτό το πρόγραμμα μπορεί να εγκατασταθεί μόνο σε εκδόσεις των Windows που έχουν σχεδιαστεί για τις ακόλουθες αρχιτεκτονικές επεξεργαστών:%n%n%1\nWinVersionTooLowError=Αυτό το πρόγραμμα απαιτεί %1 έκδοση %2 ή μεταγενέστερη.\nWinVersionTooHighError=Αυτό το πρόγραμμα δεν μπορεί να εγκατασταθεί σε %1 έκδοση %2 ή μεταγενέστερη.\nAdminPrivilegesRequired=Πρέπει να είστε συνδεδεμένοι ως διαχειριστής κατά την εγκατάσταση αυτού του προγράμματος.\nPowerUserPrivilegesRequired=Πρέπει να είστε συνδεδεμένοι ως διαχειριστής ή ως μέλος της ομάδας Power User κατά την εγκατάσταση αυτού του προγράμματος.\nSetupAppRunningError=Ο Οδηγός Εγκατάστασης εντόπισε ότι η εφαρμογή %1 εκτελείται ήδη.%n%nΠαρακαλώ κλείστε την εφαρμογή τώρα και πατήστε ΟΚ για να συνεχίσετε, ή Άκυρο για έξοδο.\nUninstallAppRunningError=Ο Οδηγός Απεγκατάστασης εντόπισε ότι η εφαρμογή %1 εκτελείται ήδη.%n%nΠαρακαλώ κλείστε την εφαρμογή τώρα και πατήστε ΟΚ για να συνεχίσετε, ή Άκυρο για έξοδο.\n\n; *** Startup questions\nPrivilegesRequiredOverrideTitle=Επιλέξτε Τρόπο Εγκατάστασης\nPrivilegesRequiredOverrideInstruction=Επιλέξτε τον τρόπο εγκατάστασης\nPrivilegesRequiredOverrideText1=Το %1 μπορεί να εγκατασταθεί για όλους τους χρήστες (απαιτεί δικαιώματα διαχειριστή) ή μόνο για εσάς.\nPrivilegesRequiredOverrideText2=Το %1 μπορεί να εγκατασταθεί μόνο για εσάς ή για όλους τους χρήστες (απαιτεί δικαιώματα διαχειριστή).\nPrivilegesRequiredOverrideAllUsers=Εγκατάσταση για &όλους τους χρήστες\nPrivilegesRequiredOverrideAllUsersRecommended=Εγκατάσταση για όλ&ους τους χρήστες (συνιστάται)\nPrivilegesRequiredOverrideCurrentUser=Εγκατάσταση μόνο για &εμένα\nPrivilegesRequiredOverrideCurrentUserRecommended=Εγκατάσταση μόνο για &εμένα (συνιστάται)\n\n; *** Misc. errors\nErrorCreatingDir=Η εγκατάσταση δεν μπόρεσε να δημιουργήσει τον φάκελο \"%1\"\nErrorTooManyFilesInDir=Δεν είναι δυνατή η δημιουργία ενός αρχείου στον φάκελο \"%1\" επειδή περιέχει πολλά αρχεία\n\n; *** Setup common messages\nExitSetupTitle=Τέλος Εγκατάστασης\nExitSetupMessage=Η εγκατάσταση δεν έχει ολοκληρωθεί. Αν την τερματίσετε τώρα, το πρόγραμμα δεν θα εγκατασταθεί.%n%nΜπορείτε να εκτελέσετε ξανά την εγκατάσταση αργότερα.%n%nΈξοδος;\nAboutSetupMenuItem=&Σχετικά με την Εγκατάσταση...\nAboutSetupTitle=Σχετικά με την Εγκατάσταση\nAboutSetupMessage=%1 έκδοση %2%n%3%n%n%1 αρχική σελίδα:%n%4\nAboutSetupNote=\nTranslatorNote=\n\n; *** Buttons\nButtonBack=< &Πίσω\nButtonNext=&Επόμενο >\nButtonInstall=&Εγκατάσταση\nButtonOK=ΟΚ\nButtonCancel=&Ακυρο\nButtonYes=Ν&αι\nButtonYesToAll=Ναι σε &Ολα\nButtonNo=Ό&χι\nButtonNoToAll=Όχι &σε όλα\nButtonFinish=&Τέλος\nButtonBrowse=&Αναζήτηση...\nButtonWizardBrowse=Ανα&ζήτηση...\nButtonNewFolder=&Δημιουργία νέου φακέλου\n\n; *** \"Select Language\" dialog messages\nSelectLanguageTitle=Επιλογή Γλώσσας Οδηγού Εγκατάστασης\nSelectLanguageLabel=Επιλέξτε τη γλώσσα που θέλετε να χρησιμοποιήσετε κατά την εγκατάσταση.\n\n; *** Common wizard text\nClickNext=Πατήστε Επόμενο για να συνεχίσετε ή Άκυρο για να τερματίσετε την εγκατάσταση.\nBeveledLabel=\nBrowseDialogTitle=Αναζήτηση Φακέλου\nBrowseDialogLabel=Επιλέξτε ένα φάκελο από την ακόλουθη λίστα και πατήστε ΟΚ.\nNewFolderName=Νέος φάκελος\n\n; *** \"Welcome\" wizard page\nWelcomeLabel1=Καλως ορίσατε στον Οδηγό Εγκατάστασης του [name]\nWelcomeLabel2=Θα γίνει εγκατάσταση του [name/ver] στον υπολογιστή σας.%n%nΣυνιστάται να κλείσετε όλες τις άλλες εφαρμογές πριν συνεχίσετε.\n\n; *** \"Password\" wizard page\nWizardPassword=Κωδικός Πρόσβασης\nPasswordLabel1=Αυτή η εγκατάσταση προστατεύεται με κωδικό πρόσβασης.\nPasswordLabel3=Παρακαλώ εισάγετε τον κωδικό και πατήστε Επόμενο.\nPasswordEditLabel=&Κωδικός:\nIncorrectPassword=Ο κωδικός που έχετε εισάγει είναι λανθασμένος. Παρακαλώ, προσπαθήστε ξανά.\n\n; *** \"License Agreement\" wizard page\nWizardLicense=Άδεια Χρήσης\nLicenseLabel=Παρακαλώ διαβάστε προσεκτικά τις ακόλουθες πληροφορίες πριν συνεχίσετε.\nLicenseLabel3=Παρακαλώ διαβάστε την ακόλουθη Άδεια Χρήσης. Θα πρέπει να αποδεχτείτε τους όρους της πριν συνεχίσετε την εγκατάσταση.\nLicenseAccepted=&Δέχομαι τους όρους της Άδειας Χρήσης\nLicenseNotAccepted=Δεν &αποδέχομαι τους όρους της Άδειας Χρήσης\n\n; *** \"Information\" wizard pages\nWizardInfoBefore=Πληροφορίες\nInfoBeforeLabel=Παρακαλώ διαβάστε προσεκτικά τις ακόλουθες πληροφορίες πριν συνεχίσετε.\nInfoBeforeClickLabel=Όταν είστε έτοιμοι να συνεχίσετε με τον Οδηγό Εγκατάστασης, πατήστε Επόμενο.\nWizardInfoAfter=Πληροφορίες\nInfoAfterLabel=Παρακαλώ διαβάστε προσεκτικά τις ακόλουθες πληροφορίες πριν συνεχίσετε.\nInfoAfterClickLabel=Όταν είστε έτοιμοι να συνεχίσετε με τον Οδηγό Εγκατάστασης, πατήστε Επόμενο.\n\n; *** \"User Information\" wizard page\nWizardUserInfo=Πληροφορίες Χρήστη\nUserInfoDesc=Παρακαλώ εισάγετε τα στοιχεία σας.\nUserInfoName=&Ονομα Χρήστη:\nUserInfoOrg=&Εταιρεία:\nUserInfoSerial=&Σειριακός Αριθμός:\nUserInfoNameRequired=Πρέπει να εισάγετε ένα όνομα.\n\n; *** \"Select Destination Location\" wizard page\nWizardSelectDir=Επιλογή Φακέλου Εγκατάστασης\nSelectDirDesc=Πού θέλετε να εγκατασταθεί το [name];\nSelectDirLabel3=Ο Οδηγός Εγκατάστασης θα εγκαταστήσει το [name] στον ακόλουθο φάκελο.\nSelectDirBrowseLabel=Για να συνεχίσετε, πατήστε Επόμενο. Εάν θέλετε να επιλέξετε διαφορετικό φάκελο, πατήστε Αναζήτηση.\nDiskSpaceGBLabel=Απαιτούνται τουλάχιστον [gb] GB ελεύθερου χώρου στο δίσκο.\nDiskSpaceMBLabel=Απαιτούνται τουλάχιστον [mb] MB ελεύθερου χώρου στο δίσκο.\nCannotInstallToNetworkDrive=Η εγκατάσταση δεν μπορεί να γίνει σε δίσκο δικτύου.\nCannotInstallToUNCPath=Η εγκατάσταση δεν μπορεί να γίνει σε διαδρομή UNC.\nInvalidPath=Πρέπει να δώσετε την πλήρη διαδρομή με το γράμμα δίσκου, για παράδειγμα:%n%nC:\\APP%n%nή μια διαδρομή UNC της μορφής:%n%n\\\\server\\share\nInvalidDrive=Ο τοπικός δίσκος ή ο δίσκος δικτύου που έχετε επιλέξει δεν υπάρχει ή δεν είναι προσβάσιμος. Παρακαλώ, επιλέξτε άλλον.\nDiskSpaceWarningTitle=Ανεπαρκής Χώρος στο Δίσκο\nDiskSpaceWarning=Η εγκατάσταση χρειάζεται τουλάχιστον %1 KB ελεύθερο χώρο στο δίσκο αλλά ο επιλεγμένος δίσκος διαθέτει μόνον %2 KB.%n%nΘέλετε να συνεχίσετε παρόλα αυτά;\nDirNameTooLong=Το όνομα ή η διαδρομή του φακέλου είναι πολύ μεγάλη.\nInvalidDirName=Το όνομα του φακέλου δεν είναι έγκυρο.\nBadDirName32=Το όνομα του φακέλου δεν μπορεί να περιλαμβάνει κανέναν από τους παρακάτω χαρακτήρες:%n%n%1\nDirExistsTitle=Ο Φάκελος Υπάρχει\nDirExists=Ο φάκελος:%n%n%1%n%nυπάρχει ήδη. Θέλετε να γίνει η εγκατάσταση σε αυτόν τον φάκελο παρόλα αυτά;\nDirDoesntExistTitle=Ο Φάκελος Δεν Υπάρχει\nDirDoesntExist=Ο φάκελος:%n%n%1%n%nδεν υπάρχει. Θέλετε να δημιουργηθεί;\n\n; *** \"Select Components\" wizard page\nWizardSelectComponents=Επιλογή Λειτουργιών Μονάδων\nSelectComponentsDesc=Ποια στοιχεία θέλετε να εγκατασταθούν;\nSelectComponentsLabel2=Επιλέξτε τα στοιχεία που θέλετε να εγκαταστήσετε, αποεπιλέξτε τα στοιχεία που δεν θέλετε να εγκαταστήσετε. Πατήστε Επόμενο όταν είστε έτοιμοι να συνεχίσετε.\nFullInstallation=Πλήρης εγκατάσταση\n; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)\nCompactInstallation=Τυπική εγκατάσταση\nCustomInstallation=Προσαρμοσμένη εγκατάσταση\nNoUninstallWarningTitle=Οι Λειτουργικές Μονάδες Υπάρχουν\nNoUninstallWarning=Ο Οδηγός Εγκατάστασης εντόπισε ότι τα ακόλουθα στοιχεία είναι ήδη εγκατεστημένα στον υπολογιστή σας:%n%n%1%n%nΑποεπιλέγοντας αυτά τα στοιχεία δεν θα απεγκατασταθούν.%n%nΘέλετε να συνεχίσετε παρόλα αυτά;\nComponentSize1=%1 KB\nComponentSize2=%1 MB\nComponentsDiskSpaceGBLabel=Η τρέχουσα επιλογή απαιτεί τουλάχιστον [gb] GB χώρου στο δίσκο.\nComponentsDiskSpaceMBLabel=Η τρέχουσα επιλογή απαιτεί τουλάχιστον [mb] MB χώρου στο δίσκο.\n\n; *** \"Select Additional Tasks\" wizard page\nWizardSelectTasks=Επιλογή Επιπλέον Ενεργειών\nSelectTasksDesc=Ποιες επιπλέον ενέργειες θέλετε να γίνουν;\nSelectTasksLabel2=Επιλέξτε τις επιπλέον ενέργειες που θέλετε να γίνουν κατά την εγκατάσταση του [name] και πατήστε Επόμενο.\n\n; *** \"Select Start Menu Folder\" wizard page\nWizardSelectProgramGroup=Επιλογή Φακέλου Μενού Έναρξης\nSelectStartMenuFolderDesc=Πού θέλετε να τοποθετηθούν οι συντομεύσεις του προγράμματος;\nSelectStartMenuFolderLabel3=Η εγκατάσταση θα δημιουργήσει τις συντομεύσεις του προγράμματος στον ακόλουθο φάκελο του μενού Έναρξη.\nSelectStartMenuFolderBrowseLabel=Για να συνεχίσετε, πατήστε Επόμενο. Αν θέλετε διαφορετικό φάκελο, πατήστε Αναζήτηση.\nMustEnterGroupName=Πρέπει να εισαγάγετε ένα όνομα φακέλου.\nGroupNameTooLong=Το όνομα ή η διαδρομή του φακέλου είναι πολύ μεγάλη.\nInvalidGroupName=Το όνομα του φακέλου δεν είναι έγκυρο.\nBadGroupName=Το όνομα του φακέλου δεν μπορεί να περιλαμβάνει κανέναν από τους παρακάτω χαρακτήρες:%n%n%1\nNoProgramGroupCheck2=&Χωρίς δημιουργία φακέλου στο μενού Έναρξης.\n\n; *** \"Ready to Install\" wizard page\nWizardReady=Έτοιμα για Εγκατάσταση\nReadyLabel1=Ο Οδηγός Εγκατάστασης είναι έτοιμος να ξεκινήσει την εγκατάσταση του [name] στον υπολογιστή σας.\nReadyLabel2a=Πατήστε Εγκατάσταση για να συνεχίσετε με την εγκατάσταση ή πατήστε Πίσω, εάν θέλετε να ελέγξετε ή να αλλάξετε τυχόν ρυθμίσεις.\nReadyLabel2b=Πατήστε Εγκατάσταση για να συνεχίσετε την εγκατάσταση.\nReadyMemoUserInfo=Πληροφορίες Χρήστη:\nReadyMemoDir=Φάκελος προορισμού:\nReadyMemoType=Είδος εγκατάστασης:\nReadyMemoComponents=Επιλεγμένες λειτουργικές μονάδες:\nReadyMemoGroup=Φάκελος στο μενού Έναρξη:\nReadyMemoTasks=Επιπλέον ενέργειες:\n\n; *** TDownloadWizardPage wizard page and DownloadTemporaryFile\nDownloadingLabel=Λήψη πρόσθετων αρχείων...\nButtonStopDownload=&Διακοπή λήψης\nStopDownload=Είστε βέβαιοι ότι θέλετε να διακόψετε τη λήψη;\nErrorDownloadAborted=Η λήψη ακυρώθηκε\nErrorDownloadFailed=Η λήψη απέτυχε: %1 %2\nErrorDownloadSizeFailed=Η λήψη του μεγέθους απέτυχε: %1 %2\nErrorFileHash1=Αποτυχία υπολογισμού hash: %1\nErrorFileHash2=Μη έγκυρο hash: αναμενόμενο %1, βρέθηκε %2\nErrorProgress=Μη έγκυρη πρόοδος: %1 από %2\nErrorFileSize=Μη έγκυρο μέγεθος αρχείου: αναμενόμενο %1, βρέθηκε %2\n\n; *** \"Preparing to Install\" wizard page\nWizardPreparing=Προετοιμασία Εγκατάστασης\nPreparingDesc=Ο Οδηγός Εγκατάστασης προετοιμάζεται για την εγκατάσταση του [name] στον υπολογιστή σας.\nPreviousInstallNotCompleted=Η εγκατάσταση/αφαίρεση ενός προηγούμενου προγράμματος δεν ολοκληρώθηκε. Θα χρειαστεί να κάνετε επανεκκίνηση του υπολογιστή σας για να ολοκληρωθεί.%n%nΜετά την επανεκκίνηση του υπολογιστή σας, εκτελέστε ξανά τον Οδηγό Εγκατάστασης για να ολοκληρώσετε την εγκατάσταση/αφαίρεση του [name].\nCannotContinue=Η εγκατάσταση δεν μπορεί να συνεχιστεί. Παρακαλώ πατήστε Άκυρο για τερματισμό.\nApplicationsFound=Οι ακόλουθες εφαρμογές χρησιμοποιούν αρχεία που πρέπει να ενημερωθούν από τον Οδηγό Εγκατάστασης. Συνιστάται να επιτρέψετε στον Οδηγό Εγκατάστασης να κλείσει αυτόματα αυτές τις εφαρμογές.\nApplicationsFound2=Οι ακόλουθες εφαρμογές χρησιμοποιούν αρχεία που πρέπει να ενημερωθούν από τον Οδηγό Εγκατάστασης. Συνιστάται να επιτρέψετε στον Οδηγό Εγκατάστασης να κλείσει αυτόματα αυτές τις εφαρμογές. Μετά την ολοκλήρωση της εγκατάστασης, ο Οδηγός Εγκατάστασης θα επιχειρήσει να κάνει επανεκκίνηση των εφαρμογών.\nCloseApplications=&Αυτόματο κλείσιμο των εφαρμογών\nDontCloseApplications=&Χωρίς κλείσιμο των εφαρμογών\nErrorCloseApplications=Ο Οδηγός Εγκατάστασης δεν μπόρεσε να κλείσει αυτόματα όλες τις εφαρμογές. Συνιστάται να κλείσετε όλες τις εφαρμογές που χρησιμοποιούν αρχεία που πρέπει να ενημερωθούν από τον Οδηγό Εγκατάστασης προτού συνεχίσετε.\nPrepareToInstallNeedsRestart=Ο Οδηγός Εγκατάστασης πρέπει να κάνει επανεκκίνηση του υπολογιστή σας. Μετά την επανεκκίνηση του υπολογιστή σας, εκτελέστε ξανά τον Οδηγό Εγκατάστασης για να ολοκληρώσετε την εγκατάσταση του [name].%n%nΘα θέλατε να κάνετε επανεκκίνηση τώρα;\n\n; *** \"Installing\" wizard page\nWizardInstalling=Εγκατάσταση\nInstallingLabel=Παρακαλώ περιμένετε καθώς γίνεται η εγκατάσταση του [name] στον υπολογιστή σας.\n\n; *** \"Setup Completed\" wizard page\nFinishedHeadingLabel=Ολοκλήρωση του Οδηγού Εγκατάστασης του [name]\nFinishedLabelNoIcons=Ο Οδηγός Εγκατάστασης ολοκλήρωσε την εγκατάσταση του [name] στον υπολογιστή σας.\nFinishedLabel=Ο Οδηγός Εγκατάστασης ολοκλήρωσε την εγκατάσταση του [name] στον υπολογιστή σας. Η εφαρμογή μπορεί να ξεκινήσει επιλέγοντας κάποια από τις εγκατεστημένες συντομεύσεις.\nClickFinish=Πατήστε Τέλος για να τερματίσετε τον Οδηγό Εγκατάστασης.\nFinishedRestartLabel=Για να ολοκληρώσετε την εγκατάσταση του [name], ο Οδηγός Εγκατάστασης πρέπει να κάνει επανεκκίνηση του υπολογιστή σας. Θα θέλατε να κάνετε επανεκκίνηση τώρα;\nFinishedRestartMessage=Για να ολοκληρώσετε την εγκατάσταση του [name], ο Οδηγός Εγκατάστασης πρέπει να κάνει επανεκκίνηση του υπολογιστή σας.%n%nΘα θέλατε να κάνετε επανεκκίνηση τώρα;\nShowReadmeCheck=Ναι, θα ήθελα να δω το αρχείο README\nYesRadio=&Ναι, να γίνει επανεκκίνηση τώρα\nNoRadio=&Οχι, θα κάνω επανεκκίνηση αργότερα\n; used for example as 'Run MyProg.exe'\nRunEntryExec=Εκτέλεση του %1\n; used for example as 'View Readme.txt'\nRunEntryShellExec=Προβολή του %1\n\n; *** \"Setup Needs the Next Disk\" stuff\nChangeDiskTitle=Ο Οδηγός Εγκατάστασης χρειάζεται τον επόμενο δίσκο\nSelectDiskLabel2=Παρακαλώ, εισάγετε τον δίσκο %1 και πατήστε ΟΚ.%n%nΕάν τα αρχεία αυτού του δίσκου βρίσκονται σε φάκελο διαφορετικό από αυτόν που εμφανίζεται παρακάτω, πληκτρολογήστε τη σωστή διαδρομή ή πατήστε Αναζήτηση.\nPathLabel=&Διαδρομή:\nFileNotInDir2=Το αρχείο \"%1\" δε βρέθηκε στο \"%2\". Παρακαλώ εισάγετε το σωστό δίσκο ή επιλέξτε κάποιον άλλο φάκελο.\nSelectDirectoryLabel=Παρακαλώ καθορίσετε την τοποθεσία του επόμενου δίσκου.\n\n; *** Installation phase messages\nSetupAborted=Η εγκατάσταση δεν ολοκληρώθηκε.%n%nΠαρακαλώ, διορθώστε το πρόβλημα και εκτελέστε ξανά τον Οδηγό Εγκατάστασης.\nAbortRetryIgnoreSelectAction=Επιλέξτε ενέργεια\nAbortRetryIgnoreRetry=&Δοκιμή\nAbortRetryIgnoreIgnore=&Αγνόηση και συνέχεια\nAbortRetryIgnoreCancel=Ακυρώση εγκατάστασης\n\n; *** Installation status messages\nStatusClosingApplications=Κλείσιμο εφαρμογών...\nStatusCreateDirs=Δημιουργία φακέλων...\nStatusExtractFiles=Αποσυμπίεση αρχείων...\nStatusCreateIcons=Δημιουργία συντομεύσεων...\nStatusCreateIniEntries=Δημιουργία καταχωρήσεων INI...\nStatusCreateRegistryEntries=Δημιουργία καταχωρήσεων στο μητρώο...\nStatusRegisterFiles=Καταχώρηση αρχείων...\nStatusSavingUninstall=Αποθήκευση πληροφοριών απεγκατάστασης...\nStatusRunProgram=Ολοκλήρωση εγκατάστασης...\nStatusRestartingApplications=Επανεκκίνηση εφαρμογών...\nStatusRollback=Επαναφορά αλλαγών...\n\n; *** Misc. errors\nErrorInternal2=Εσωτερικό σφάλμα: %1\nErrorFunctionFailedNoCode=%1 απέτυχε\nErrorFunctionFailed=%1 απέτυχε, κωδικός %2\nErrorFunctionFailedWithMessage=%1 απέτυχε, κωδικός %2.%n%3\nErrorExecutingProgram=Δεν είναι δυνατή η εκτέλεση του αρχείου:%n%1\n\n; *** Registry errors\nErrorRegOpenKey=Σφάλμα ανάγνωσης κλειδιού μητρώου:%n%1\\%2\nErrorRegCreateKey=Σφάλμα δημιουργίας κλειδιού μητρώου:%n%1\\%2\nErrorRegWriteKey=Σφάλμα καταχώρησης κλειδιού μητρώου:%n%1\\%2\n\n; *** INI errors\nErrorIniEntry=Σφάλμα στη δημιουργία καταχώρησης INI στο αρχείο \"%1\".\n\n; *** File copying errors\nFileAbortRetryIgnoreSkipNotRecommended=&Παράλειψη αυτού του αρχείου (δεν συνιστάται)\nFileAbortRetryIgnoreIgnoreNotRecommended=Παράλειψη σφάλματος και &συνέχεια (δεν συνιστάται)\nSourceIsCorrupted=Το αρχείο προέλευσης είναι κατεστραμμένο\nSourceDoesntExist=Το αρχείο προέλευσης \"%1\" δεν υπάρχει\nExistingFileReadOnly2=Το υπάρχον αρχείο δεν μπόρεσε να αντικατασταθεί επειδή είναι μόνο για ανάγνωση.\nExistingFileReadOnlyRetry=&Καταργήστε το χαρακτηριστικό μόνο για ανάγνωση και δοκιμάστε ξανά\nExistingFileReadOnlyKeepExisting=&Διατηρήστε το υπάρχον αρχείο\nErrorReadingExistingDest=Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανάγνωσης του υπάρχοντος αρχείου:\nFileExistsSelectAction=Επιλέξτε ενέργεια\nFileExists2=Το αρχείο υπάρχει ήδη.\nFileExistsOverwriteExisting=&Αντικατάσταση υπάρχοντος αρχείου\nFileExistsKeepExisting=&Διατήρηση υπάρχοντος αρχείου\nFileExistsOverwriteOrKeepAll=&Να γίνει το ίδιο για τις επόμενες διενέξεις\nExistingFileNewerSelectAction=Επιλέξτε ενέργεια\nExistingFileNewer2=Το υπάρχον αρχείο είναι νεότερο από αυτό που προσπαθεί να εγκαταστήσει ο Οδηγός Εγκατάστασης.\nExistingFileNewerOverwriteExisting=&Αντικατάσταση υπάρχοντος αρχείου\nExistingFileNewerKeepExisting=&Διατήρηση υπάρχοντος αρχείου (συνιστάται)\nExistingFileNewerOverwriteOrKeepAll=&Να γίνει το ίδιο για τις επόμενες διενέξεις\nErrorChangingAttr=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αλλαγής των χαρακτηριστικών του υπάρχοντος αρχείου:\nErrorCreatingTemp=Παρουσιάστηκε σφάλμα κατά την προσπάθεια δημιουργίας ενός αρχείου στον φακέλο προορισμού:\nErrorReadingSource=Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανάγνωσης του αρχείου προέλευσης:\nErrorCopying=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αντιγραφής ενός αρχείου:\nErrorReplacingExistingFile=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αντικατάστασης του υπάρχοντος αρχείου:\nErrorRestartReplace=Η ΕπανεκκίνησηΑντικατάσταση απέτυχε:\nErrorRenamingTemp=Παρουσιάστηκε σφάλμα κατά την προσπάθεια μετονομασίας ενός αρχείου στον φακέλο προορισμού:\nErrorRegisterServer=Δεν είναι δυνατή η καταχώριση του DLL/OCX: %1\nErrorRegSvr32Failed=Το RegSvr32 απέτυχε με κωδικό εξόδου %1\nErrorRegisterTypeLib=Δεν είναι δυνατή η καταχώριση της βιβλιοθήκης τύπων: %1\n\n; *** Uninstall display name markings\n; used for example as 'My Program (32-bit)'\nUninstallDisplayNameMark=%1 (%2)\n; used for example as 'My Program (32-bit, All users)'\nUninstallDisplayNameMarks=%1 (%2, %3)\nUninstallDisplayNameMark32Bit=32-bit\nUninstallDisplayNameMark64Bit=64-bit\nUninstallDisplayNameMarkAllUsers=Ολοι οι χρήστες\nUninstallDisplayNameMarkCurrentUser=Τρέχων χρήστης\n\n; *** Post-installation errors\nErrorOpeningReadme=Παρουσιάστηκε σφάλμα κατά την προσπάθεια ανοίγματος του αρχείου README.\nErrorRestartingComputer=Ο Οδηγός Εγκατάστασης δεν μπόρεσε να κάνει επανεκκίνηση του υπολογιστή. Παρακαλώ επανεκκινήσετε τον υπολογιστή μόνοι σας.\n\n; *** Uninstaller messages\nUninstallNotFound=Το αρχείο \"%1\" δεν υπάρχει. Δεν είναι δυνατή η απεγκατάσταση.\nUninstallOpenError=Το αρχείο \"%1\" δεν ήταν δυνατό να ανοίξει. Δεν είναι δυνατή η απεγκατάσταση\nUninstallUnsupportedVer=Το αρχείο καταγραφής απεγκατάστασης \"%1\" είναι σε μορφή που δεν αναγνωρίζεται από αυτήν την έκδοση του Οδηγού Απεγκατάστασης. Δεν ήταν δυνατή η απεγκατάσταση\nUninstallUnknownEntry=Μια άγνωστη καταχώρηση (%1) εντοπίστηκε στο αρχείο καταγραφής απεγκατάστασης\nConfirmUninstall=Είστε βέβαιοι ότι θέλετε να καταργήσετε εντελώς το %1 και όλα τα στοιχεία του;\nUninstallOnlyOnWin64=Αυτή η εγκατάσταση μπορεί να απεγκατασταθεί μόνο σε Windows 64-bit.\nOnlyAdminCanUninstall=Αυτή η εγκατάσταση μπορεί να απεγκατασταθεί μόνο από χρήστη με δικαιώματα διαχειριστή.\nUninstallStatusLabel=Παρακαλώ περιμένετε μέχρι να καταργηθεί το %1 από τον υπολογιστή σας.\nUninstalledAll=Το %1 αφαιρέθηκε με επιτυχία από τον υπολογιστή σας.\nUninstalledMost=Το %1 αφαιρέθηκε με επιτυχία.%n%nΟρισμένα στοιχεία δεν ήταν δυνατό να καταργηθούν. Αυτά μπορούν να αφαιρεθούν από εσάς.\nUninstalledAndNeedsRestart=Για να ολοκληρώσετε την απεγκατάσταση του %1, ο υπολογιστής σας πρέπει να επανεκκινηθεί.%n%nΘα θέλατε να κάνετε επανεκκίνηση τώρα;\nUninstallDataCorrupted=Το \"%1\" αρχείο είναι κατεστραμμένο. Δεν ήταν δυνατή η απεγκατάσταση\n\n; *** Uninstallation phase messages\nConfirmDeleteSharedFileTitle=Κατάργηση Κοινόχρηστου Αρχείου;\nConfirmDeleteSharedFile2=Το σύστημα υποδεικνύει ότι το ακόλουθο κοινόχρηστο αρχείο δεν χρησιμοποιείται πλέον από κανένα πρόγραμμα. Θέλετε να καταργηθεί αυτό το κοινόχρηστο αρχείο;%n%nΕάν κάποιο πρόγραμμα εξακολουθεί να το χρησιμοποιεί, ενδέχεται να μην λειτουργήσει σωστά. Εάν δεν είστε βέβαιοι, επιλέξτε Όχι. Αφήνοντάς το στο σύστημά σας δεν θα προκληθεί καμία ζημιά.\nSharedFileNameLabel=Όνομα Αρχείου:\nSharedFileLocationLabel=Τοποθεσία:\nWizardUninstalling=Πρόοδος Απεγκατάστασης\nStatusUninstalling=Απεγκατάσταση %1...\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=Εγκατάσταση του %1.\nShutdownBlockReasonUninstallingApp=Απεγκατάσταση του %1.\n\n; The custom messages below aren't used by Setup itself, but if you make\n; use of them in your scripts, you'll want to translate them.\n\n[CustomMessages]\n\nNameAndVersion=%1 έκδοση %2\nAdditionalIcons=Επιπλέον συντομεύσεις:\nCreateDesktopIcon=Δημιουργία συντόμευσης στην &επιφάνεια εργασίας\nCreateQuickLaunchIcon=Δημιουργία συντόμευσης στη &Γρήγορη Εκκίνηση\nProgramOnTheWeb=Το %1 στο Internet\nUninstallProgram=Απεγκατάσταση του %1\nLaunchProgram=Εκκίνηση του %1\nAssocFileExtension=&Συσχέτιση του %1 με την επέκταση αρχείου %2 \nAssocingFileExtension=Γίνεται συσχέτιση του %1 με την επέκταση αρχείου \"%2\"...\nAutoStartProgramGroupDescription=Εκκίνηση:\nAutoStartProgram=Αυτόματη εκκίνηση του %1\nAddonHostProgramNotFound=Το %1 δε βρέθηκε στο φάκελο που επιλέξατε.%n%nΘέλετε να συνεχίσετε παρόλα αυτά;\n\n"
  },
  {
    "path": "InnoDependencies/Latvian.isl",
    "content": "﻿; *** Inno Setup version 6.1.0+ Latvian messages ***\n;\n; Translated from English by Zorgaats, zorgaats@gmail.com\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n\n[LangOptions]\nLanguageName=Latviski\nLanguageID=$0426\nLanguageCodePage=1257\n\n[Messages]\n\n; *** Application titles\nSetupAppTitle=Uzstādīšana\nSetupWindowTitle=Uzstādīšana — %1\nUninstallAppTitle=Noņemšana\nUninstallAppFullTitle=Noņemšana — %\n\n; *** Misc. common\nInformationTitle=Informācija\nConfirmTitle=Apstiprināt\nErrorTitle=Kļūda\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=Tiks uzstādīta programma %1 uz Jūsu datora. Vai vēlaties turpināt?\nLdrCannotCreateTemp=Neiespējami izveidot pagaidu datnes. Uzstādīšana pārtraukta\nLdrCannotExecTemp=Neiespējami palaist datni no pagaidu mapes. Uzstādīšana pārtraukta\nHelpTextNote=\n\n; *** Startup error messages\nLastErrorMessage=%1.%n%nKļūda %2: %3\nSetupFileMissing=Datne %1 nav atrodama uzstādīšanas mapē. Lūdzu izlabojiet kļūdu vai iegādājaties jaunu programmas kopiju.\nSetupFileCorrupt=Uzstādīšanas datnes ir bojātas. Lūdzu iegādājaties jaunu programmas kopiju.\nSetupFileCorruptOrWrongVer=Uzstādīšanas datnes ir bojātas vai nav savienojamas ar šo uzstādīšanas programmu. Lūdzu izlabojiet kļūdu vai iegādājaties jaunu programmas kopiju.\nInvalidParameter=Komandrinda satur nepieļaujamu parametru:%n%n%1\nSetupAlreadyRunning=Uzstādīšanas programma jau ir palaista.\nWindowsVersionNotSupported=Šī programma neatbalsta Windows versiju, kas uzstādīta uz šī datora.\nWindowsServicePackRequired=Programma pieprasa %1 Service Pack %2 vai jaunāku versiju.\nNotOnThisPlatform=Šī pragramma nevar darboties uz %1.\nOnlyOnThisPlatform=Programmu var palaist tikai uz %1.\nOnlyOnTheseArchitectures=Programmu var uzstādīt tikai uz Windows versijas ar šādu procesoru arhitektūru:%n%n%1\nWinVersionTooLowError=Programma pieprasa %1 versiju %2 vai jaunāku.\nWinVersionTooHighError=Programmu nevar uzstādīt uz %1 versijas %2 vai jaunākas.\nAdminPrivilegesRequired=Jums ir jābūt administratoram, lai varētu uzsākt uzstādīšanu.\nPowerUserPrivilegesRequired=Jums ir jābūt administratoram vai pilnvarotam lietotājam, lai uzstādītu šo programmu.\nSetupAppRunningError=Ir atrasts palaists eksemplārs %1.%n%nLūdzu,aizveriet visas programmas un spiediet \"Ok\" lai turpinātu vai \"Atcelt\", lai izietu.\nUninstallAppRunningError=Noņemšana ir atklājusi, ka darbojas eksemplārs %1.%n%nLūdzu,aizveriet visas programmas un spiediet \"Ok\" lai turpinātu vai \"Atcelt\", lai izietu.\n\n; *** Startup questions\nPrivilegesRequiredOverrideTitle=Uzstādīšanas režīma izvēle\nPrivilegesRequiredOverrideInstruction=Izvēlieties uzstādīšanas režīmu\nPrivilegesRequiredOverrideText1=%1 var tikt uzstādīts vai nu visiem lietotājiem (nepieciešamas administratora privilēģijas), vai arī tikai Jums.\nPrivilegesRequiredOverrideText2=%1 var tikt uzstādīts vai nu tikai Jums, vai arī visiem lietotājiem (nepieciešamas administratora privilēģijas).\nPrivilegesRequiredOverrideAllUsers=Uzstādīt &visiem lietotājiem\nPrivilegesRequiredOverrideAllUsersRecommended=Uzstādīt &visiem lietotājiem (rekomendējas)\nPrivilegesRequiredOverrideCurrentUser=Uzstādīt tikai &man\nPrivilegesRequiredOverrideCurrentUserRecommended=Uzstādīt tikai &man (rekomendējas)\n\n; *** Misc. errors\nErrorCreatingDir=Nevar izveidot mapi \"%1\"\nErrorTooManyFilesInDir=Neiespējami izveidot datnes mapē \"%1\", jo tā satur pārāk daudz datņu\n\n; *** Setup common messages\nExitSetupTitle=Iziet no uzstādīšanas\nExitSetupMessage=Uzstādīšana nav pabeigta. Ja Jūs tagad iziesiet, programma netiks uzstādīta.%n%nLai uzstādītu programmu, Jums būs atkal jāpalaiž uzstādīšana. %n%nIziet no uzstādīšanas?\nAboutSetupMenuItem=&Par uzstādīšanu...\nAboutSetupTitle=Par uzstādīšanu\nAboutSetupMessage=%1, varsija %2%n%3%n%n%1mājas lapa:%n%4\nAboutSetupNote=\nTranslatorNote=Latvian translation by Zorgaats\n\n; *** Buttons\nButtonBack=< &Atpakaļ\nButtonNext=&Tālāk >\nButtonInstall=&Uzstādīt\nButtonOK=OK\nButtonCancel=Atcelt\nButtonYes=&Jā\nButtonYesToAll=Jā &Visam\nButtonNo=&Nē\nButtonNoToAll=Nē V&isam\nButtonFinish=&Pabeigt\nButtonBrowse=Pā&rlūkot...\nButtonWizardBrowse=Pārlū&kot...\nButtonNewFolder=I&zveidot jaunu mapi\n\n; *** \"Select Language\" dialog messages\nSelectLanguageTitle=Izvēlieties uzstādīšanas valodu\nSelectLanguageLabel=Izvēlieties valodu, kurā notiks uzstādīšana:\n\n; *** Common wizard text\nClickNext=Spiediet \"Tālāk\", lai turpinātu, vai \"Atcelt\", lai izietu no uzstādīšanas.\nBeveledLabel=\nBrowseDialogTitle=Pārlūkot mapi\nBrowseDialogLabel=Izvēlieties mapi no saraksta, tad spiediet \"Ok\".\nNewFolderName=Jauna mape\n\n; *** \"Welcome\" wizard page\nWelcomeLabel1=Вас приветствует Мастер установки [name]\nWelcomeLabel2=Programma uzstādīs [name/ver] uz Jūsu datora.%n%nPirms uzstādīšanas vēlams aizvērt visas programmas.\n\n; *** \"Password\" wizard page\nWizardPassword=Parole\nPasswordLabel1=Uzstādīšana ir aizsargāta ar paroli.\nPasswordLabel3=Lūdzu, ievadiet paroli, tad spiediet \"Tālāk\", lai turpinātu. Parole ir reģistrjūtīga.\nPasswordEditLabel=&Parole:\nIncorrectPassword=Jūsu ievadītā parole ir nepareiza. Lūdzu, mēģiniet vēlreiz.\n\n; *** \"License Agreement\" wizard page\nWizardLicense=Licence\nLicenseLabel=Lūdzu, izlasiet sekojošo informāciju, pirms turpināt.\nLicenseLabel3=Lūdzu, izlasiet Līgumu. Jums ir jāapstiprina Līgums, lai turpinātu uzstādīšanu.\nLicenseAccepted=Es &piekrītu līgumam\nLicenseNotAccepted=Es &nepiekrītu līgumam\n\n; *** \"Information\" wizard pages\nWizardInfoBefore=Informācija\nInfoBeforeLabel=Lūdzu, izlasiet šo informāciju.\nInfoBeforeClickLabel=Kad esat gatavs turpināt uzstādīšanu, spiediet \"Tālāk\".\nWizardInfoAfter=Informācija\nInfoAfterLabel=Lūdzu, izlasiet šo informāciju.\nInfoAfterClickLabel=Kad esat gatavs turpināt uzstādīšanu, spiediet \"Tālāk\".\n\n; *** \"User Information\" wizard page\nWizardUserInfo=Lietotāja informācija\nUserInfoDesc=Lūdzu, ievadiet datus par sevi.\nUserInfoName=&Lietotāja vārds:\nUserInfoOrg=&Organizācija:\nUserInfoSerial=&Sērijas numurs:\nUserInfoNameRequired=Jums ir jāievada savs vārds.\n\n; *** \"Select Destination Location\" wizard page\nWizardSelectDir=Uzstādīšanas mapes izvēle\nSelectDirDesc=Kur [name] tiks instalēts?\nSelectDirLabel3=[name] datnes tiks instalētas norādītajā mapē.\nSelectDirBrowseLabel=Lai turpinātu, spiediet \"Tālāk\". Ja vēlaties norādīt citu mapi, spiediet \"Pārlūkot\".\nDiskSpaceGBLabel=Ir nepieciešami brīvi [gb] GB uz cietā diska.\nDiskSpaceMBLabel=Ir nepieciešami brīvi [mb] MB uz cietā diska.\nCannotInstallToNetworkDrive=Uzstādīšana nevar tikt veikta uz tīkla diska.\nCannotInstallToUNCPath=Uzstādīšana nevar tikt veikta mapē pa UNC-adresi.\nInvalidPath=Jums ir jānorāda pilna uzstādīšanas adrese, piemērs:%n%nC:\\APP%n%nvai UNC adrese:%n%n\\\\server\\share\nInvalidDrive=Disks vai tīkla adrese, kuru Jūs izvēlējāties, nepastāv vai arī nav pieejams. Lūdzu, izvēlieties citu.\nDiskSpaceWarningTitle=Nepietiek vietas uz diska\nDiskSpaceWarning=Uzstādīšanai ir nepieciešami vismaz %1 KB brīvas vietas uz diska, bet pieejami ir tikai %2 KB.%n%nVai vēlaties turpināt?\nDirNameTooLong=Mapes nosaukums vai adrese ir pārāk gara.\nInvalidDirName=Mapes nosaukums nav derīgs.\nBadDirName32=Mapes nosaukumā nedrīkst būt šādi simboli: %n%n%1\nDirExistsTitle=Mape jau pastāv.\nDirExists=Mape:%n%n%1%n%njau pastāv. Vai vienalga vēlaties turpināt?\nDirDoesntExistTitle=Mape nepastāv\nDirDoesntExist=Mape%n%n%1%n%nnepastāv. Vai vēlaties to izveidot?\n\n; *** \"Select Components\" wizard page\nWizardSelectComponents=Izvēlieties sastāvdaļas\nSelectComponentsDesc=Kurus komponentus vēlaties uzstādīt?\nSelectComponentsLabel2=Izvēlieties komponentus, kurus vēlaties uzstādīt. Spiediet \"Tālāk\", lai turpinātu.\nFullInstallation=Pilna uzstādīšana\n; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)\nCompactInstallation=Kompakta uzstādīšana\nCustomInstallation=Izveidot uzstādīšanu\nNoUninstallWarningTitle=Komponenti jau pastāv\nNoUninstallWarning=Uzstādīšana ir atklājusi, ka šādi komponenti jau ir uzstādīti:%n%n%1%n%nŠo komponentu uzstādīšanas atcelšana neizdzēsīs tos.%n%nVai turpināt?\nComponentSize1=%1 Кб\nComponentSize2=%1 Мб\nComponentsDiskSpaceGBLabel=Pašlaik izvēlētie komponenti aizņem [gb] GB uz cietā diska.\nComponentsDiskSpaceMBLabel=Pašlaik izvēlētie komponenti aizņem [mb] MB uz cietā diska.\n\n; *** \"Select Additional Tasks\" wizard page\nWizardSelectTasks=Papilduzdevumu izvēlne\nSelectTasksDesc=Kurus papilduzdevumus vajadzētu veikt?\nSelectTasksLabel2=Izvēlieties, kādi papilduzdevumi tiks veikti [name] uzstādīšanas laikā, tad spiediet \"Tālāk\".\n\n; *** \"Select Start Menu Folder\" wizard page\nWizardSelectProgramGroup=Izvēlieties Start Menu mapi\nSelectStartMenuFolderDesc=Kur uzstādīšanas programmai vajadzētu likt īsinājumikonas?\nSelectStartMenuFolderLabel3=Uzstādīšana izveidos īsinājumikonas Start Menu mapē.\nSelectStartMenuFolderBrowseLabel=Lai turpinātu, spiediet \"Tālāk\". Ja vēlaties norādīt citu mapi, spiediet \"Pārlūkot\".\nMustEnterGroupName=Jums ir jānorāda mape.\nGroupNameTooLong=Mapes nosaukums ir pārāk garš.\nInvalidGroupName=Mape nav derīga.\nBadGroupName=Mapes nosaukums satur kādu no šiem simboliem:%n%n%1\nNoProgramGroupCheck2=&Neizveidot Start Menu mapi\n\n; *** \"Ready to Install\" wizard page\nWizardReady=Gatavs uzstādīšanai\nReadyLabel1=Uzstādīšana ir gatava instalēt [name] uz Jūsu datora.\nReadyLabel2a=Spiediet \"Uzstādīt\", lai sāktu uzstādīšanu, vai spiediet \"Atpakaļ\", lai izmainītu parametrus.\nReadyLabel2b=Spiediet \"Uzstādīt\", lai sāktu uzstādīšanu.\nReadyMemoUserInfo=Lietotāja informācija:\nReadyMemoDir=Galamēķis:\nReadyMemoType=Uzstādīšanas tips:\nReadyMemoComponents=Izvēlētie komponenti:\nReadyMemoGroup=Start Menu mape:\nReadyMemoTasks=Papilduzdevumi:\n\n; *** TDownloadWizardPage wizard page and DownloadTemporaryFile\nDownloadingLabel=Papildus datņu lejupielāde...\nButtonStopDownload=&Pārtraukt ielādi\nStopDownload=Jūs tiešām vēlaties pārtraukt lejupielādi?\nErrorDownloadAborted=Lejupielāde pārtraukta\nErrorDownloadFailed=Lejupielādes kļūda: %1 %2\nErrorDownloadSizeFailed=Izmēra kļūda: %1 %2\nErrorFileHash1=Ошибка хэша файла: %1\nErrorFileHash2=Неверный хэш файла: ожидался %1, получен %2\nErrorProgress=Izpildes kļūda: %1 из %2\nErrorFileSize=Kļūdains faila izmērs: tika gaidīts %1, iegūts %2\n\n; *** \"Preparing to Install\" wizard page\nWizardPreparing=Gatavoties uzstādīšanai\nPreparingDesc=Uzstādīšana ir gatava instalēt [name] uz Jūsu datora.\nPreviousInstallNotCompleted=Uzstādīšana/noņemšana iepriekšējai programmai nav pabeigta. Jums ir jāpārstartē dators, lai pabeigtu uzstādīšanu.%n%nPēc pārstartēšanas palaidiet uzstādīšanu no jauna, lai pabeigtu uzstādīt [name].\nCannotContinue=Uzstādīšanu nevar turpināt. Lūdzu, spiediet \"Atcelt\", lai izietu.\nApplicationsFound=Sekojošas programmas izmanto datnes, kuras uzstādīšanai jāatjauno. Rekomendējas uzstādīšanai atļaut automātiski aizvērt šīs programmas.\nApplicationsFound2=Sekojošas programmas izmanto datnes, kuras uzstādīšanai jāatjauno. Rekomendējas uzstādīšanai atļaut automātiski aizvērt šīs programmas. Kad instalācija būs pabeigta, uzstādīšana mēģinās tās atkal palaist.\nCloseApplications=&Automātiski aizvērt šīs programmas\nDontCloseApplications=&Neaizvērt šīs programmas\nErrorCloseApplications=Uzstādīšanai neizdevās automātiski aizvērt visas programmas.Pirms uzstādīšanas rekomendējas aizvērt visas programmas, kas izmanto atjaunināmās datnes.\nPrepareToInstallNeedsRestart=Uzstādīšanai nepieciešams pārstartēt Jūsu datoru. Kad dators pārstartēsies, lūdzu, palaidiet uzstādīšanas programmu vēlreiz, lai pabeigtu uzstādīšanu [name].%n%nVeikt pārstartēšanu tūlīt?\n\n; *** \"Installing\" wizard page\nWizardInstalling=Uzstādīšana...\nInstallingLabel=Lūdzu, uzgaidiet, kamēr [name] tiks uzstādīts uz Jūsu datora.\n\n; *** \"Setup Completed\" wizard page\nFinishedHeadingLabel=Pabeigta [name] uzstādīšana\nFinishedLabelNoIcons=Uzstādīšana pabeigta.\nFinishedLabel=Programma [name] ir uzstādīta uz Jūsu datora. Programmu var palaist, uzklikšķinot uz izveidotajām ikonām.\nClickFinish=Spiediet \"Pabeigt\", lai aizvērtu uzstādīšanu.\nFinishedRestartLabel=Lai pabeigtu [name] uzstādīšanu, nepieciešams pārstartēt Jūsu datoru. Vai vēlaties to darīt tagad?\nFinishedRestartMessage=Lai pabeigtu [name] uzstādīšanu, nepieciešams pārstartēt Jūsu datoru.%n%nVai vēlaties to darīt tagad?\nShowReadmeCheck=Jā, vēlos apskatīt README failu\nYesRadio=&Jā, pārstartēt datoru tagad\nNoRadio=&Nē, datoru pārstartēšu vēlāk\n; used for example as 'Run MyProg.exe'\nRunEntryExec=Palaist %1\n; used for example as 'View Readme.txt'\nRunEntryShellExec=Apskatīt %1\n\n; *** \"Setup Needs the Next Disk\" stuff\nChangeDiskTitle=Uzstādīšanai ir nepieciešams nākamais disks\nSelectDiskLabel2=Lūdzu, ielieciet %1 disku un spiediet \"Ok\".%n%nJa datne ir atrodama uz šī paša diska kādā citā mapē, norādiet tās atrašanās vietu vai spiediet \"Pārlūkot\", lai to norādītu.\nPathLabel=&Ceļš:\nFileNotInDir2=Datne \"%1\" neatrodas \"%2\". Lūdzu, ielieciet pareizo disku vai norādiet pareizo mapi.\nSelectDirectoryLabel=Lūdzu, norādiet nākamā diska atrašanās vietu.\n\n; *** Installation phase messages\nSetupAborted=Uzstādīšana netika pabeigta.%n%nLūdzu, izlabojiet kļūdu un palaidiet uzstādīšanu no jauna.\nAbortRetryIgnoreSelectAction=Izvēlieties darbību\nAbortRetryIgnoreRetry=Mēģināt no &jauna\nAbortRetryIgnoreIgnore=&Ignorēt kļūdu un turpināt\nAbortRetryIgnoreCancel=Pārtraukt uzstādīšanu\n\n; *** Installation status messages\nStatusClosingApplications=Programmu aizvēršana...\nStatusCreateDirs=Mapju izveidošana...\nStatusExtractFiles=Datņu kopēšana...\nStatusCreateIcons=Īsinājumikonu izveidošana...\nStatusCreateIniEntries=Izveido INI ierakstu...\nStatusCreateRegistryEntries=Izveido reģistra ierakstus...\nStatusRegisterFiles=Reģistrē datnes...\nStatusSavingUninstall=Saglabā noņemšanas datus...\nStatusRunProgram=Pabeidz uzstādīšanu...\nStatusRestartingApplications=Programmu restartēšana...\nStatusRollback=Izmaiņu atiestatīšana...\n\n; *** Misc. errors\nErrorInternal2=Iekšēja kļūda: %1\nErrorFunctionFailedNoCode=%1: cieta neveiksmi\nErrorFunctionFailed=%1: cieta neveiksmi; kods %2\nErrorFunctionFailedWithMessage=%1: cieta neveiksmi; kods %2.%n%3\nErrorExecutingProgram=Nespēju palaist failu:%n%1\n\n; *** Registry errors\nErrorRegOpenKey=Kļūda, atverot reģistra atslēgu:%n%1\\%2\nErrorRegCreateKey=Kļūda, izveidojot reģistra atslēgu:%n%1\\%2\nErrorRegWriteKey=Kļūda, rakstot reģistra atslēgu:%n%1\\%2\n\n; *** INI errors\nErrorIniEntry=Kļūda, izveidojot INI ieraksta datni \"%1\".\n\n; *** File copying errors\nFileAbortRetryIgnoreSkipNotRecommended=I&zlaist šo failu (nerekomendējas)\nFileAbortRetryIgnoreIgnoreNotRecommended=&Ignorēt kļūdu un turpināt (nerekomendējas)\nSourceIsCorrupted=Datnes avots ir bojāts\nSourceDoesntExist=Datnes avots \"%1\" nepastāv\nExistingFileReadOnly2=Nevar aizstāt esošo failu, tā kā tas ir iezīmēts kā \"read only\".\nExistingFileReadOnlyRetry=&Dzēst atribūtu \"read only\" un atkārtot mēģinājumu\nExistingFileReadOnlyKeepExisting=&Paturēt esošo failu\nErrorReadingExistingDest=Kļūda, mēģinot lasīt pastāvošo failu:\nFileExistsSelectAction=Izvēlieties darbību\nFileExists2=Fails jau pastāv.\nFileExistsOverwriteExisting=&Aizstāt esošo failu\nFileExistsKeepExisting=&Saglabāt esošo failu\nFileExistsOverwriteOrKeepAll=A&tkārtot darbību visiem turpmākajiem konfliktiem\nExistingFileNewerSelectAction=Izvēlieties darbību\nExistingFileNewer2=Esošais fails ir jaunāks nekā uzstādāmais.\nExistingFileNewerOverwriteExisting=&Aizstāt esošo failu\nExistingFileNewerKeepExisting=&Saglabāt esošo failu (rekomendējas)\nExistingFileNewerOverwriteOrKeepAll=A&tkārtot darbību visiem turpmākajiem konfliktiem\nErrorChangingAttr=Radusies kļūda, mēģinot nomainīt datnes īpašību:\nErrorCreatingTemp=Radusies kļūda, izveidojot datni galamērķa mapē:\nErrorReadingSource=Radusies kļūda, nolasot datni:\nErrorCopying=Radusies kļūda, pārkopējot datni:\nErrorReplacingExistingFile=Radusies kļūda, pārrakstot jau pastāvošo datni:\nErrorRestartReplace=Atkārtota aizstāšana cietusi neveiksmi:\nErrorRenamingTemp=Radusies kļūda, nomainot nosaukumu datnei galamērķa mapē:\nErrorRegisterServer=Neiespējami reģistrēt DLL/OCX: %1\nErrorRegSvr32Failed=Kļūda, palaižot RegSvr32, kods %1\nErrorRegisterTypeLib=Neiespējami reģistrēt tipa bibliotēku: %1\n\n; *** Uninstall display name markings\nUninstallDisplayNameMark=%1 (%2)\nUninstallDisplayNameMarks=%1 (%2, %3)\nUninstallDisplayNameMark32Bit=32 biti\nUninstallDisplayNameMark64Bit=64 biti\nUninstallDisplayNameMarkAllUsers=Visi lietotāji\nUninstallDisplayNameMarkCurrentUser=Tekošais lietotājs\n\n; *** Post-installation errors\nErrorOpeningReadme=Radusies kļūda, atverot README datni.\nErrorRestartingComputer=Uzstādīšana nevar pārstartēt datoru. Lūdzu, izdariet to manuāli.\n\n; *** Uninstaller messages\nUninstallNotFound=Datne \"%1\" nepastāv. Nevar noņemt.\nUninstallOpenError=Datni \"%1\" nevar atvērt. Nevar noņemt\nUninstallUnsupportedVer=Noņemšanas datne \"%1\" nav atpazīstama šai noņemšanas programmai. Nevar noņemt\nUninstallUnknownEntry=Nezināms ieraksts (%1) izveidoja sadursmi ar noņemšanu\nConfirmUninstall=Vai esat pārliecināts, ka vēlaties pilnībā noņemt %1 un visus tā komponentus?\nUninstallOnlyOnWin64=Noņemšanu var veikt tikai ar 64-bitu Windows.\nOnlyAdminCanUninstall=Noņemšanu var veikt tikai lietotājs ar Adminstratora privilēģijām.\nUninstallStatusLabel=Lūdzu uzgaidiet, kamēr %1 tiek noņemts no Jūsu datora.\nUninstalledAll=%1 tika veiksmīgi noņemts no Jūsu datora.\nUninstalledMost=%1 noņemšana pabeigta.%n%nDažus elementus nevarēja noņemt. Tos var noņemt manuāli.\nUninstalledAndNeedsRestart=Lai pabeigtu %1 noņemšanu, Jūsu dators jāpārstartē.%n%nVai vēlaties to darīt tagad?\nUninstallDataCorrupted=\"%1\" datne ir bojāta. Nevar noņemt\n\n; *** Uninstallation phase messages\nConfirmDeleteSharedFileTitle=Noņemt kopīgo datni?\nConfirmDeleteSharedFile2=Sistēma ir secinājusi, ka šī koplietošanas datne vairs netiks lietota. Vai vēlaties to noņemt?%n%nJa kāda cita programma izmanto šo datni, tad šī programma var strādāt nekorekti. Ja neesat drošs, izvēlieties \"Nē\". Atstājot šo datni, Jūsu datoram netiks nodarīti nekādi bojājumi.\nSharedFileNameLabel=Faila nosaukums:\nSharedFileLocationLabel=Atrašanās vieta:\nWizardUninstalling=Noņemšanas statuss\nStatusUninstalling=Noņem %1...\n\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=%1 uzstādīšana.\nShutdownBlockReasonUninstallingApp=%1 noņemšana.\n\n; The custom messages below aren't used by Setup itself, but if you make\n; use of them in your scripts, you'll want to translate them.\n\n[CustomMessages]\n\nNameAndVersion=%1, versija %2\nAdditionalIcons=Papildu ikonas:\nCreateDesktopIcon=Izveidot &darbvisrmas ikonu\nCreateQuickLaunchIcon=Izveidot &Quick Launch ikonu\nProgramOnTheWeb=%1 vietne Internetā\nUninstallProgram=Noņemt %1\nLaunchProgram=Palaist %1\nAssocFileExtension=&Apvienot %1 ar %2 faila paplašinājumu\nAssocingFileExtension=Apvieno %1 ar %2 faila paplašinājumu...\nAutoStartProgramGroupDescription=Automātiskā palaišana:\nAutoStartProgram=Automātiski palaist %1\nAddonHostProgramNotFound=%1 nav atrasts Jūsu norādītajā mapē.%n%nTomēr turpināt?\n"
  },
  {
    "path": "InnoDependencies/Romanian.isl",
    "content": "; *** Inno Setup version 5.5.3+ Romanian messages ***\n; Translator : Alexandru Bogdan Munteanu (muntealb@gmail.com)\n;\n; To download user-contributed translations of this file, go to:\n;   http://www.jrsoftware.org/files/istrans/\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n\n[LangOptions]\n; The following three entries are very important. Be sure to read and \n; understand the '[LangOptions] section' topic in the help file.\nLanguageName=Rom<00E2>n<0103>\nLanguageID=$0418\nLanguageCodePage=1250\n; If the language you are translating to requires special font faces or\n; sizes, uncomment any of the following entries and change them accordingly.\n;DialogFontName=\n;DialogFontSize=8\n;WelcomeFontName=Verdana\n;WelcomeFontSize=12\n;TitleFontName=Arial\n;TitleFontSize=29\n;CopyrightFontName=Arial\n;CopyrightFontSize=8\n\n[Messages]\n\n; *** Application titles\nSetupAppTitle=Instalare\nSetupWindowTitle=Instalare - %1\nUninstallAppTitle=Dezinstalare\nUninstallAppFullTitle=Dezinstalare %1\n\n; *** Misc. common\nInformationTitle=Informaii\nConfirmTitle=Confirmare\nErrorTitle=Eroare\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=Va fi instalat programul %1. Vrei s continui?\nLdrCannotCreateTemp=Nu pot crea o fil temporar. Instalare abandonat\nLdrCannotExecTemp=Nu pot executa o fil din dosarul temporar. Instalare abandonat\n\n; *** Startup error messages\nLastErrorMessage=%1.%n%nEroarea %2: %3\nSetupFileMissing=Fila %1 lipsete din dosarul de instalare. Corecteaz problema sau folosete o alt copie a programului.\nSetupFileCorrupt=Filele de instalare snt stricate (corupte). Folosete o alt copie a programului.\nSetupFileCorruptOrWrongVer=Filele de instalare snt stricate (corupte) sau snt incompatibile cu aceast versiune a Instalatorului. Remediaz problema sau folosete o alt copie a programului.\nInvalidParameter=Un parametru invalid a fost trecut ctre linia de comand:%n%n%1\nSetupAlreadyRunning=Instalarea ruleaz deja.\nWindowsVersionNotSupported=Acest program nu suport versiunea de Windows care ruleaz pe calculatorul tu.\nWindowsServicePackRequired=Acest program necesit %1 Service Pack %2 sau mai nou.\nNotOnThisPlatform=Acest program nu va rula pe %1.\nOnlyOnThisPlatform=Acest program trebuie s ruleze pe %1.\nOnlyOnTheseArchitectures=Acest program poate fi instalat doar pe versiuni de Windows proiectate pentru urmtoarele arhitecturi de procesor:%n%n%1\nMissingWOW64APIs=Versiunea de Windows pe care o rulezi nu include funcionalitatea cerut de Instalator pentru a realiza o instalare pe 64-bii. Pentru a corecta problema, va trebui s instalezi Service Pack %1.\nWinVersionTooLowError=Acest program necesit %1 versiunea %2 sau mai nou.\nWinVersionTooHighError=Acest program nu poate fi instalat pe %1 versiunea %2 sau mai nou.\nAdminPrivilegesRequired=Trebuie s fii logat ca Administrator pentru instalarea acestui program.\nPowerUserPrivilegesRequired=Trebuie s fii logat ca Administrator sau ca Membru al Grupului de Utilizatori Pricepui (\"Power Users\") pentru a instala acest program.\nSetupAppRunningError=Instalatorul a detectat c %1 ruleaz n acest moment.%n%nnchide toate instanele programului respectiv, apoi clicheaz OK pentru a continua sau Anuleaz pentru a abandona instalarea.\nUninstallAppRunningError=Dezinstalatorul a detectat c %1 ruleaz n acest moment.%n%nnchide toate instanele programului respectiv, apoi clicheaz OK pentru a continua sau Anuleaz pentru a abandona dezinstalarea.\n\n; *** Misc. errors\nErrorCreatingDir=Instalatorul nu a putut crea dosarul \"%1\"\nErrorTooManyFilesInDir=Nu pot crea o fil n dosarul \"%1\" din cauz c are deja prea multe file\n\n; *** Setup common messages\nExitSetupTitle=Abandonarea Instalrii\nExitSetupMessage=Instalarea nu este terminat. Dac o abandonezi acum, programul nu va fi instalat.%n%nPoi s rulezi Instalatorul din nou alt dat pentru a termina instalarea.%n%nAbandonezi Instalarea?\nAboutSetupMenuItem=&Despre Instalator...\nAboutSetupTitle=Despre Instalator\nAboutSetupMessage=%1 versiunea %2%n%3%n%n%1 sit:%n%4\nAboutSetupNote=\nTranslatorNote=\n\n; *** Buttons\nButtonBack=< na&poi\nButtonNext=&Continu >\nButtonInstall=&Instaleaz\nButtonOK=OK\nButtonCancel=Anuleaz\nButtonYes=&Da\nButtonYesToAll=Da la &Tot\nButtonNo=&Nu\nButtonNoToAll=N&u la Tot\nButtonFinish=&Finalizeaz\nButtonBrowse=&Exploreaz...\nButtonWizardBrowse=Explo&reaz...\nButtonNewFolder=Creea&z Dosar Nou\n\n; *** \"Select Language\" dialog messages\nSelectLanguageTitle=Selectarea Limbii Instalatorului\nSelectLanguageLabel=Selecteaz limba folosit pentru instalare:\n\n; *** Common wizard text\nClickNext=Clicheaz pe Continu pentru a avansa cu instalarea sau pe Anuleaz pentru a o abandona.\nBeveledLabel=\nBrowseDialogTitle=Explorare dup Dosar\nBrowseDialogLabel=Selecteaz un dosar din lista de mai jos, apoi clicheaz pe OK.\nNewFolderName=Dosar Nou\n\n; *** \"Welcome\" wizard page\nWelcomeLabel1=Bun venit la Instalarea [name]\nWelcomeLabel2=Programul [name/ver] va fi instalat pe calculator.%n%nEste recomandat s nchizi toate celelalte aplicaii nainte de a continua.\n\n; *** \"Password\" wizard page\nWizardPassword=Parol\nPasswordLabel1=Aceast instalare este protejat prin parol.\nPasswordLabel3=Completeaz parola, apoi clicheaz pe Continu pentru a merge mai departe. Tipul literelor din parol (Majuscule/minuscule) este luat n considerare.\nPasswordEditLabel=&Parol:\nIncorrectPassword=Parola pe care ai introdus-o nu este corect. Rencearc.\n\n; *** \"License Agreement\" wizard page\nWizardLicense=Acord de Liceniere\nLicenseLabel=Citete informaiile urmtoare nainte de a continua, snt importante.\nLicenseLabel3=Citete urmtorul Acord de Liceniere. Trebuie s accepi termenii acestui acord nainte de a continua instalarea.\nLicenseAccepted=&Accept licena\nLicenseNotAccepted=&Nu accept licena\n\n; *** \"Information\" wizard pages\nWizardInfoBefore=Informaii\nInfoBeforeLabel=Citete informaiile urmtoare nainte de a continua, snt importante.\nInfoBeforeClickLabel=Cnd eti gata de a trece la Instalare, clicheaz pe Continu.\nWizardInfoAfter=Informaii\nInfoAfterLabel=Citete informaiile urmtoare nainte de a continua, snt importante.\nInfoAfterClickLabel=Cnd eti gata de a trece la Instalare, clicheaz pe Continu.\n\n; *** \"User Information\" wizard page\nWizardUserInfo=Informaii despre Utilizator\nUserInfoDesc=Completeaz informaiile cerute.\nUserInfoName=&Utilizator:\nUserInfoOrg=&Organizaie:\nUserInfoSerial=Numr de &Serie:\nUserInfoNameRequired=Trebuie s introduci un nume.\n\n; *** \"Select Destination Location\" wizard page\nWizardSelectDir=Selectarea Locului de Destinaie\nSelectDirDesc=Unde vrei s instalezi [name]?\nSelectDirLabel3=Instalatorul va pune [name] n dosarul specificat mai jos.\nSelectDirBrowseLabel=Pentru a avansa cu instalarea, clicheaz pe Continu. Dac vrei s selectezi un alt dosar, clicheaz pe Exploreaz.\nDiskSpaceMBLabel=Este necesar un spaiu liber de stocare de cel puin [mb] MB.\nCannotInstallToNetworkDrive=Instalatorul nu poate realiza instalarea pe un dispozitiv de reea.\nCannotInstallToUNCPath=Instalatorul nu poate realiza instalarea pe o cale n format UNC.\nInvalidPath=Trebuie s introduci o cale complet, inclusiv litera dispozitivului; de exemplu:%n%nC:\\APP%n%nsau o cale UNC de forma:%n%n\\\\server\\share\nInvalidDrive=Dispozitivul sau partajul UNC pe care l-ai selectat nu exist sau nu este accesibil. Selecteaz altul.\nDiskSpaceWarningTitle=Spaiu de Stocare Insuficient\nDiskSpaceWarning=Instalarea necesit cel puin %1 KB de spaiu de stocare liber, dar dispozitivul selectat are doar %2 KB liberi.%n%nVrei s continui oricum?\nDirNameTooLong=Numele dosarului sau al cii este prea lung.\nInvalidDirName=Numele dosarului nu este valid.\nBadDirName32=Numele dosarelor nu pot include unul din urmtoarele caractere:%n%n%1\nDirExistsTitle=Dosarul Exist\nDirExists=Dosarul:%n%n%1%n%nexist deja. Vrei totui s instalezi n acel dosar?\nDirDoesntExistTitle=Dosarul Nu Exist\nDirDoesntExist=Dosarul:%n%n%1%n%nnu exist. Vrei ca el s fie creat?\n\n; *** \"Select Components\" wizard page\nWizardSelectComponents=Selectarea Componentelor\nSelectComponentsDesc=Care dintre componente trebuie instalate?\nSelectComponentsLabel2=Selecteaz componentele de instalat; deselecteaz componentele care nu trebuie instalate. Clicheaz pe Continu pentru a merge mai departe.\nFullInstallation=Instalare Complet\n; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)\nCompactInstallation=Instalare Compact\nCustomInstallation=Instalare Personalizat\nNoUninstallWarningTitle=Componentele Exist\nNoUninstallWarning=Instalatorul a detectat c urmtoarele componente snt deja instalate pe calculator:%n%n%1%n%nDeselectarea lor nu le va dezinstala.%n%nVrei s continui oricum?\nComponentSize1=%1 KB\nComponentSize2=%1 MB\nComponentsDiskSpaceMBLabel=Selecia curent necesit cel puin [mb] MB spaiu de stocare.\n\n; *** \"Select Additional Tasks\" wizard page\nWizardSelectTasks=Selectarea Sarcinilor Suplimentare\nSelectTasksDesc=Ce sarcini suplimentare trebuie ndeplinite?\nSelectTasksLabel2=Selecteaz sarcinile suplimentare care trebuie ndeplinite n timpul instalrii [name], apoi clicheaz pe Continu.\n\n; *** \"Select Start Menu Folder\" wizard page\nWizardSelectProgramGroup=Selectarea Dosarului din Meniul de Start\nSelectStartMenuFolderDesc=Unde trebuie s fie plasate scurtturile programului?\nSelectStartMenuFolderLabel3=Scurtturile vor fi plasate n dosarul specificat mai jos al Meniului de Start.\nSelectStartMenuFolderBrowseLabel=Pentru a avansa cu instalarea, clicheaz pe Continu. Dac vrei s selectezi un alt dosar, clicheaz pe Exploreaz.\nMustEnterGroupName=Trebuie s introduci numele dosarului.\nGroupNameTooLong=Numele dosarului sau al cii este prea lung.\nInvalidGroupName=Numele dosarului nu este valid.\nBadGroupName=Numele dosarului nu poate include unul dintre caracterele urmtoarele:%n%n%1\nNoProgramGroupCheck2=Nu crea un &dosar n Meniul de Start\n\n; *** \"Ready to Install\" wizard page\nWizardReady=Pregtit de Instalare\nReadyLabel1=Instalatorul e pregtit pentru instalarea [name] pe calculator.\nReadyLabel2a=Clicheaz pe Instaleaz pentru a continua cu instalarea, sau clicheaz pe napoi dac vrei s revezi sau s schimbi setrile.\nReadyLabel2b=Clicheaz pe Instaleaz pentru a continua cu instalarea.\nReadyMemoUserInfo=Info Utilizator:\nReadyMemoDir=Loc de Destinaie:\nReadyMemoType=Tip de Instalare:\nReadyMemoComponents=Componente Selectate:\nReadyMemoGroup=Dosarul Meniului de Start:\nReadyMemoTasks=Sarcini Suplimentare:\n\n; *** \"Preparing to Install\" wizard page\nWizardPreparing=Pregtire pentru Instalare\nPreparingDesc=Instalatorul pregtete instalarea [name] pe calculator.\nPreviousInstallNotCompleted=Instalarea/dezinstalarea anterioar a unui program nu a fost terminat. Va trebui s reporneti calculatorul pentru a termina operaia precedent.%n%nDup repornirea calculatorului, ruleaz Instalatorul din nou pentru a realiza instalarea [name].\nCannotContinue=Instalarea nu poate continua. Clicheaz pe Anuleaz pentru a o nchide.\nApplicationsFound=Aplicaiile urmtoare folosesc file care trebuie actualizate de ctre Instalator. Este recomandat s permii Instalatorului s nchid automat aplicaiile respective.\nApplicationsFound2=Aplicaiile urmtoare folosesc file care trebuie actualizate de ctre Instalator. Este recomandat s permii Instalatorului s nchid automat aplicaiile respective. Dup ce instalarea e terminat, Instalatorul va ncerca s reporneasc aplicaiile.\nCloseApplications=nchide &automat aplicaiile\nDontCloseApplications=Nu nchi&de aplicaiile\nErrorCloseApplications=Instalatorul nu a putut nchide automat toate aplicaiile. nainte de a continua, e recomandat s nchizi manual toate aplicaiile care folosesc file ce trebuie actualizate de Instalator.\n\n; *** \"Installing\" wizard page\nWizardInstalling=Instalare n Desfurare\nInstallingLabel=Ateapt s se termine instalarea [name] pe calculator.\n\n; *** \"Setup Completed\" wizard page\nFinishedHeadingLabel=Finalizarea Instalrii [name]\nFinishedLabelNoIcons=Instalarea [name] pe calculator a fost terminat.\nFinishedLabel=Instalarea [name] pe calculator a fost terminat. Aplicaia poate fi lansat prin clicarea pe icoanele instalate.\nClickFinish=Clicheaz pe Finalizeaz pentru a prsi Instalatorul.\nFinishedRestartLabel=Pentru a termina instalarea [name], trebuie repornit calculatorul. Vrei s fie repornit acum?\nFinishedRestartMessage=Pentru a termina instalarea [name], trebuie repornit calculatorul.%n%nVrei s fie repornit acum?\nShowReadmeCheck=Da, vreau s vd fila de informare (README)\nYesRadio=&Da, repornete calculatorul acum\nNoRadio=&Nu, voi reporni eu calculatorul mai trziu\n; used for example as 'Run MyProg.exe'\nRunEntryExec=Ruleaz %1\n; used for example as 'View Readme.txt'\nRunEntryShellExec=Vezi %1\n\n; *** \"Setup Needs the Next Disk\" stuff\nChangeDiskTitle=Instalatorul Necesit Discul Urmtor\nSelectDiskLabel2=Introdu Discul %1 i clicheaz pe OK.%n%nDac filele de pe acest disc pot fi gsite ntr-un alt dosar dect cel afiat mai jos, introdu calea corect sau clicheaz pe Exploreaz.\nPathLabel=&Cale:\nFileNotInDir2=Fila \"%1\" nu poate fi gsit n \"%2\". Introdu discul corect sau selecteaz alt dosar.\nSelectDirectoryLabel=Specific locul discului urmtor.\n\n; *** Installation phase messages\nSetupAborted=Instalarea nu a fost terminat.%n%nCorecteaz problema i apoi ruleaz Instalarea din nou.\nEntryAbortRetryIgnore=Clicheaz pe Rencearc pentru a ncerca din nou, pe Ignor pentru a continua oricum, sau pe Abandoneaz pentru a anula instalarea.\n\n; *** Installation status messages\nStatusClosingApplications=nchid aplicaiile...\nStatusCreateDirs=Creez dosarele...\nStatusExtractFiles=Extrag filele...\nStatusCreateIcons=Creez scurtturile...\nStatusCreateIniEntries=Creez intrrile INI...\nStatusCreateRegistryEntries=Creez intrrile n registru...\nStatusRegisterFiles=nregistrez filele...\nStatusSavingUninstall=Salvez informaiile de dezinstalare...\nStatusRunProgram=Finalizez instalarea...\nStatusRestartingApplications=Repornesc aplicaiile...\nStatusRollback=Rentorc la starea iniial, prin anularea modificrilor fcute...\n\n; *** Misc. errors\nErrorInternal2=Eroare Intern: %1\nErrorFunctionFailedNoCode=%1 a euat\nErrorFunctionFailed=%1 a euat; cod %2\nErrorFunctionFailedWithMessage=%1 a euat; cod %2.%n%3\nErrorExecutingProgram=Nu pot executa fila:%n%1\n\n; *** Registry errors\nErrorRegOpenKey=Eroare la deschiderea cheii de registru:%n%1\\%2\nErrorRegCreateKey=Eroare la crearea cheii de registru:%n%1\\%2\nErrorRegWriteKey=Eroare la scrierea n cheia de registru:%n%1\\%2\n\n; *** INI errors\nErrorIniEntry=Eroare la crearea intrrii INI n fiierul \"%1\".\n\n; *** File copying errors\nFileAbortRetryIgnore=Clicheaz pe Rencearc pentru a ncerca din nou, pe Ignor pentru a sri aceast fil (nerecomandat), sau pe Abandoneaz pentru a anula instalarea.\nFileAbortRetryIgnore2=Clicheaz pe Rencearc pentru a ncerca din nou, pe Ignor pentru a continua oricum (nerecomandat), sau pe Abandoneaz pentru a anula instalarea.\nSourceIsCorrupted=Fila surs este stricat (corupt)\nSourceDoesntExist=Fila surs \"%1\" nu exist\nExistingFileReadOnly=Fila deja existent este marcat doar-citire.%n%nClicheaz pe Rencearc pentru a nltura atributul doar-citire i a ncerca din nou, pe Ignor pentru a sri aceast fil, sau pe Abandoneaz pentru a anula instalarea.\nErrorReadingExistingDest=A aprut o eroare n timpul citirii filei deja existente:\nFileExists=Fila exist deja.%n%Vrei ca ea s fie suprascris de Instalator?\nExistingFileNewer=Fila deja existent este mai nou dect cea care trebuie instalat. Este recomandat s-o pstrezi pe cea existent.%n%nVrei s pstrezi fila deja existent?\nErrorChangingAttr=A aprut o eroare n timpul schimbrii atributelor filei deja existente:\nErrorCreatingTemp=A aprut o eroare n timpul crerii filei n dosarul de destinaie:\nErrorReadingSource=A aprut o eroare n timpul citirii filei surs:\nErrorCopying=A aprut o eroare n timpul copierii filei:\nErrorReplacingExistingFile=A aprut o eroare n timpul nlocuirii filei deja existente:\nErrorRestartReplace=Repornirea/nlocuirea a euat:\nErrorRenamingTemp=A aprut o eroare n timpul renumirii unei file din dosarul de destinaie:\nErrorRegisterServer=Nu pot nregistra DLL/OCX: %1\nErrorRegSvr32Failed=RegSvr32 a euat, avnd codul de ieire %1\nErrorRegisterTypeLib=Nu pot nregistra biblioteca de tipuri: %1\n\n; *** Post-installation errors\nErrorOpeningReadme=A aprut o eroare la deschiderea filei de informare (README).\nErrorRestartingComputer=Instalatorul nu a putut reporni calculatorul. Va trebui s-l reporneti manual.\n\n; *** Uninstaller messages\nUninstallNotFound=Fila \"%1\" nu exist. Dezinstalarea nu poate fi fcut.\nUninstallOpenError=Fila \"%1\" nu poate fi deschis. Dezinstalarea nu poate fi fcut\nUninstallUnsupportedVer=Fila \"%1\" ce conine jurnalul de dezinstalare este ntr-un format nerecunoscut de aceast versiune a dezinstalatorului. Dezinstalarea nu poate fi fcut\nUninstallUnknownEntry=A fost ntlnit o intrare necunoscut (%1) n jurnalul de dezinstalare\nConfirmUninstall=Sigur vrei s nlturi complet %1 i componentele sale?\nUninstallOnlyOnWin64=Aceast instalare poate fi dezinstalat doar pe un sistem Windows 64-bii.\nOnlyAdminCanUninstall=Aceast instalare poate fi dezinstalat doar de ctre un utilizator cu drepturi de Administrator.\nUninstallStatusLabel=Ateapt ca %1 s fie nlturat de pe calculator.\nUninstalledAll=%1 a fost nlturat cu succes de pe calculator.\nUninstalledMost=Dezinstalare complet a %1.%n%nAnumite elemente nu au putut fi nlturate. Acestea pot fi nlturate manual.\nUninstalledAndNeedsRestart=Pentru a termina dezinstalarea %1, calculatorul trebuie repornit.%n%nVrei s fie repornit acum?\nUninstallDataCorrupted=Fila \"%1\" este stricat (corupt). Dezinstalarea nu poate fi fcut\n\n; *** Uninstallation phase messages\nConfirmDeleteSharedFileTitle=terg Fila Partajat?\nConfirmDeleteSharedFile2=Sistemul indic faptul c fila partajat urmtoare pare s nu mai fie folosit de vreun alt program. Vrei ca Dezinstalatorul s tearg aceast fil partajat?%n%nDac totui mai exist programe care folosesc fila i ea este tears, acele programe ar putea s funcioneze greit. Dac nu eti sigur, alege Nu. Lsarea filei n sistem nu va produce nici o neplcere.\nSharedFileNameLabel=Nume Fil:\nSharedFileLocationLabel=Loc:\nWizardUninstalling=Starea Dezinstalrii\nStatusUninstalling=Dezinstalez %1...\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=Instalez %1.\nShutdownBlockReasonUninstallingApp=Dezinstalez %1.\n\n; The custom messages below aren't used by Setup itself, but if you make\n; use of them in your scripts, you'll want to translate them.\n\n[CustomMessages]\n\nNameAndVersion=%1 versiunea %2\nAdditionalIcons=Icoane suplimentare:\nCreateDesktopIcon=Creeaz o icoan pe &Birou (\"Desktop\")\nCreateQuickLaunchIcon=Creeaz o icoan n Bara de &Lansare Rapid (\"Quick Launch\")\nProgramOnTheWeb=%1 pe internet\nUninstallProgram=Dezinstaleaz %1\nLaunchProgram=Lanseaz %1\nAssocFileExtension=&Asociaz %1 cu extensia de file %2\nAssocingFileExtension=Asociez %1 cu extensia de file %2...\nAutoStartProgramGroupDescription=Pornire:\nAutoStartProgram=Pornete automat %1\nAddonHostProgramNotFound=%1 nu poate fi gsit n dosarul selectat.%n%nVrei s continui oricum?\n"
  },
  {
    "path": "InnoDependencies/Vietnamese.isl",
    "content": "﻿; *** Inno Setup version 6.1.0+ Vietnamese messages ***\n; Translated by Vu Khac Hiep (email: vukhachiep@gmail.com)\n; To download user-contributed translations of this file, go to:\n;   https://jrsoftware.org/files/istrans/\n;\n; Note: When translating this text, do not add periods (.) to the end of\n; messages that didn't have them already, because on those messages Inno\n; Setup adds the periods automatically (appending a period would result in\n; two periods being displayed).\n\n[LangOptions]\n; The following three entries are very important. Be sure to read and \n; understand the '[LangOptions] section' topic in the help file.\nLanguageName=Vietnamese\nLanguageID=$042A\nLanguageCodePage=0\n; If the language you are translating to requires special font faces or\n; sizes, uncomment any of the following entries and change them accordingly.\n;DialogFontName=\n;DialogFontSize=8\n;WelcomeFontName=Verdana\n;WelcomeFontSize=12\n;TitleFontName=Arial\n;TitleFontSize=29\n;CopyrightFontName=Arial\n;CopyrightFontSize=8\n\n[Messages]\n\n; *** Application titles\nSetupAppTitle=Cài đặt\nSetupWindowTitle=Cài đặt - %1\nUninstallAppTitle=Gỡ cài đặt\nUninstallAppFullTitle=Gỡ cài đặt - %1\n\n; *** Misc. common\nInformationTitle=Thông tin\nConfirmTitle=Xác nhận\nErrorTitle=Lỗi\n\n; *** SetupLdr messages\nSetupLdrStartupMessage=Chương trình này sẽ cài đặt %1. Bạn có muốn tiếp tục không?\nLdrCannotCreateTemp=Không thể tạo tệp tạm thời. Cài đặt bị hủy bỏ\nLdrCannotExecTemp=Không thể chạy tệp trong thư mục tạm thời. Cài đặt bị hủy bỏ\nHelpTextNote=\n\n; *** Startup error messages\nLastErrorMessage=%1.%n%nLỗi %2: %3\nSetupFileMissing=Tệp %1 bị thiếu trong thư mục cài đặt. Hãy sửa lỗi hoặc lấy một bản sao mới của chương trình.\nSetupFileCorrupt=Các tệp cài đặt đã bị hỏng. Hãy sửa lỗi hoặc lấy một bản sao của chương trình.\nSetupFileCorruptOrWrongVer=Các tệp cài đặt bị hỏng, hoặc không tương thích với bản cài đặt này. Hãy sửa lỗi hoặc lấy một bản sao mới của chương trình.\nInvalidParameter=Một thông số không hợp lệ đã được đưa vào dòng lệnh:%n%n%1\nSetupAlreadyRunning=Cài đặt này đang chạy.\nWindowsVersionNotSupported=Chương trình này không tương thích với phiên bản Windows bạn đang chạy.\nWindowsServicePackRequired=Chương trình này yêu cầu %1 Service Pack %2 hoặc mới hơn.\nNotOnThisPlatform=Chương trình này sẽ không chạy trên %1.\nOnlyOnThisPlatform=Chương trình này phải chạy trên %1.\nOnlyOnTheseArchitectures=Chương trình này chỉ có thể được cài đặt trên phiên bản Windows được thiết kế cho các hệ vi xử lí:%n%n%1\nWinVersionTooLowError=Chương trình này yêu cầu %1 phiên bản %2 hoặc mới hơn.\nWinVersionTooHighError=Chương trình này không thể được cài đặt trên %1 phiên bản %2 hoặc mới hơn.\nAdminPrivilegesRequired=Bạn phải được đăng nhập như người quản trị khi cài đặt chương trình này.\nPowerUserPrivilegesRequired=Bạn phải được đăng nhập như người quản trị hoặc thành viên trong nhóm Người dùng mạnh khi cài đặt chương trình này.\nSetupAppRunningError=Cài đặt phát hiện %1 đang chạy.%n%nHãy đóng tất cả các tiến trình của nó ngay, rồi click OK để tiếp tục, hoặc Hủy để thoát.\nUninstallAppRunningError=Gỡ cài đặt phát hiện %1 đang chạy.%n%nHãy đóng tất cả các tiến trình của nó ngay, rồi click OK để tiếp tục, hoặc Hủy để thoát.\n\n; *** Startup questions\nPrivilegesRequiredOverrideTitle=Select Setup Install Mode\nPrivilegesRequiredOverrideInstruction=Select install mode\nPrivilegesRequiredOverrideText1=%1 can be installed for all users (requires administrative privileges), or for you only.\nPrivilegesRequiredOverrideText2=%1 can be installed for you only, or for all users (requires administrative privileges).\nPrivilegesRequiredOverrideAllUsers=Install for &all users\nPrivilegesRequiredOverrideAllUsersRecommended=Install for &all users (recommended)\nPrivilegesRequiredOverrideCurrentUser=Install for &me only\nPrivilegesRequiredOverrideCurrentUserRecommended=Install for &me only (recommended)\n\n; *** Misc. errors\nErrorCreatingDir=Cài đặt không thể tạo ra thư mục \"%1\"\nErrorTooManyFilesInDir=Không thể tạo một tệp trong thư mục \"%1\" vì nó chứa quá nhiều tệp\n\n; *** Setup common messages\nExitSetupTitle=Thoát cài đặt\nExitSetupMessage=Cài đặt chưa hoàn thành. Nếu bạn thoát bây giờ, chương trình sẽ không được cài đặt.%n%nBạn có thể chạy lại Cài đặt một lần khác để hoàn thành cài đặt.%n%nThoát ngay?\nAboutSetupMenuItem=&Về trình cài đặt...\nAboutSetupTitle=Về trình cài đặt\nAboutSetupMessage=%1 phiên bản %2%n%3%n%n%1 trang chủ:%n%4\nAboutSetupNote=\nTranslatorNote=Giao diện người dùng tiếng Việt bởi: Vũ Khắc Hiệp\n\n; *** Buttons\nButtonBack=< &Trước\nButtonNext=T&iếp >\nButtonInstall=&Cài đặt\nButtonOK=OK\nButtonCancel=Hủy\nButtonYes=&Có\nButtonYesToAll=Có c&ho tất cả\nButtonNo=&Không\nButtonNoToAll=Khô&ng cho tất cả\nButtonFinish=&Hoàn thành\nButtonBrowse=&Duyệt...\nButtonWizardBrowse=D&uyệt...\nButtonNewFolder=Tạ&o thư mục mới\n\n; *** \"Select Language\" dialog messages\nSelectLanguageTitle=Chọn ngôn ngữ cài đặt\nSelectLanguageLabel=Chọn ngôn ngữ để sử dụng khi cài đặt:\n\n; *** Common wizard text\nClickNext=Nhấn Tiếp để tiếp tục, hoặc Hủy để thoát cài đặt\nBeveledLabel=\nBrowseDialogTitle=Tìm thư mục\nBrowseDialogLabel=Chọn một thư mục trong danh sách sau rồi ấn OK.\nNewFolderName=Tạo thư mục mới\n\n; *** \"Welcome\" wizard page\nWelcomeLabel1=Chào mừng tới trình cài đặt [name]\nWelcomeLabel2=Chương trình này sẽ cài [name/ver] trên máy tính của bạn.%n%nChúng tôi khuyên bạn đóng mọi chương trình khác lại trước khi cài đặt.\n\n; *** \"Password\" wizard page\nWizardPassword=Mật khẩu\nPasswordLabel1=Việc cài đặt được bảo vệ bằng mật khẩu.\nPasswordLabel3=Hãy nhập mật khẩu, rồi nhấn Tiếp để tiếp tục. Mật khẩu phân biệt chữ hoa/thường.\nPasswordEditLabel=&Mật khẩu:\nIncorrectPassword=Mật khẩu bạn đã nhập không đúng. Hãy thử lại.\n\n; *** \"License Agreement\" wizard page\nWizardLicense=Thỏa thuận cấp phép\nLicenseLabel=Hãy đọc những thông tin quan trọng sau trước khi tiếp tục.\nLicenseLabel3=Hãy đọc Thỏa thuận cấp phép sau. Bạn phải chấp nhận các điều khoản của cài đặt này trước khi tiếp tục.\nLicenseAccepted=Tô&i chấp nhận thỏa thuận\nLicenseNotAccepted=Tôi khôn&g chấp nhận thỏa thuận\n\n; *** \"Information\" wizard pages\nWizardInfoBefore=Thông tin\nInfoBeforeLabel=Hãy đọc những thông tin quan trọng sau trước khi tiếp tục.\nInfoBeforeClickLabel=Khi bạn đã sẵn sàng cài đặt tiếp, click Tiếp.\nWizardInfoAfter=Thông tin\nInfoAfterLabel=Hãy đọc những thông tin quan trọng sau trước khi tiếp tục.\nInfoAfterClickLabel=Khi bạn đã sẵn sàng cài đặt tiếp, click Tiếp.\n\n; *** \"User Information\" wizard page\nWizardUserInfo=Thông tin người dùng\nUserInfoDesc=Hãy nhập thông tin của bạn.\nUserInfoName=Tên n&gười dùng:\nUserInfoOrg=Tổ c&hức:\nUserInfoSerial=&Số serial:\nUserInfoNameRequired=Bạn phải nhập một tên.\n\n; *** \"Select Destination Location\" wizard page\nWizardSelectDir=Chọn vị trí cài đặt\nSelectDirDesc=[name] nên được cài đặt ở đâu?\nSelectDirLabel3=[name] sẽ được cài đặt vào thư mục sau:\nSelectDirBrowseLabel=Để tiếp tục. nhấn Tiếp. Nếu bạn muốn chọn một thư mục khác, nhấn Duyệt.\nDiskSpaceGBLabel=Cần có ít nhất [gb] GB ổ đĩa trống.\nDiskSpaceMBLabel=Cần có ít nhất [mb] MB ổ đĩa trống.\nCannotInstallToNetworkDrive=Cài đặt không thể cài vào một ổ đĩa mạng.\nCannotInstallToUNCPath=Cài đặt không thể cài vào đường dẫn UNC.\nInvalidPath=Bạn phải nhập đường dẫn đầy đủ với chữ cái ổ đĩa, ví dụ:%n%nC:\\APP%n%nhoặc một đường dẫn UNC theo mẫu:%n%n\\\\server\\share\nInvalidDrive=Ổ đĩa hoặc chia sẻ UNC bạn đã chọn không tồn tại hoặc không truy cập được. Hãy chọn cái khác.\nDiskSpaceWarningTitle=Không đủ dung lượng đĩa\nDiskSpaceWarning=Cài đặt yêu cầu ít nhất %1 KB dung lượng trống để cài đặt, nhưng ổ đĩa đã chọn chỉ còn %2KB.%n%nBạn muốn tiếp tục bằng mọi giá?\nDirNameTooLong=Tên thư mục hoặc đường dẫn quá dài.\nInvalidDirName=Tên thư mục không hợp lệ.\nBadDirName32=Tên thư mục không được chứa các kí tự sau:%n%n%1\nDirExistsTitle=Thư mục đã tồn tại\nDirExists=Thư mục:%n%n%1%n%nđã tồn tại. Bạn có muốn cài đặt vào thư mục đó bằng mọi giá?\nDirDoesntExistTitle=Thư mục không tồn tại\nDirDoesntExist=Thư mục:%n%n%1%n%nkhông tồn tại. Bạn có muốn tạo thư mục không?\n\n; *** \"Select Components\" wizard page\nWizardSelectComponents=Chọn các thành phần\nSelectComponentsDesc=Những thành phần nào nên được cài đặt?\nSelectComponentsLabel2=Chọn các thành phần bạn muốn cài đặt, bỏ chọn các thành phần bạn không muốn. Click Tiếp khi bạn đã sẵn sàng để tiếp tục.\nFullInstallation=Cài đặt đầy đủ\n; if possible don't translate 'Compact' as 'Minimal' (I mean 'Minimal' in your language)\nCompactInstallation=Cài đặt rút gọn\nCustomInstallation=Cài đặt tủy chỉnh\nNoUninstallWarningTitle=Thành phần đã tồn tại\nNoUninstallWarning=Cài đặt phát hiện các thành phần sau đã được cài đặt trên máy tính của bạn:%n%n%1%n%nBỏ chọn những thành phần này sẽ không cài đặt chúng.%n%nBạn có muốn tiếp tục bằng mọi giá?\nComponentSize1=%1 KB\nComponentSize2=%1 MB\nComponentsDiskSpaceGBLabel=Lựa chọn này yêu cầu ít nhất [gb] GB không gian đĩa.\nComponentsDiskSpaceMBLabel=Lựa chọn này yêu cầu ít nhất [mb] MB không gian đĩa.\n\n; *** \"Select Additional Tasks\" wizard page\nWizardSelectTasks=Chọn các tác vụ bổ sung\nSelectTasksDesc=Các tác vụ bổ sung nào nên được thực hiện?\nSelectTasksLabel2=Chọn các tác vụ bổ sung mà bạn muốn cài đặt thực hiện khi cài đặt [name], rồi nhấn Tiếp.\n\n; *** \"Select Start Menu Folder\" wizard page\nWizardSelectProgramGroup=Chọn thư mục bắt đầu\nSelectStartMenuFolderDesc=Các lối tắt đến chương trình nên được đặt ở đâu?\nSelectStartMenuFolderLabel3=Cài đặt sẽ tạo các lối tắt đến chương trình trong thư mục bắt đầu sau.\nSelectStartMenuFolderBrowseLabel=Để tiếp tục, click Tiếp. Nếu bạn muốn chọn thư mục khác, click Duyệt.\nMustEnterGroupName=Bạn phải nhập tên một thư mục.\nGroupNameTooLong=Tên thư mục hoặc đường dẫn quá dài.\nInvalidGroupName=Tên thư mục không hợp lệ.\nBadGroupName=Tên thư mục không được chứa các kí tự sau:%n%n%1\nNoProgramGroupCheck2=&Không tạo thư mục bắt đầu\n\n; *** \"Ready to Install\" wizard page\nWizardReady=Sẵn sàng cài đặt\nReadyLabel1=[name] đã sẵn sàng để dược cài đặt trên máy tính của bạn.\nReadyLabel2a=Click Cài đặt để tiếp tục, hoặc click Trước nếu bạn muốn xem lại/thay đổi bất kì cài đặt nào.\nReadyLabel2b=Click Cài đặt để tiếp tục cài đặt.\nReadyMemoUserInfo=Thông tin người dùng:\nReadyMemoDir=Vị trí đích:\nReadyMemoType=Kiểu cài đặt:\nReadyMemoComponents=Các thành phần được chọn:\nReadyMemoGroup=Thư mục bắt đầu:\nReadyMemoTasks=Các tác vụ bổ sung:\n\n; *** TDownloadWizardPage wizard page and DownloadTemporaryFile\nDownloadingLabel=Đang tải các tập tin bổ sung...\nButtonStopDownload=&Dừng tải xuống\nStopDownload=Bạn có chắc chắn muốn dừng tải xuống không?\nErrorDownloadAborted=Tải xuống bị hủy bỏ\nErrorDownloadFailed=Tải xuống không thành công: %1 %2\nErrorDownloadSizeFailed=Getting size failed: %1 %2\nErrorFileHash1=File hash failed: %1\nErrorFileHash2=Invalid file hash: expected %1, found %2\nErrorProgress=Invalid progress: %1 of %2\nErrorFileSize=Invalid file size: expected %1, found %2\n\n; *** \"Preparing to Install\" wizard page\nWizardPreparing=Chuẩn bị cài đặt\nPreparingDesc=[name] đang chuẩn bị được cài đặt trên máy tính của bạn.\nPreviousInstallNotCompleted=Việc cài đặt/gỡ bỏ một chương trình chưa được hoàn tất trước đó. Bạn sẽ phải khởi động lại máy tính để hoàn tất cài đặt đó.%n%nSau khi chởi động lại, chạy Cài đặt một lần nữa để hoàn tất cài đặt [name].\nCannotContinue=Cài đặt không thể tiếp tục. Nhấn Hủy để thoát.\nApplicationsFound=Những chương trình sau đang sử dụng các tệp cần được cập nhật bởi trình cài đặt. Chúng tôi khuyên bạn cho phép Cài đặt đóng các chương trình này.\nApplicationsFound2=Những chương trình sau đang sử dụng các tệp cần được cập nhật bởi trình cài đặt. Chúng tôi khuyên bạn cho phép Cài đặt đóng các chương trình này. Sau khi hoàn thành cài đặt, chúng tôi sẽ thử khởi động lại các chương trình này.\nCloseApplications=Tự độn&g đóng các chương trình này\nDontCloseApplications=Không đóng các chương t&rình này\nErrorCloseApplications=Cài đặt không thể đóng mọi chương trình. Chúng tôi khuyên bạn đóng các chương trình đang sử dụng các tệp cần được cập nhật bởi Cài đặt một cách thủ công trước khi tiếp tục.\nPrepareToInstallNeedsRestart=Setup must restart your computer. After restarting your computer, run Setup again to complete the installation of [name].%n%nWould you like to restart now?\n\n; *** \"Installing\" wizard page\nWizardInstalling=Đang cài đặt\nInstallingLabel=Hãy đợi khi [name] đang được cài đặt trên máy tính của bạn.\n\n; *** \"Setup Completed\" wizard page\nFinishedHeadingLabel=Hoàn thành cài đặt [name]\nFinishedLabelNoIcons=[name] đã được cài đặt xong trên máy tính của bạn.\nFinishedLabel=[name] đã được cài đặt xong trên máy tính của bạn. Chương trình có thể được khởi động bằng cách click vào lối tắt đến chương trình.\nClickFinish=Click Hoàn thành để thoát Cài đặt.\nFinishedRestartLabel=Để hoàn thành cài đặt [name], máy tính của bạn cần đươc khởi động lại. Bạn có muốn khởi động lại ngay?\nFinishedRestartMessage=Để hoàn thành cài đặt [name], máy tính của bạn cần đươc khởi động lại.%n%nBạn có muốn khởi động lại ngay?\nShowReadmeCheck=Có, tôi muốn xem tệp README\nYesRadio=&Có, khởi động lại máy tính ngay\nNoRadio=&Không, tôi sẽ khởi động lại máy tính sau\n; used for example as 'Run MyProg.exe'\nRunEntryExec=Chạy %1\n; used for example as 'View Readme.txt'\nRunEntryShellExec=Xem %1\n\n; *** \"Setup Needs the Next Disk\" stuff\nChangeDiskTitle=Cài đặt cần đĩa tiếp theo\nSelectDiskLabel2=Hãy chèn đĩa %1 và click OK.%n%nNếu các tệp trên đĩa này có thể được tìm thấy trên một thư mục khác với được hiển thị dưới đây, nhập đường dẫn hoặc click Duyệt.\nPathLabel=Đườ&ng dẫn:\nFileNotInDir2=Tệp \"%1\" không thể được xác định trong \"%2\". Hãy chọn đia xđúng hoặc chọn thư mục khác.\nSelectDirectoryLabel=Hãy chọn vị trí của đĩa tiếp theo.\n\n; *** Installation phase messages\nSetupAborted=Cài đặt không được hoàn thành.%n%nHãy sửa lỗi và chạy Cài đặt lại.\nAbortRetryIgnoreSelectAction=Chọn hành động\nAbortRetryIgnoreRetry=&Thử lại\nAbortRetryIgnoreIgnore=&Bỏ qua lỗi và tiếp tục\nAbortRetryIgnoreCancel=Hủy\n\n; *** Installation status messages\nStatusClosingApplications=Đang đóng các chương trình...\nStatusCreateDirs=Đang tạo các thư mục...\nStatusExtractFiles=Đang giải nén các tệp...\nStatusCreateIcons=Đang tạo các lối tắt...\nStatusCreateIniEntries=Đang tạo các đầu vào INI...\nStatusCreateRegistryEntries=Đang tạo các đầu vào registry...\nStatusRegisterFiles=Đang đăng kí các tệp...\nStatusSavingUninstall=Đang lưu thông tin gỡ cài đặt...\nStatusRunProgram=Đang hoàn thành cài đặt...\nStatusRestartingApplications=Đang khởi động lại các chương trình...\nStatusRollback=Đang hoàn lại các thay đổi...\n\n; *** Misc. errors\nErrorInternal2=Lỗi nội bộ: %1\nErrorFunctionFailedNoCode=%1 thất bại\nErrorFunctionFailed=%1 thất bại với mã lỗi %2\nErrorFunctionFailedWithMessage=%1 thất bại với mã lỗi %2.%n%3\nErrorExecutingProgram=Không thể chạy tệp:%n%1\n\n; *** Registry errors\nErrorRegOpenKey=Lỗi khi mở registry:%n%1\\%2\nErrorRegCreateKey=Lỗi khi tạo registry:%n%1\\%2\nErrorRegWriteKey=Lỗi khi viết registry:%n%1\\%2\n\n; *** INI errors\nErrorIniEntry=Lỗi tạo đầu vào INI cho tệp \"%1\".\n\n; *** File copying errors\nFileAbortRetryIgnoreSkipNotRecommended=&Bỏ qua tệp này (không khuyến nghị)\nFileAbortRetryIgnoreIgnoreNotRecommended=&Bỏ qua để tiếp tục bằng mọi giá (không khuyến nghị)\nSourceIsCorrupted=Tệp nguồn bị hỏng\nSourceDoesntExist=Tệp nguồn \"%1\" không tồn tại\nExistingFileReadOnly2=Tệp đã tồn tại với đánh dấu chỉ đọc.\nExistingFileReadOnlyRetry=&Xóa thuộc tính chỉ đọc và thử lại\nExistingFileReadOnlyKeepExisting=&Giữ tập tin hiện có\nErrorReadingExistingDest=Một lỗi đã xảy ra khi đọc tệp:\nFileExistsSelectAction=Select action\nFileExists2=Tệp đã tồn tại.\nFileExistsOverwriteExisting=G&hi đè tệp hiện có\nFileExistsKeepExisting=&Giữ tệp hiện có\nFileExistsOverwriteOrKeepAll=&Do this for the next conflicts\nExistingFileNewerSelectAction=Select action\nExistingFileNewer2=Tệp hiện có mới hơn tệp mà Thiết lập đang cố gắng cài đặt.\nExistingFileNewerOverwriteExisting=&Ghi đè tệp hiện có\nExistingFileNewerKeepExisting=&Giữ tệp hiện có (khuyến nghị)\nExistingFileNewerOverwriteOrKeepAll=&Do this for the next conflicts\nErrorChangingAttr=Một lỗi đã xảy ra khi thay đổi thuộc tính của tệp sau:\nErrorCreatingTemp=Một lỗi đã xảy ra khi tạo một tệp trong thư mục đích:\nErrorReadingSource=Một lỗi đã xảy ra khi đọc tệp nguồn:\nErrorCopying=Một lỗi đã xảy ra khi sao chép tệp:\nErrorReplacingExistingFile=Một lỗi đã xảy ra khi thay thế tệp:\nErrorRestartReplace=Khởi động lại & Thay thế (RestartReplace) thất bại:\nErrorRenamingTemp=Một lỗi đã xảy ra khi đổi tên tệp trong thư mục đích:\nErrorRegisterServer=Không thể đăng kí DLL/OCX: %1\nErrorRegSvr32Failed=RegSvr32 thất bại với mã thoát %1\nErrorRegisterTypeLib=Không thể đăng kí thư viện kiểu: %1\n\n; *** Uninstall display name markings\n; used for example as 'My Program (32-bit)'\nUninstallDisplayNameMark=%1 (%2)\n; used for example as 'My Program (32-bit, All users)'\nUninstallDisplayNameMarks=%1 (%2, %3)\nUninstallDisplayNameMark32Bit=32-bit\nUninstallDisplayNameMark64Bit=64-bit\nUninstallDisplayNameMarkAllUsers=All users\nUninstallDisplayNameMarkCurrentUser=Current user\n\n; *** Post-installation errors\nErrorOpeningReadme=Một lỗi đã xảy ra khi mở tệp README.\nErrorRestartingComputer=Cài đặt không thể khởi động lại máy tính. Hãy làm việc này một cách thủ công.\n\n; *** Uninstaller messages\nUninstallNotFound=Tệp \"%1\" không tồn tại. Không thể gỡ cài đặt.\nUninstallOpenError=Tệp \"%1\" không thể được mở. Không thể gỡ cài đặt\nUninstallUnsupportedVer=Tệp nhật kí gỡ cài đặt \"%1\" có định dạng không thể được xác định bởi phiên bản gỡ cài đặt này. Không thể gỡ cài đặt\nUninstallUnknownEntry=Một đầu vào không xác định (%1) đã bị phát hiện trong nhật kí gỡ cài đặt\nConfirmUninstall=Bạn có muốn dỡ bỏ hoàn toàn %1 và mọi thành phần của nó?\nUninstallOnlyOnWin64=Cài đặt này chỉ có thể được gỡ bỏ trên Windows 64 bit.\nOnlyAdminCanUninstall=Cài đặt này chỉ có thể được gỡ bỏ bằng một người dùng có quyền người quản trị.\nUninstallStatusLabel=Hãy đợi khi %1 được gỡ khỏi máy tính của bạn.\nUninstalledAll=%1 đã được gỡ bỏ thành công khỏi máy tính của bạn.\nUninstalledMost=%1 đã được gỡ bỏ thành công.%n%nMột số thành phần không thể được gỡ bỏ. Hãy làm việc này một cách thủ công.\nUninstalledAndNeedsRestart=Để hoàn thành việc gỡ cài đặt %1, bạn phải khởi động lại máy tính.%n%nBạn có muốn khởi động lại ngay?\nUninstallDataCorrupted=Tệp \"%1\" bị hỏng. Không thể gỡ cài đặt\n\n; *** Uninstallation phase messages\nConfirmDeleteSharedFileTitle=Gỡ bỏ tệp được chia sẻ?\nConfirmDeleteSharedFile2=Hệ thống chỉ ra các tệp được chia sẻ sau không được sử dụng bởi chương trình nào. Bạn có muốn gỡ bỏ tệp này?%n%nNếu có một chương trình vẫn sử dụng tệp này mà tệp bị gỡ bỏ, chúng có thể không chạy tốt. Nếu bạn không chắc chắn, chọn Không. Để lại tệp trên hệ thống của bạn sẽ không gây ra tổn hại.\nSharedFileNameLabel=Tên tệp:\nSharedFileLocationLabel=Vị trí:\nWizardUninstalling=Trạng thái gỡ cài đặt\nStatusUninstalling=Đang gỡ cài đặt %1...\n\n; *** Shutdown block reasons\nShutdownBlockReasonInstallingApp=Đang cài đặt %1.\nShutdownBlockReasonUninstallingApp=Đang gỡ cài đặt %1.\n\n; The custom messages below aren't used by Setup itself, but if you make\n; use of them in your scripts, you'll want to translate them.\n\n[CustomMessages]\n\nNameAndVersion=%1 phiên bản %2\nAdditionalIcons=Các lối tắt bổ sung:\nCreateDesktopIcon=Tạo một &lối tắt trên Desktop\nCreateQuickLaunchIcon=Tạo một lối tắt &Khởi động nhanh\nProgramOnTheWeb=%1 trên Web\nUninstallProgram=Gỡ cài đặt %1\nLaunchProgram=Khởi động %1\nAssocFileExtension=&Gán %1 với đuôi tệp %2\nAssocingFileExtension=Đang gán %1 với đuôi tệp %2...\nAutoStartProgramGroupDescription=Khởi động:\nAutoStartProgram=Tự động khởi động %1\nAddonHostProgramNotFound=%1 không thể được xác định trong thư mục bạn đã chọn.%n%nBạn có muốn tiếp tục bằng mọi giá?\n"
  },
  {
    "path": "InnoDependencies/install_dotnet.iss",
    "content": "#define DotNetPrettyName \"Microsoft .NET Desktop Runtime\"\n#define DotNetName \"Microsoft.WindowsDesktop.App 8\"\n#define DotNetVersion \"8.0.15\"\n#define DotNetURL \"https://builds.dotnet.microsoft.com/dotnet/WindowsDesktop/8.0.15/windowsdesktop-runtime-8.0.15-win-x64.exe\"\n#define DotNetExeName \"dotnet8.exe\"\n#define DotNetExeArgs \"/install /repair /passive /norestart\"\n\n[Code]\nvar\n  NeedsInstall: Boolean;\n  Dependency_DownloadPage: TDownloadWizardPage;\n  Dependency_Memo: String;\n\nfunction SplitString(Text: String; Separator: String): TArrayOfString;\nvar\n  i, p: Integer;\n  dest: TArrayOfString; \nbegin\n  i := 0;\n  repeat\n    SetArrayLength(dest, i + 1);\n    p := Pos(Separator, Text);\n    if p > 0 then begin\n      dest[i] := Copy(Text, 1, p - 1);\n      Text := Copy(Text, p + Length(Separator), Length(Text));\n      i := i + 1;         \n    end else begin\n      dest[i] := Text;\n      Text := '';\n    end;\n  until Length(Text)=0;\n  Result := dest\nend;\n\nfunction CheckDotNetVersionEqualOrHigher(StringArray: TArrayOfString; DotNetName: String; MinimumVersionString: String): Boolean;\nvar\n  i, p: Integer;\n  str, verStr: String;\n  strArray: TArrayOfString;\n  minVer, ver: Int64;\nbegin       \n  Result := False;\n  if StrToVersion(MinimumVersionString, minVer) then begin\n    for i := 0 to GetArrayLength(StringArray) - 1 do begin\n      str := StringArray[i];\n      p := Pos(DotNetName, str);\n      if p > 0 then begin\n        strArray := SplitString(str, ' ');\n        if GetArrayLength(strArray) >= 3 then begin\n          verStr := strArray[1]; \n          if StrToVersion(verStr, ver) then begin\n            if ComparePackedVersion(minVer, ver) <= 0 then begin\n              Result := True;\n              break;\n            end;\n          end;\n        end;\n      end;\n    end;\n  end;\nend;\n\nfunction IsDotNetInstalled(DotNetName: string; DotNetVersion: string): Boolean;\nvar\n  cmd, args, fileName, command: string;\n  output: AnsiString;\n  resultCode: Integer;\nbegin  \n  command := 'dotnet --list-runtimes';\n  fileName := ExpandConstant('{tmp}\\dotnet.txt');\n  cmd := ExpandConstant('{cmd}');\n  args := '/C ' + command + ' > \"' + fileName + '\" 2>&1';\n\n  if Exec(cmd, args, '', SW_HIDE, ewWaitUntilTerminated, resultCode) and (resultCode = 0) then begin\n    if LoadStringFromFile(fileName, output) then begin\n      if CheckDotNetVersionEqualOrHigher(SplitString(output, #13#10), DotNetName, DotNetVersion) then begin\n        Log('\"' + DotNetName + '\" version \"' + DotNetVersion + '\" or higher found in output of \"' + command + '\"');\n        Result := True;\n      end\n      else begin\n        Log('\"' + DotNetName + '\" version \"' + DotNetVersion + '\" or higher not found in output of \"' + command + '\"');\n        Result := False;\n      end;\n    end\n    else begin\n      Log('Failed to read output of \"' + command + '\"');\n      Result := False;\n    end;\n  end\n  else begin\n    Log('Failed to execute \"' + command + '\"');\n    Result := False;\n  end;\n \n  DeleteFile(fileName);\nend;\n\nprocedure InstallDotNet6DesktopRuntime;\nbegin\n  if not IsDotNetInstalled('{#DotNetName}', '{#DotNetVersion}') then begin \n    NeedsInstall := True;\n    Dependency_Memo := Dependency_Memo + #13#10 + '%1' + '{#DotNetPrettyName} {#DotNetVersion}';\n  end;\nend;\n\n<event('InitializeWizard')>\nprocedure Dependency_InitializeWizard;\nbegin\n  Dependency_DownloadPage := CreateDownloadPage(SetupMessage(msgWizardPreparing), SetupMessage(msgPreparingDesc), nil);\nend;\n\n<event('UpdateReadyMemo')>\nfunction Dependency_UpdateReadyMemo(const Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;\nbegin\n  Result := '';\n  if MemoUserInfoInfo <> '' then begin\n    Result := Result + MemoUserInfoInfo + Newline + NewLine;\n  end;\n  if MemoDirInfo <> '' then begin\n    Result := Result + MemoDirInfo + Newline + NewLine;\n  end;\n  if MemoTypeInfo <> '' then begin\n    Result := Result + MemoTypeInfo + Newline + NewLine;\n  end;\n  if MemoComponentsInfo <> '' then begin\n    Result := Result + MemoComponentsInfo + Newline + NewLine;\n  end;\n  if MemoGroupInfo <> '' then begin\n    Result := Result + MemoGroupInfo + Newline + NewLine;\n  end;\n  if MemoTasksInfo <> '' then begin\n    Result := Result + MemoTasksInfo;\n  end;\n  if Dependency_Memo <> '' then begin\n    if MemoTasksInfo = '' then begin\n      Result := Result + SetupMessage(msgReadyMemoTasks);\n    end;\n    Result := Result + FmtMessage(Dependency_Memo, [Space]);\n  end;\nend;\n\n<event('PrepareToInstall')>\nfunction Dependency_PrepareToInstall(var NeedsRestart: Boolean): String;\nvar\n  prettyName: String;\n  retry, abort: Boolean;\n  resultCode: Integer;\nbegin\n  if NeedsInstall then begin\n    prettyName := '{#DotNetPrettyName} {#DotNetVersion}'\n\n    Dependency_DownloadPage.Show;\n    Dependency_DownloadPage.Clear;\n    Dependency_DownloadPage.Add('{#DotNetURL}', '{#DotNetExeName}', '');\n\n    retry := True;\n    while retry do begin\n      retry := False;\n      abort := False;\n\n      try\n        Dependency_DownloadPage.Download;\n      except\n        if Dependency_DownloadPage.AbortedByUser then begin\n          abort := True\n          end else begin\n          case SuppressibleMsgBox(AddPeriod(GetExceptionMessage), mbError, MB_RETRYCANCEL, IDRETRY) of\n            IDCANCEL: begin\n              abort := True;\n            end;\n            IDRETRY: begin\n              retry := True;\n            end;\n          end;\n        end;\n      end;\n    end;\n\n    if not abort then begin\n      Dependency_DownloadPage.SetText(prettyName, '');\n      Dependency_DownloadPage.SetProgress(1, 1);\n\n      while True do begin\n          resultCode := 0;\n          if ShellExec('', ExpandConstant('{tmp}{\\}') + '{#DotNetExeName}', '{#DotNetExeArgs}', '', SW_SHOWNORMAL, ewWaitUntilTerminated, resultCode) then begin\n            if (resultCode = 0) then begin\n              break;\n            end;\n          end;\n\n          case SuppressibleMsgBox(FmtMessage(SetupMessage(msgErrorFunctionFailed), [prettyName, IntToStr(ResultCode)]), mbError, MB_RETRYCANCEL, IDRETRY) of\n            IDCANCEL: begin\n              abort := True;\n              break;\n            end;\n          end;\n        end;\n    end;\n\n    Dependency_DownloadPage.Hide;\n  end;\nend;\n"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <https://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 <https://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<https://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<https://www.gnu.org/licenses/why-not-lgpl.html>.\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI/Flags.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\n\nnamespace LenovoLegionToolkit.CLI;\n\npublic readonly struct Flags\n{\n    public bool Silent { get; }\n    public string? QuickActionRunName { get; }\n    public bool Help { get; }\n\n    public static Flags Create(IEnumerable<string> startupArgs)\n    {\n        try\n        {\n            return new(startupArgs);\n        }\n        catch\n        {\n            return default;\n        }\n    }\n\n    private Flags(IEnumerable<string> startupArgs)\n    {\n        var args = startupArgs.ToArray();\n\n        QuickActionRunName = StringValue(args, \"--quickAction\") ?? StringValue(args, \"-qa\");\n        Silent = BoolValue(args, \"--silent\") || BoolValue(args, \"-s\");\n        Help = BoolValue(args, \"--help\") || BoolValue(args, \"-h\");\n    }\n\n    private static bool BoolValue(IEnumerable<string> values, string key) => values.Contains(key);\n\n    private static string? StringValue(IEnumerable<string> values, string key)\n    {\n        var value = values.FirstOrDefault(s => s.StartsWith(key));\n        return value?.Remove(0, key.Length + 1);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI/IpcClient.cs",
    "content": "﻿using System;\nusing System.IO.Pipes;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.CLI.Lib;\nusing LenovoLegionToolkit.CLI.Lib.Extensions;\n\nnamespace LenovoLegionToolkit.CLI;\n\npublic static class IpcClient\n{\n    public static async Task<string> ListQuickActionsAsync()\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.ListQuickActions\n        };\n\n        return await SendRequestAsync(req).ConfigureAwait(false)\n               ?? throw new IpcException(\"Missing return message\");\n    }\n\n    public static Task RunQuickActionAsync(string name)\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.QuickAction,\n            Name = name\n        };\n\n        return SendRequestAsync(req);\n    }\n\n    public static async Task<string> ListFeaturesAsync()\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.ListFeatures,\n        };\n\n        return await SendRequestAsync(req).ConfigureAwait(false)\n               ?? throw new IpcException(\"Missing return message\");\n    }\n\n    public static async Task<string> ListFeatureValuesAsync(string name)\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.ListFeatureValues,\n            Name = name,\n        };\n\n        return await SendRequestAsync(req).ConfigureAwait(false)\n               ?? throw new IpcException(\"Missing return message\");\n    }\n\n    public static Task SetFeatureValueAsync(string name, string value)\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.SetFeatureValue,\n            Name = name,\n            Value = value\n        };\n\n        return SendRequestAsync(req);\n    }\n\n    public static async Task<string> GetFeatureValueAsync(string name)\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.GetFeatureValue,\n            Name = name\n        };\n\n        return await SendRequestAsync(req).ConfigureAwait(false)\n               ?? throw new IpcException(\"Missing return message\");\n    }\n\n    public static async Task<string> GetSpectrumProfileAsync()\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.GetSpectrumProfile\n        };\n\n        return await SendRequestAsync(req).ConfigureAwait(false)\n               ?? throw new IpcException(\"Missing return message\");\n    }\n\n    public static Task SetSpectrumProfileAsync(string value)\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.SetSpectrumProfile,\n            Value = value\n        };\n\n        return SendRequestAsync(req);\n    }\n\n    public static async Task<string> GetSpectrumBrightnessAsync()\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.GetSpectrumBrightness\n        };\n\n        return await SendRequestAsync(req).ConfigureAwait(false)\n               ?? throw new IpcException(\"Missing return message\");\n    }\n\n    public static Task SetSpectrumBrightnessAsync(string value)\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.SetSpectrumBrightness,\n            Value = value\n        };\n\n        return SendRequestAsync(req);\n    }\n\n    public static async Task<string> GetRGBPresetAsync()\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.GetRGBPreset\n        };\n\n        return await SendRequestAsync(req).ConfigureAwait(false)\n               ?? throw new IpcException(\"Missing return message\");\n    }\n\n    public static Task SetRGBPresetAsync(string value)\n    {\n        var req = new IpcRequest\n        {\n            Operation = IpcRequest.OperationType.SetRGBPreset,\n            Value = value\n        };\n\n        return SendRequestAsync(req);\n    }\n\n    private static async Task<string?> SendRequestAsync(IpcRequest req)\n    {\n        await using var pipe = new NamedPipeClientStream(Constants.PIPE_NAME);\n\n        await ConnectAsync(pipe).ConfigureAwait(false);\n\n        await pipe.WriteObjectAsync(req).ConfigureAwait(false);\n        var res = await pipe.ReadObjectAsync<IpcResponse>().ConfigureAwait(false);\n\n        if (res is null || !res.Success)\n            throw new IpcException(res?.Message ?? \"Unknown failure\");\n\n        return res.Message;\n    }\n\n    private static async Task ConnectAsync(NamedPipeClientStream pipe)\n    {\n        var retries = 3;\n\n        while (retries >= 0)\n        {\n            try\n            {\n                await pipe.ConnectAsync(TimeSpan.FromMilliseconds(500), CancellationToken.None).ConfigureAwait(false);\n                pipe.ReadMode = PipeTransmissionMode.Message;\n                return;\n            }\n            catch (TimeoutException) { }\n\n            retries--;\n        }\n\n        throw new IpcConnectException();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI/LenovoLegionToolkit.CLI.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n    <PropertyGroup>\n        <OutputType>Exe</OutputType>\n        <TargetFramework>net8.0-windows</TargetFramework>\n        <RuntimeIdentifier>win-x64</RuntimeIdentifier>\n        <Nullable>enable</Nullable>\n\t    <Copyright>© 2024 Bartosz Cichecki</Copyright>\n        <AssemblyName>llt</AssemblyName>\n        <Platforms>x64</Platforms>\n        <FileVersion>0.0.1</FileVersion>\n        <Version>0.0.1</Version>\n        <NeutralLanguage>en</NeutralLanguage>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|AnyCPU'\">\n        <SourceRevisionId>build$([System.DateTime]::UtcNow.ToString(\"yyyyMMddHHmmss\"))</SourceRevisionId>\n    </PropertyGroup>\n    <PropertyGroup>\n        <NeutralLanguage>en</NeutralLanguage>\n        <SatelliteResourceLanguages>en</SatelliteResourceLanguages>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|AnyCPU'\">\n        <DebugType>portable</DebugType>\n    </PropertyGroup>\n    <PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|AnyCPU'\">\n        <DebugType>embedded</DebugType>\n    </PropertyGroup>\n    <ItemGroup>\n      <PackageReference Include=\"System.CommandLine\" Version=\"2.0.0-beta4.22272.1\" />\n    </ItemGroup>\n    <ItemGroup>\n        <ProjectReference Include=\"..\\LenovoLegionToolkit.CLI.Lib\\LenovoLegionToolkit.CLI.Lib.csproj\" />\n    </ItemGroup>\n</Project>\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI/Program.cs",
    "content": "﻿using System;\nusing System.CommandLine;\nusing System.CommandLine.Builder;\nusing System.CommandLine.Invocation;\nusing System.CommandLine.IO;\nusing System.CommandLine.Parsing;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.CLI.Lib;\n\nnamespace LenovoLegionToolkit.CLI;\n\npublic class Program\n{\n    public static Task<int> Main(string[] args) => BuildCommandLine().InvokeAsync(args);\n\n    private static Parser BuildCommandLine()\n    {\n        var root = new RootCommand(\"Utility that controls Lenovo Legion Toolkit from command line.\\n\\n\" +\n                                   \"Lenovo Legion Toolkit must be running in the background and CLI setting must be \" +\n                                   \"turned on for this utility to work.\");\n\n        var builder = new CommandLineBuilder(root)\n            .UseDefaults()\n            .UseExceptionHandler(OnException);\n\n        root.AddCommand(BuildQuickActionsCommand());\n        root.AddCommand(BuildFeatureCommand());\n        root.AddCommand(BuildSpectrumCommand());\n        root.AddCommand(BuildRGBCommand());\n\n        return builder.Build();\n    }\n\n    private static Command BuildQuickActionsCommand()\n    {\n        var nameArgument = new Argument<string>(\"name\", \"Name of the Quick Action\") { Arity = ArgumentArity.ZeroOrOne };\n\n        var listOption = new Option<bool>(\"--list\", \"List available Quick Actions\") { Arity = ArgumentArity.ZeroOrOne };\n        listOption.AddAlias(\"-l\");\n\n        var cmd = new Command(\"quickAction\", \"Run Quick Action\");\n        cmd.AddAlias(\"qa\");\n        cmd.AddArgument(nameArgument);\n        cmd.AddOption(listOption);\n        cmd.SetHandler(async (name, list) =>\n        {\n            if (list)\n            {\n                var result = await IpcClient.ListQuickActionsAsync();\n                Console.WriteLine(result);\n                return;\n            }\n\n            await IpcClient.RunQuickActionAsync(name);\n        }, nameArgument, listOption);\n        cmd.AddValidator(result =>\n        {\n            if (result.FindResultFor(nameArgument) is not null)\n                return;\n\n            if (result.FindResultFor(listOption) is not null)\n                return;\n\n            result.ErrorMessage = $\"{nameArgument.Name} or --{listOption.Name} should be specified\";\n        });\n\n        return cmd;\n    }\n\n    private static Command BuildFeatureCommand()\n    {\n        var getCmd = BuildGetFeatureCommand();\n        var setCmd = BuildSetFeatureCommand();\n\n        var listOption = new Option<bool?>(\"--list\", \"List available features\") { Arity = ArgumentArity.ZeroOrOne };\n        listOption.AddAlias(\"-l\");\n\n        var cmd = new Command(\"feature\", \"Control features\");\n        cmd.AddAlias(\"f\");\n        cmd.AddCommand(getCmd);\n        cmd.AddCommand(setCmd);\n        cmd.AddOption(listOption);\n        cmd.SetHandler(async list =>\n        {\n            if (!list.HasValue || !list.Value)\n                return;\n\n            var value = await IpcClient.ListFeaturesAsync();\n            Console.WriteLine(value);\n        }, listOption);\n        cmd.AddValidator(result =>\n        {\n            if (result.FindResultFor(getCmd) is not null)\n                return;\n\n            if (result.FindResultFor(setCmd) is not null)\n                return;\n\n            if (result.FindResultFor(listOption) is not null)\n                return;\n\n            result.ErrorMessage = $\"{getCmd.Name}, {setCmd.Name} or --{listOption.Name} should be specified\";\n        });\n\n        return cmd;\n    }\n\n    private static Command BuildGetFeatureCommand()\n    {\n        var nameArgument = new Argument<string>(\"name\", \"Name of the feature\") { Arity = ArgumentArity.ExactlyOne };\n\n        var cmd = new Command(\"get\", \"Get value of a feature\");\n        cmd.AddAlias(\"g\");\n        cmd.AddArgument(nameArgument);\n        cmd.SetHandler(async name =>\n        {\n            var result = await IpcClient.GetFeatureValueAsync(name);\n            Console.WriteLine(result);\n        }, nameArgument);\n\n        return cmd;\n    }\n\n    private static Command BuildSetFeatureCommand()\n    {\n        var nameArgument = new Argument<string>(\"name\", \"Name of the feature\") { Arity = ArgumentArity.ExactlyOne };\n        var valueArgument = new Argument<string>(\"value\", \"Value of the feature\") { Arity = ArgumentArity.ZeroOrOne };\n\n        var listOption = new Option<bool>(\"--list\", \"List available feature values\") { Arity = ArgumentArity.ZeroOrOne };\n        listOption.AddAlias(\"-l\");\n\n        var cmd = new Command(\"set\", \"Set value of a feature\");\n        cmd.AddAlias(\"s\");\n        cmd.AddArgument(nameArgument);\n        cmd.AddArgument(valueArgument);\n        cmd.AddOption(listOption);\n        cmd.SetHandler(async (name, value, list) =>\n        {\n            if (list)\n            {\n                var result = await IpcClient.ListFeatureValuesAsync(name);\n                Console.WriteLine(result);\n                return;\n            }\n\n            await IpcClient.SetFeatureValueAsync(name, value);\n        }, nameArgument, valueArgument, listOption);\n        cmd.AddValidator(result =>\n        {\n            if (result.FindResultFor(nameArgument) is not null)\n                return;\n\n            if (result.FindResultFor(listOption) is not null)\n                return;\n\n            result.ErrorMessage = $\"{nameArgument.Name} or --{listOption.Name} should be specified\";\n        });\n\n        return cmd;\n    }\n\n    private static Command BuildSpectrumCommand()\n    {\n        var profileCommand = BuildSpectrumProfileCommand();\n        var brightnessCommand = BuildSpectrumBrightnessCommand();\n\n        var cmd = new Command(\"spectrum\", \"Control Spectrum backlight\");\n        cmd.AddAlias(\"s\");\n        cmd.AddCommand(profileCommand);\n        cmd.AddCommand(brightnessCommand);\n        return cmd;\n    }\n\n    private static Command BuildSpectrumProfileCommand()\n    {\n        var getCmd = BuildGetSpectrumProfileCommand();\n        var setCmd = BuildSetSpectrumProfileCommand();\n\n        var cmd = new Command(\"profile\", \"Control Spectrum backlight profile\");\n        cmd.AddAlias(\"p\");\n        cmd.AddCommand(getCmd);\n        cmd.AddCommand(setCmd);\n\n        return cmd;\n    }\n\n    private static Command BuildGetSpectrumProfileCommand()\n    {\n        var cmd = new Command(\"get\", \"Get current Spectrum profile\");\n        cmd.AddAlias(\"g\");\n        cmd.SetHandler(async _ =>\n        {\n            var result = await IpcClient.GetSpectrumProfileAsync();\n            Console.WriteLine(result);\n        });\n\n        return cmd;\n    }\n\n    private static Command BuildSetSpectrumProfileCommand()\n    {\n        var valueArgument = new Argument<int>(\"profile\", \"Profile to set\") { Arity = ArgumentArity.ExactlyOne };\n\n        var cmd = new Command(\"set\", \"Set current Spectrum profile\");\n        cmd.AddAlias(\"s\");\n        cmd.AddArgument(valueArgument);\n        cmd.SetHandler(async value =>\n        {\n            await IpcClient.SetSpectrumProfileAsync($\"{value}\");\n        }, valueArgument);\n\n        return cmd;\n    }\n\n    private static Command BuildSpectrumBrightnessCommand()\n    {\n        var getCmd = BuildGetSpectrumBrightnessCommand();\n        var setCmd = BuildSetSpectrumBrightnessCommand();\n\n        var cmd = new Command(\"brightness\", \"Control Spectrum brightness\");\n        cmd.AddAlias(\"b\");\n        cmd.AddCommand(getCmd);\n        cmd.AddCommand(setCmd);\n\n        return cmd;\n    }\n\n    private static Command BuildGetSpectrumBrightnessCommand()\n    {\n        var cmd = new Command(\"get\", \"Get current Spectrum brightness\");\n        cmd.AddAlias(\"g\");\n        cmd.SetHandler(async _ =>\n        {\n            var result = await IpcClient.GetSpectrumBrightnessAsync();\n            Console.WriteLine(result);\n        });\n\n        return cmd;\n    }\n\n    private static Command BuildSetSpectrumBrightnessCommand()\n    {\n        var valueArgument = new Argument<int>(\"brightness\", \"Brightness to set\") { Arity = ArgumentArity.ExactlyOne };\n\n        var cmd = new Command(\"set\", \"Set current Spectrum brightness\");\n        cmd.AddAlias(\"s\");\n        cmd.AddArgument(valueArgument);\n        cmd.SetHandler(async value =>\n        {\n            await IpcClient.SetSpectrumBrightnessAsync($\"{value}\");\n        }, valueArgument);\n\n        return cmd;\n    }\n\n    private static Command BuildRGBCommand()\n    {\n        var getCmd = BuildGetRGBCommand();\n        var setCmd = BuildSetRGBCommand();\n\n        var cmd = new Command(\"rgb\", \"Control RGB backlight preset\");\n        cmd.AddAlias(\"r\");\n        cmd.AddCommand(getCmd);\n        cmd.AddCommand(setCmd);\n\n        return cmd;\n    }\n\n    private static Command BuildGetRGBCommand()\n    {\n        var cmd = new Command(\"get\", \"Get current RGB preset\");\n        cmd.AddAlias(\"g\");\n        cmd.SetHandler(async _ =>\n        {\n            var result = await IpcClient.GetRGBPresetAsync();\n            Console.WriteLine(result);\n        });\n\n        return cmd;\n    }\n\n    private static Command BuildSetRGBCommand()\n    {\n        var valueArgument = new Argument<int>(\"preset\", \"Preset to set\") { Arity = ArgumentArity.ExactlyOne };\n\n        var cmd = new Command(\"set\", \"Set current RGB preset\");\n        cmd.AddAlias(\"s\");\n        cmd.AddArgument(valueArgument);\n        cmd.SetHandler(async value =>\n        {\n            await IpcClient.SetRGBPresetAsync($\"{value}\");\n        }, valueArgument);\n\n        return cmd;\n    }\n\n    private static void OnException(Exception ex, InvocationContext context)\n    {\n        var message = ex switch\n        {\n            IpcConnectException => \"Failed to connect. \" +\n                                   \"Make sure that Lenovo Legion Toolkit is running \" +\n                                   \"in background and CLI is enabled in Settings.\",\n            IpcException => ex.Message,\n            _ => ex.ToString()\n        };\n        var exitCode = ex switch\n        {\n            IpcConnectException => -1,\n            IpcException => -2,\n            _ => -99\n        };\n\n        if (!Console.IsOutputRedirected)\n        {\n            Console.ResetColor();\n            Console.ForegroundColor = ConsoleColor.Red;\n        }\n\n        context.Console.Error.WriteLine(message);\n        context.ExitCode = exitCode;\n\n        if (!Console.IsOutputRedirected)\n            Console.ResetColor();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI.Lib/Constants.cs",
    "content": "﻿namespace LenovoLegionToolkit.CLI.Lib;\n\npublic static class Constants\n{\n    public const string PIPE_NAME = \"LenovoLegionToolkit-IPC-0\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI.Lib/Extensions/PipeStreamExtensions.cs",
    "content": "﻿using System;\nusing System.IO.Pipes;\nusing System.Text;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.CLI.Lib.Extensions;\n\npublic static class PipeStreamExtensions\n{\n    private static readonly Encoding Encoding = Encoding.UTF8;\n\n    public static async Task WriteObjectAsync<T>(this PipeStream stream, T obj, CancellationToken token = default)\n    {\n        if (stream.ReadMode != PipeTransmissionMode.Message)\n            throw new InvalidOperationException(\"ReadMode is not PipeTransmissionMode.Message\");\n\n        var str = JsonConvert.SerializeObject(obj);\n        var bytes = Encoding.GetBytes(str);\n        await stream.WriteAsync(bytes, token).ConfigureAwait(false);\n    }\n\n    public static async Task<T?> ReadObjectAsync<T>(this PipeStream stream, CancellationToken token = default)\n    {\n        if (stream.ReadMode != PipeTransmissionMode.Message)\n            throw new InvalidOperationException(\"ReadMode is not PipeTransmissionMode.Message\");\n\n        var buffer = new byte[1024];\n        var builder = new StringBuilder();\n\n        do\n        {\n            _ = await stream.ReadAsync(buffer, token).ConfigureAwait(false);\n            builder.Append(Encoding.GetString(buffer));\n        } while (!stream.IsMessageComplete);\n\n        return JsonConvert.DeserializeObject<T>(builder.ToString());\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI.Lib/IpcConnectException.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.CLI.Lib;\n\npublic class IpcConnectException : Exception;\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI.Lib/IpcException.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.CLI.Lib;\n\npublic class IpcException(string? name) : Exception(name);\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI.Lib/IpcRequest.cs",
    "content": "﻿namespace LenovoLegionToolkit.CLI.Lib;\n\npublic class IpcRequest\n{\n    public enum OperationType\n    {\n        Unknown,\n        ListFeatures,\n        ListFeatureValues,\n        ListQuickActions,\n        GetFeatureValue,\n        SetFeatureValue,\n        GetSpectrumProfile,\n        SetSpectrumProfile,\n        GetSpectrumBrightness,\n        SetSpectrumBrightness,\n        GetRGBPreset,\n        SetRGBPreset,\n        QuickAction,\n    }\n\n    public OperationType? Operation { get; init; }\n\n    public string? Name { get; init; }\n\n    public string? Value { get; init; }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI.Lib/IpcResponse.cs",
    "content": "﻿namespace LenovoLegionToolkit.CLI.Lib;\n\npublic class IpcResponse\n{\n    public bool Success { get; init; }\n\n    public string? Message { get; init; }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.CLI.Lib/LenovoLegionToolkit.CLI.Lib.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n    <PropertyGroup>\n        <TargetFramework>net8.0-windows</TargetFramework>\n        <RuntimeIdentifier>win-x64</RuntimeIdentifier>\n        <Platforms>x64</Platforms>\n        <ImplicitUsings>disable</ImplicitUsings>\n        <Nullable>enable</Nullable>\n\t    <Copyright>© 2024 Bartosz Cichecki</Copyright>\n        <NeutralLanguage>en</NeutralLanguage>\n    </PropertyGroup>\n\t<ItemGroup>\n\t\t<PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n\t</ItemGroup>\n</Project>\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/AutoListeners/AbstractAutoListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\nusing NeoSmart.AsyncLock;\n\nnamespace LenovoLegionToolkit.Lib.AutoListeners;\n\npublic abstract class AbstractAutoListener<TEventArgs> : IAutoListener<TEventArgs> where TEventArgs : EventArgs\n{\n    private readonly AsyncLock _startStopLock = new();\n\n    private bool _started;\n\n    private event EventHandler<TEventArgs>? Changed;\n\n    public async Task SubscribeChangedAsync(EventHandler<TEventArgs> eventHandler)\n    {\n        Changed += eventHandler;\n        await StartStopAsync().ConfigureAwait(false);\n    }\n\n    public async Task UnsubscribeChangedAsync(EventHandler<TEventArgs> eventHandler)\n    {\n        Changed -= eventHandler;\n        await StartStopAsync().ConfigureAwait(false);\n    }\n\n    private async Task StartStopAsync()\n    {\n        using (await _startStopLock.LockAsync().ConfigureAwait(false))\n        {\n            var subscribers = Changed?.GetInvocationList().Length ?? 0;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Subscribers: {subscribers}. [type={GetType().Name}]\");\n\n            if (subscribers > 0)\n                await StartInternalAsync().ConfigureAwait(false);\n            else\n                await StopInternalAsync().ConfigureAwait(false);\n        }\n    }\n\n    private async Task StartInternalAsync()\n    {\n        if (_started)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Already started. [type={GetType().Name}]\");\n\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Starting... [type={GetType().Name}]\");\n\n        await StartAsync().ConfigureAwait(false);\n\n        _started = true;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Started. [type={GetType().Name}]\");\n    }\n\n    private async Task StopInternalAsync()\n    {\n        if (!_started)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Already stopped. [type={GetType().Name}]\");\n\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopping... [type={GetType().Name}]\");\n\n        await StopAsync().ConfigureAwait(false);\n\n        _started = false;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopped. [type={GetType().Name}]\");\n    }\n\n    protected abstract Task StartAsync();\n\n    protected abstract Task StopAsync();\n\n    protected void RaiseChanged(TEventArgs value) => Changed?.Invoke(this, value);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/AutoListeners/GameAutoListener.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.GameDetection;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.AutoListeners;\n\npublic class GameAutoListener : AbstractAutoListener<GameAutoListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(bool running) : EventArgs\n    {\n        public bool Running { get; } = running;\n    }\n\n    private class ProcessEqualityComparer : IEqualityComparer<Process>\n    {\n        public bool Equals(Process? x, Process? y)\n        {\n            if (ReferenceEquals(x, y)) return true;\n            if (x is null) return false;\n            if (y is null) return false;\n            if (x.GetType() != y.GetType()) return false;\n            return x.Id == y.Id;\n        }\n\n        public int GetHashCode(Process obj) => obj.Id;\n    }\n\n    private static readonly object Lock = new();\n\n    private readonly InstanceStartedEventAutoAutoListener _instanceStartedEventAutoAutoListener;\n\n    private readonly GameConfigStoreDetector _gameConfigStoreDetector;\n    private readonly EffectiveGameModeDetector _effectiveGameModeDetector;\n\n    private readonly HashSet<ProcessInfo> _detectedGamePathsCache = [];\n    private readonly HashSet<Process> _processCache = new(new ProcessEqualityComparer());\n\n    private bool _lastState;\n\n    public GameAutoListener(InstanceStartedEventAutoAutoListener instanceStartedEventAutoAutoListener)\n    {\n        _instanceStartedEventAutoAutoListener = instanceStartedEventAutoAutoListener;\n\n        _gameConfigStoreDetector = new GameConfigStoreDetector();\n        _gameConfigStoreDetector.GamesDetected += GameConfigStoreDetectorGamesConfigStoreDetected;\n\n        _effectiveGameModeDetector = new EffectiveGameModeDetector();\n        _effectiveGameModeDetector.Changed += EffectiveGameModeDetectorChanged;\n    }\n\n    protected override async Task StartAsync()\n    {\n        lock (Lock)\n        {\n            foreach (var gamePath in GameConfigStoreDetector.GetDetectedGamePaths())\n                _detectedGamePathsCache.Add(gamePath);\n        }\n\n        await _gameConfigStoreDetector.StartAsync().ConfigureAwait(false);\n        await _effectiveGameModeDetector.StartAsync().ConfigureAwait(false);\n\n        await _instanceStartedEventAutoAutoListener.SubscribeChangedAsync(InstanceStartedEventAutoAutoListener_Changed).ConfigureAwait(false);\n    }\n\n    protected override async Task StopAsync()\n    {\n        await _instanceStartedEventAutoAutoListener.UnsubscribeChangedAsync(InstanceStartedEventAutoAutoListener_Changed).ConfigureAwait(false);\n\n        await _gameConfigStoreDetector.StopAsync().ConfigureAwait(false);\n        await _effectiveGameModeDetector.StopAsync().ConfigureAwait(false);\n\n        lock (Lock)\n        {\n            foreach (var process in _processCache)\n                Detach(process);\n\n            _processCache.Clear();\n            _detectedGamePathsCache.Clear();\n            _lastState = false;\n        }\n    }\n\n    public bool AreGamesRunning()\n    {\n        lock (Lock)\n        {\n            return _lastState;\n        }\n    }\n\n    private void GameConfigStoreDetectorGamesConfigStoreDetected(object? sender, GameConfigStoreDetector.GameDetectedEventArgs e)\n    {\n        lock (Lock)\n        {\n            _detectedGamePathsCache.Clear();\n\n            foreach (var game in e.Games)\n            {\n                _detectedGamePathsCache.Add(game);\n\n                foreach (var process in Process.GetProcessesByName(game.Name))\n                {\n                    try\n                    {\n                        var processPath = process.MainModule?.FileName;\n                        if (game.ExecutablePath is null || !game.ExecutablePath.Equals(processPath, StringComparison.CurrentCultureIgnoreCase))\n                            continue;\n\n                        if (!_processCache.Contains(process))\n                        {\n                            Attach(process);\n                            _processCache.Add(process);\n                        }\n\n                        RaiseChangedIfNeeded(true);\n                    }\n                    catch (Exception)\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Can't get game \\\"{game}\\\" details.\");\n                    }\n                }\n            }\n        }\n    }\n\n    private void EffectiveGameModeDetectorChanged(object? sender, bool e)\n    {\n        lock (Lock)\n        {\n            if (_processCache.Count != 0)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Ignoring, process cache is not empty.\");\n                return;\n            }\n\n            RaiseChangedIfNeeded(e);\n        }\n    }\n\n    private void InstanceStartedEventAutoAutoListener_Changed(object? sender, InstanceStartedEventAutoAutoListener.ChangedEventArgs e)\n    {\n        lock (Lock)\n        {\n            if (e.ProcessId < 0)\n                return;\n\n            if (!_detectedGamePathsCache.Any(p => e.ProcessName.Equals(p.Name, StringComparison.CurrentCultureIgnoreCase)))\n                return;\n\n            try\n            {\n                var process = Process.GetProcessById(e.ProcessId);\n                var processPath = process.GetFileName();\n\n                if (string.IsNullOrEmpty(processPath))\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Can't get path for {e.ProcessName}. [processId={e.ProcessId}]\");\n\n                    return;\n                }\n\n                var processInfo = ProcessInfo.FromPath(processPath);\n                if (!_detectedGamePathsCache.Contains(processInfo))\n                    return;\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Game {processInfo} is running. [processId={e.ProcessId}, processPath={processPath}]\");\n\n                Attach(process);\n                _processCache.Add(process);\n\n                RaiseChangedIfNeeded(true);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Failed to attach to {e.ProcessName}. [processId={e.ProcessId}]\", ex);\n            }\n        }\n    }\n\n    private void RaiseChangedIfNeeded(bool newState)\n    {\n        lock (Lock)\n        {\n            if (newState == _lastState)\n                return;\n\n            _lastState = newState;\n\n            RaiseChanged(new ChangedEventArgs(newState));\n        }\n    }\n\n    private void Attach(Process process)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Attaching to process {process.Id}...\");\n\n        process.EnableRaisingEvents = true;\n        process.Exited += Process_Exited;\n    }\n\n    private void Detach(Process process)\n    {\n        process.EnableRaisingEvents = false;\n        process.Exited -= Process_Exited;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Detached from process {process.Id}.\");\n    }\n\n    private void Process_Exited(object? o, EventArgs args)\n    {\n        lock (Lock)\n        {\n            if (o is not Process process)\n                return;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Process {process.Id} exited.\");\n\n            var staleProcesses = _processCache.RemoveWhere(p =>\n            {\n                try { return p.HasExited; }\n                catch { return true; }\n            });\n\n            if (staleProcesses > 1)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Removed {staleProcesses} stale processes.\");\n            }\n\n            if (_processCache.Count != 0)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"More games are running...\");\n\n                return;\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"No more games are running.\");\n\n            RaiseChangedIfNeeded(false);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/AutoListeners/IAutoListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.AutoListeners;\n\npublic interface IAutoListener<T> where T : EventArgs\n{\n    Task SubscribeChangedAsync(EventHandler<T> eventHandler);\n    Task UnsubscribeChangedAsync(EventHandler<T> eventHandler);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/AutoListeners/InstanceStartedEventAutoAutoListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.AutoListeners;\n\npublic class InstanceStartedEventAutoAutoListener : AbstractAutoListener<InstanceStartedEventAutoAutoListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(int processId, string processName) : EventArgs\n    {\n        public int ProcessId { get; } = processId;\n        public string ProcessName { get; } = processName;\n    }\n\n    private IDisposable? _disposable;\n\n    protected override Task StartAsync()\n    {\n        _disposable = WMI.Win32.ProcessStartTrace.Listen(Handle);\n        return Task.CompletedTask;\n    }\n\n\n    protected override Task StopAsync()\n    {\n        _disposable?.Dispose();\n        _disposable = null;\n        return Task.CompletedTask;\n    }\n\n    private void Handle(int processId, string processName) => RaiseChanged(new ChangedEventArgs(processId, processName));\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/AutoListeners/InstanceStoppedEventAutoAutoListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.AutoListeners;\n\npublic class InstanceStoppedEventAutoAutoListener : AbstractAutoListener<InstanceStoppedEventAutoAutoListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(int processId, string processName) : EventArgs\n    {\n        public int ProcessId { get; } = processId;\n        public string ProcessName { get; } = processName;\n    }\n\n    private IDisposable? _disposable;\n\n    protected override Task StartAsync()\n    {\n        _disposable = WMI.Win32.ProcessStopTrace.Listen(Handle);\n        return Task.CompletedTask;\n    }\n\n\n    protected override Task StopAsync()\n    {\n        _disposable?.Dispose();\n        _disposable = null;\n        return Task.CompletedTask;\n    }\n\n    private void Handle(int processId, string processName) => RaiseChanged(new ChangedEventArgs(processId, processName));\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/AutoListeners/ProcessAutoListener.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.AutoListeners;\n\npublic class ProcessAutoListener(\n    InstanceStartedEventAutoAutoListener instanceStartedEventAutoAutoListener,\n    InstanceStoppedEventAutoAutoListener instanceStoppedEventAutoAutoListener)\n    : AbstractAutoListener<ProcessAutoListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(ProcessEventInfoType type, ProcessInfo processInfo) : EventArgs\n    {\n        public ProcessEventInfoType Type { get; } = type;\n\n        public ProcessInfo ProcessInfo { get; } = processInfo;\n    }\n\n    private static readonly object Lock = new();\n\n    // ReSharper disable StringLiteralTypo\n\n    private static readonly string[] IgnoredNames =\n    [\n        \"backgroundTaskHost\",\n        \"cmd\",\n        \"CompPkgSrv\",\n        \"conhost\",\n        \"dllhost\",\n        \"Lenovo Legion Toolkit\",\n        \"msedge\",\n        \"msedgewebview2\",\n        \"NvOAWrapperCache\",\n        \"SearchProtocolHost\",\n        \"svchost\",\n        \"taskhostw\",\n        \"WmiApSrv\",\n        \"WmiPrvSE\"\n    ];\n\n    // ReSharper restore StringLiteralTypo\n\n    private static readonly string[] IgnoredPaths =\n    [\n        Environment.GetFolderPath(Environment.SpecialFolder.Windows),\n    ];\n\n    private readonly Dictionary<int, ProcessInfo> _processCache = [];\n\n    protected override async Task StartAsync()\n    {\n        await instanceStartedEventAutoAutoListener.SubscribeChangedAsync(InstanceStartedEventAutoListener_Changed).ConfigureAwait(false);\n        await instanceStoppedEventAutoAutoListener.SubscribeChangedAsync(InstanceStoppedEventAutoListener_Changed).ConfigureAwait(false);\n    }\n\n    protected override async Task StopAsync()\n    {\n        await instanceStartedEventAutoAutoListener.UnsubscribeChangedAsync(InstanceStartedEventAutoListener_Changed).ConfigureAwait(false);\n        await instanceStoppedEventAutoAutoListener.UnsubscribeChangedAsync(InstanceStoppedEventAutoListener_Changed).ConfigureAwait(false);\n\n        lock (Lock)\n            _processCache.Clear();\n    }\n\n    private void InstanceStartedEventAutoListener_Changed(object? sender, InstanceStartedEventAutoAutoListener.ChangedEventArgs e)\n    {\n        lock (Lock)\n        {\n            if (e.ProcessId < 0)\n                return;\n\n            if (string.IsNullOrWhiteSpace(e.ProcessName))\n                return;\n\n            if (IgnoredNames.Contains(e.ProcessName, StringComparer.InvariantCultureIgnoreCase))\n                return;\n\n            string? processPath = null;\n            try\n            {\n                processPath = Process.GetProcessById(e.ProcessId).GetFileName();\n            }\n            catch (ArgumentException)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Process {e.ProcessName} isn't running, ignoring... [processId={e.ProcessId}]\");\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Can't get process {e.ProcessName} details. [processId={e.ProcessId}]\", ex);\n            }\n\n            if (!string.IsNullOrEmpty(processPath) && IgnoredPaths.Any(p => processPath.StartsWith(p, StringComparison.InvariantCultureIgnoreCase)))\n                return;\n\n            var processInfo = new ProcessInfo(e.ProcessName, processPath);\n            _processCache[e.ProcessId] = processInfo;\n\n            CleanUpCacheIfNecessary();\n\n            RaiseChanged(new ChangedEventArgs(ProcessEventInfoType.Started, processInfo));\n        }\n    }\n\n    private void InstanceStoppedEventAutoListener_Changed(object? sender, InstanceStoppedEventAutoAutoListener.ChangedEventArgs e)\n    {\n        lock (Lock)\n        {\n            CleanUpCacheIfNecessary();\n\n            if (e.ProcessId < 0)\n                return;\n\n            if (string.IsNullOrWhiteSpace(e.ProcessName))\n                return;\n\n            if (IgnoredNames.Contains(e.ProcessName, StringComparer.InvariantCultureIgnoreCase))\n                return;\n\n            if (!_processCache.Remove(e.ProcessId, out var processInfo))\n                return;\n\n            RaiseChanged(new ChangedEventArgs(ProcessEventInfoType.Stopped, processInfo));\n        }\n    }\n\n    private void CleanUpCacheIfNecessary()\n    {\n        if (_processCache.Count < 250)\n            return;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Cleaning up process cache. Current size: {_processCache.Count}.\");\n\n        foreach (var (processId, _) in _processCache)\n        {\n            try\n            {\n                _ = Process.GetProcessById(processId);\n            }\n            catch (ArgumentException)\n            {\n                _processCache.Remove(processId);\n            }\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Cleaned up process cache. Current size: {_processCache.Count}.\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/AutoListeners/TimeAutoListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Timers;\nusing LenovoLegionToolkit.Lib.Extensions;\n\nnamespace LenovoLegionToolkit.Lib.AutoListeners;\n\npublic class TimeAutoListener : AbstractAutoListener<TimeAutoListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(Time time, DayOfWeek day) : EventArgs\n    {\n        public Time Time { get; } = time;\n        public DayOfWeek Day { get; } = day;\n    }\n\n    private readonly Timer _timer;\n\n    public TimeAutoListener()\n    {\n        _timer = new Timer(60_000);\n        _timer.Elapsed += Timer_Elapsed;\n        _timer.AutoReset = true;\n    }\n\n    protected override Task StartAsync()\n    {\n        if (!_timer.Enabled)\n            _timer.Enabled = true;\n\n        return Task.CompletedTask;\n    }\n\n    protected override Task StopAsync()\n    {\n        _timer.Enabled = false;\n\n        return Task.CompletedTask;\n    }\n\n    private void Timer_Elapsed(object? sender, ElapsedEventArgs e) => RaiseChanged(new ChangedEventArgs(TimeExtensions.UtcNow, DateTime.UtcNow.DayOfWeek));\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/AutoListeners/UserInactivityAutoListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.UI.WindowsAndMessaging;\nusing Timer = System.Threading.Timer;\n\nnamespace LenovoLegionToolkit.Lib.AutoListeners;\n\npublic class UserInactivityAutoListener(IMainThreadDispatcher mainThreadDispatcher)\n    : AbstractAutoListener<UserInactivityAutoListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(TimeSpan timerResolution, uint tickCount) : EventArgs\n    {\n        public TimeSpan TimerResolution { get; } = timerResolution;\n        public uint TickCount { get; } = tickCount;\n    }\n\n    private class UserInactivityWindow : NativeWindow, IDisposable\n    {\n        private readonly Action _callback;\n\n        private readonly HOOKPROC _hookProc;\n\n        private HHOOK _kbHook;\n        private HHOOK _mouseHook;\n\n        public UserInactivityWindow(Action callback)\n        {\n            _callback = callback;\n\n            _hookProc = HookProc;\n        }\n\n        public void Create()\n        {\n            CreateHandle(new CreateParams\n            {\n                Caption = \"LenovoLegionToolkit_UserInactivityListenerWindow\",\n                Parent = new IntPtr(-3)\n            });\n\n            _kbHook = PInvoke.SetWindowsHookEx(WINDOWS_HOOK_ID.WH_KEYBOARD_LL, _hookProc, HINSTANCE.Null, 0);\n            _mouseHook = PInvoke.SetWindowsHookEx(WINDOWS_HOOK_ID.WH_MOUSE_LL, _hookProc, HINSTANCE.Null, 0);\n        }\n\n        private LRESULT HookProc(int nCode, WPARAM wParam, LPARAM lParam)\n        {\n            _callback();\n            return PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam);\n        }\n\n        public void Dispose()\n        {\n            PInvoke.UnhookWindowsHookEx(_kbHook);\n            PInvoke.UnhookWindowsHookEx(_mouseHook);\n\n            _kbHook = HHOOK.Null;\n            _mouseHook = HHOOK.Null;\n\n            ReleaseHandle();\n\n            GC.SuppressFinalize(this);\n        }\n    }\n\n    private readonly TimeSpan _timerResolution = TimeSpan.FromSeconds(10);\n    private readonly object _lock = new();\n\n    private UserInactivityWindow? _window;\n    private uint _tickCount;\n    private Timer? _timer;\n\n    public TimeSpan InactivityTimeSpan => _timerResolution * _tickCount;\n\n    protected override Task StartAsync() => mainThreadDispatcher.DispatchAsync(() =>\n    {\n        lock (_lock)\n        {\n            _timer = new Timer(TimerCallback, null, _timerResolution, _timerResolution);\n            _tickCount = 0;\n\n            var window = new UserInactivityWindow(WindowCallback);\n            window.Create();\n            _window = window;\n        }\n\n        return Task.CompletedTask;\n    });\n\n    protected override Task StopAsync() => mainThreadDispatcher.DispatchAsync(() =>\n    {\n        lock (_lock)\n        {\n            _timer?.Dispose();\n            _timer = null;\n            _tickCount = 0;\n\n            _window?.Dispose();\n            _window = null;\n        }\n\n        return Task.CompletedTask;\n    });\n\n    private void WindowCallback()\n    {\n        lock (_lock)\n        {\n            _timer?.Change(_timerResolution, _timerResolution);\n\n            if (_tickCount < 1)\n                return;\n\n            _tickCount = 0;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"User became active.\");\n\n            RaiseChanged(new ChangedEventArgs(_timerResolution, 0));\n        }\n    }\n\n    private void TimerCallback(object? state)\n    {\n        lock (_lock)\n        {\n            _tickCount++;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"User is not active [time={_timerResolution * _tickCount}]\");\n\n            RaiseChanged(new ChangedEventArgs(_timerResolution, _tickCount));\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/AutoListeners/WiFiAutoListener.cs",
    "content": "﻿using System;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.NetworkManagement.WiFi;\n\nnamespace LenovoLegionToolkit.Lib.AutoListeners;\n\npublic class WiFiAutoListener : AbstractAutoListener<WiFiAutoListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(bool isConnected, string? ssid) : EventArgs\n    {\n        public bool IsConnected { get; } = isConnected;\n        public string? Ssid { get; } = ssid;\n    }\n\n    private readonly IMainThreadDispatcher _mainThreadDispatcher;\n    private readonly WLAN_NOTIFICATION_CALLBACK _wlanCallback;\n\n    private LambdaDisposable? _wlanNotificationDisposable;\n\n    public unsafe WiFiAutoListener(IMainThreadDispatcher mainThreadDispatcher)\n    {\n        _mainThreadDispatcher = mainThreadDispatcher;\n\n        _wlanCallback = WlanCallback;\n    }\n\n    protected override Task StartAsync() => _mainThreadDispatcher.DispatchAsync(() =>\n    {\n        _wlanNotificationDisposable = RegisterWlanNotification();\n        return Task.CompletedTask;\n    });\n\n    protected override Task StopAsync() => _mainThreadDispatcher.DispatchAsync(() =>\n    {\n        _wlanNotificationDisposable?.Dispose();\n        _wlanNotificationDisposable = null;\n        return Task.CompletedTask;\n    });\n\n    private unsafe LambdaDisposable? RegisterWlanNotification()\n    {\n        var handlePtr = IntPtr.Zero;\n\n        try\n        {\n            handlePtr = Marshal.AllocHGlobal(Marshal.SizeOf<HANDLE>());\n\n            if (PInvoke.WlanOpenHandle(2, out _, (HANDLE*)handlePtr) != 0)\n                return null;\n\n            var handle = Marshal.PtrToStructure<HANDLE>(handlePtr);\n\n            var result = PInvoke.WlanRegisterNotification(handle,\n                WLAN_NOTIFICATION_SOURCES.WLAN_NOTIFICATION_SOURCE_ACM,\n                true,\n                _wlanCallback,\n                null,\n                null,\n                null);\n            if (result != 0)\n                return null;\n\n            return new LambdaDisposable(() =>\n            {\n                _ = PInvoke.WlanRegisterNotification(handle,\n                    WLAN_NOTIFICATION_SOURCES.WLAN_NOTIFICATION_SOURCE_NONE,\n                    true,\n                    _wlanCallback,\n                    null,\n                    null,\n                    null);\n\n                _ = PInvoke.WlanCloseHandle(handle, null);\n            });\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(handlePtr);\n        }\n    }\n\n    private unsafe void WlanCallback(L2_NOTIFICATION_DATA* param0, void* param1)\n    {\n        ref var data = ref Unsafe.AsRef<L2_NOTIFICATION_DATA>(param0);\n\n        switch (data.NotificationCode)\n        {\n            case 0x0A: /* Connected */\n                ref var notificationData = ref Unsafe.AsRef<WLAN_CONNECTION_NOTIFICATION_DATA>(data.pData);\n                var dot11Ssid = notificationData.dot11Ssid;\n                var ssid = Encoding.UTF8.GetString(dot11Ssid.ucSSID.Value, (int)dot11Ssid.uSSIDLength);\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"WiFi connected. [ssid={ssid}]\");\n\n                RaiseChanged(new ChangedEventArgs(true, ssid));\n                break;\n            case 0x15: /* Disconnected */\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"WiFi disconnected.\");\n\n                RaiseChanged(new ChangedEventArgs(false, null));\n                break;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/AIController.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.AutoListeners;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\nusing NeoSmart.AsyncLock;\n\nnamespace LenovoLegionToolkit.Lib.Controllers;\n\npublic class AIController(\n    PowerModeListener powerModeListener,\n    PowerStateListener powerStateListener,\n    GameAutoListener gameAutoListener,\n    PowerModeFeature powerModeFeature,\n    BalanceModeSettings settings)\n{\n    private readonly ThrottleLastDispatcher _dispatcher = new(TimeSpan.FromSeconds(1), nameof(AIController));\n\n    private readonly AsyncLock _startStopLock = new();\n\n    public bool IsAIModeEnabled\n    {\n        get => settings.Store.AIModeEnabled;\n        set\n        {\n            settings.Store.AIModeEnabled = value;\n            settings.SynchronizeStore();\n        }\n    }\n\n    public async Task StartIfNeededAsync()\n    {\n        if (!await IsSupportedAsync().ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not supported.\");\n\n            return;\n        }\n\n        await StopAsync().ConfigureAwait(false);\n\n        if (!IsAIModeEnabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"AI Mode is not enabled.\");\n            return;\n        }\n\n        using (await _startStopLock.LockAsync().ConfigureAwait(false))\n        {\n            powerModeListener.Changed += PowerModeListener_Changed;\n            powerStateListener.Changed += PowerStateListener_Changed;\n\n            await gameAutoListener.SubscribeChangedAsync(GameAutoListener_Changed).ConfigureAwait(false);\n\n            await RefreshAsync().ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Started.\");\n        }\n    }\n\n    public async Task StopAsync()\n    {\n        if (!await IsSupportedAsync().ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not supported.\");\n\n            return;\n        }\n\n        using (await _startStopLock.LockAsync().ConfigureAwait(false))\n        {\n            powerModeListener.Changed -= PowerModeListener_Changed;\n            powerStateListener.Changed -= PowerStateListener_Changed;\n\n            await gameAutoListener.UnsubscribeChangedAsync(GameAutoListener_Changed).ConfigureAwait(false);\n\n            if (await ShouldDisableAsync().ConfigureAwait(false))\n                await DisableAsync().ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Stopped.\");\n        }\n    }\n\n    private async void PowerModeListener_Changed(object? sender, PowerModeListener.ChangedEventArgs e) => await _dispatcher.DispatchAsync(RefreshAsync).ConfigureAwait(false);\n    private async void PowerStateListener_Changed(object? sender, PowerStateListener.ChangedEventArgs e) => await _dispatcher.DispatchAsync(RefreshAsync).ConfigureAwait(false);\n    private async void GameAutoListener_Changed(object? sender, GameAutoListener.ChangedEventArgs e) => await _dispatcher.DispatchAsync(RefreshAsync).ConfigureAwait(false);\n\n    private async Task RefreshAsync()\n    {\n        if (!await IsSupportedAsync().ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not supported.\");\n\n            return;\n        }\n\n        using (await _startStopLock.LockAsync().ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Refreshing...\");\n\n            if (await ShouldDisableAsync().ConfigureAwait(false))\n                await DisableAsync().ConfigureAwait(false);\n\n            if (await ShouldEnableAsync().ConfigureAwait(false))\n                await EnableAsync().ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Refreshed\");\n        }\n    }\n\n    private static async Task<bool> IsSupportedAsync()\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n        return mi.Properties.SupportsAIMode;\n    }\n\n    private async Task<bool> ShouldEnableAsync()\n    {\n        if (await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false) != PowerAdapterStatus.Connected)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Power adapter not connected.\");\n\n            return false;\n        }\n\n        if (await powerModeFeature.GetStateAsync().ConfigureAwait(false) != PowerModeState.Balance)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not in balanced mode.\");\n\n            return false;\n        }\n\n        if (!gameAutoListener.AreGamesRunning())\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Games aren't running.\");\n\n            return false;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"All conditions met.\");\n\n        return true;\n    }\n\n    private async Task<bool> ShouldDisableAsync()\n    {\n        if (await powerModeFeature.GetStateAsync().ConfigureAwait(false) != PowerModeState.Balance)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not in balanced mode.\");\n\n            return false;\n        }\n\n        if (await WMI.LenovoGameZoneData.GetIntelligentSubModeAsync().ConfigureAwait(false) == 0)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not needed.\");\n\n            return false;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"All conditions met.\");\n\n        return true;\n    }\n\n    private static async Task EnableAsync()\n    {\n        try\n        {\n            var targetSubMode = 1;\n\n            var intelligentOpList = await WMI.LenovoIntelligentOPList.ReadAsync().ConfigureAwait(false);\n            foreach (var (processName, subMode) in intelligentOpList)\n            {\n                var process = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(processName)).FirstOrDefault();\n                if (process is null)\n                    continue;\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Found running process {processName}. [processId={process.Id}, subMode={subMode}]\");\n\n                targetSubMode = subMode;\n                break;\n            }\n\n            await WMI.LenovoGameZoneData.SetIntelligentSubModeAsync(targetSubMode).ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Initial sub mode set.\");\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to start.\", ex);\n        }\n    }\n\n    private static async Task DisableAsync()\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Stopping...\");\n\n            await WMI.LenovoGameZoneData.SetIntelligentSubModeAsync(0).ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Stopped\");\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to stop.\", ex);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/DisplayBrightnessController.cs",
    "content": "﻿using System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Controllers;\n\npublic class DisplayBrightnessController\n{\n    public Task SetBrightnessAsync(int brightness) => WMI.WmiMonitorBrightnessMethods.WmiSetBrightness(brightness, 1);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/GPUController.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Resources;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\nusing NeoSmart.AsyncLock;\n\nnamespace LenovoLegionToolkit.Lib.Controllers;\n\npublic class GPUController\n{\n    private readonly AsyncLock _lock = new();\n\n    private Task? _refreshTask;\n    private CancellationTokenSource? _refreshCancellationTokenSource;\n\n    private GPUState _state = GPUState.Unknown;\n    private List<Process> _processes = [];\n    private string? _gpuInstanceId;\n    private string? _performanceState;\n\n    public event EventHandler<GPUStatus>? Refreshed;\n    public bool IsStarted { get => _refreshTask != null; }\n\n    public bool IsSupported()\n    {\n        try\n        {\n            NVAPI.Initialize();\n            return NVAPI.GetGPU() is not null;\n        }\n        catch\n        {\n            return false;\n        }\n        finally\n        {\n            try\n            {\n                NVAPI.Unload();\n            }\n            catch { /* Ignored. */ }\n        }\n    }\n\n    public async Task<GPUState> GetLastKnownStateAsync()\n    {\n        using (await _lock.LockAsync().ConfigureAwait(false))\n            return _state;\n    }\n\n    public async Task<GPUStatus> RefreshNowAsync()\n    {\n        using (await _lock.LockAsync().ConfigureAwait(false))\n        {\n            await RefreshLoopAsync(0, 0, CancellationToken.None).ConfigureAwait(false);\n            return new GPUStatus(_state, _performanceState, _processes);\n        }\n    }\n\n    public Task StartAsync(int delay = 1_000, int interval = 5_000)\n    {\n        if (IsStarted)\n            return Task.CompletedTask;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Starting... [delay={delay}, interval={interval}]\");\n\n        _refreshCancellationTokenSource = new CancellationTokenSource();\n        var token = _refreshCancellationTokenSource.Token;\n        _refreshTask = Task.Run(() => RefreshLoopAsync(delay, interval, token), token);\n        return Task.CompletedTask;\n    }\n\n    public async Task StopAsync(bool waitForFinish = false)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopping... [refreshTask.isNull={_refreshTask is null}, _refreshCancellationTokenSource.IsCancellationRequested={_refreshCancellationTokenSource?.IsCancellationRequested}]\");\n\n        if (_refreshCancellationTokenSource is not null)\n            await _refreshCancellationTokenSource.CancelAsync().ConfigureAwait(false);\n\n        if (waitForFinish)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Waiting to finish...\");\n\n            if (_refreshTask is not null)\n            {\n                try\n                {\n                    await _refreshTask.ConfigureAwait(false);\n                }\n                catch (OperationCanceledException) { }\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Finished\");\n        }\n\n        _refreshCancellationTokenSource = null;\n        _refreshTask = null;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopped\");\n    }\n\n    public async Task RestartGPUAsync()\n    {\n        using (await _lock.LockAsync().ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Deactivating... [state={_state}, gpuInstanceId={_gpuInstanceId}]\");\n\n            if (_state is not GPUState.Active and not GPUState.Inactive)\n                return;\n\n            if (string.IsNullOrEmpty(_gpuInstanceId))\n                return;\n\n            await CMD.RunAsync(\"pnputil\", $\"/restart-device \\\"{_gpuInstanceId}\\\"\").ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Deactivating... [state= {_state}, gpuInstanceId={_gpuInstanceId}]\");\n        }\n    }\n\n    public async Task KillGPUProcessesAsync()\n    {\n        using (await _lock.LockAsync().ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Deactivating... [state= {_state}, gpuInstanceId={_gpuInstanceId}]\");\n\n            if (_state is not GPUState.Active)\n                return;\n\n            if (string.IsNullOrEmpty(_gpuInstanceId))\n                return;\n\n            foreach (var process in _processes)\n            {\n                try\n                {\n                    process.Kill(true);\n                    await process.WaitForExitAsync().ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Couldn't kill process. [pid={process.Id}, name={process.ProcessName}]\", ex);\n                }\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Deactivating... [state=  {_state}, gpuInstanceId={_gpuInstanceId}]\");\n        }\n    }\n\n    private async Task RefreshLoopAsync(int delay, int interval, CancellationToken token)\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Initializing NVAPI...\");\n\n            NVAPI.Initialize();\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Initialized NVAPI\");\n\n            await Task.Delay(delay, token).ConfigureAwait(false);\n\n            while (true)\n            {\n                token.ThrowIfCancellationRequested();\n\n                using (await _lock.LockAsync(token).ConfigureAwait(false))\n                {\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Will refresh...\");\n\n                    await RefreshStateAsync().ConfigureAwait(false);\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Refreshed\");\n\n                    Refreshed?.Invoke(this, new GPUStatus(_state, _performanceState, _processes));\n                }\n\n                if (interval > 0)\n                    await Task.Delay(interval, token).ConfigureAwait(false);\n                else\n                    break;\n            }\n        }\n        catch (Exception ex) when (ex is not OperationCanceledException)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Exception occurred\", ex);\n\n            throw;\n        }\n        finally\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Unloading NVAPI...\");\n\n            NVAPI.Unload();\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Unloaded NVAPI\");\n        }\n    }\n\n    private async Task RefreshStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Refresh in progress...\");\n\n        _state = GPUState.Unknown;\n        _processes = [];\n        _gpuInstanceId = null;\n        _performanceState = null;\n\n        var gpu = NVAPI.GetGPU();\n        if (gpu is null)\n        {\n            _state = GPUState.NvidiaGpuNotFound;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"GPU present [state={_state}, processes.Count={_processes.Count}, gpuInstanceId={_gpuInstanceId}]\");\n\n            return;\n        }\n\n        try\n        {\n            var stateId = gpu.PerformanceStatesInfo.CurrentPerformanceState.StateId.ToString().GetUntilOrEmpty(\"_\");\n            _performanceState = Resource.GPUController_PoweredOn;\n            if (!string.IsNullOrWhiteSpace(stateId))\n                _performanceState += $\", {stateId}\";\n        }\n        catch (Exception ex) when (ex.Message == \"NVAPI_GPU_NOT_POWERED\")\n        {\n            _state = GPUState.PoweredOff;\n            _performanceState = Resource.GPUController_PoweredOff;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Powered off [state={_state}, processes.Count={_processes.Count}, gpuInstanceId={_gpuInstanceId}]\");\n\n            return;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"GPU status exception.\", ex);\n\n            _performanceState = \"Unknown\";\n        }\n\n        var pnpDeviceIdPart = NVAPI.GetGPUId(gpu);\n\n        if (string.IsNullOrEmpty(pnpDeviceIdPart))\n            throw new InvalidOperationException(\"pnpDeviceIdPart is null or empty\");\n\n        var gpuInstanceId = await WMI.Win32.PnpEntity.GetDeviceIDAsync(pnpDeviceIdPart).ConfigureAwait(false);\n        var processNames = NVAPIExtensions.GetActiveProcesses(gpu);\n\n        if (NVAPI.IsDisplayConnected(gpu))\n        {\n            _processes = processNames;\n            _state = GPUState.MonitorConnected;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace(\n                    $\"Monitor connected [state={_state}, processes.Count={_processes.Count}, gpuInstanceId={_gpuInstanceId}]\");\n        }\n        else if (processNames.Count != 0)\n        {\n            _processes = processNames;\n            _state = GPUState.Active;\n            _gpuInstanceId = gpuInstanceId;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Active [state={_state}, processes.Count={_processes.Count}, gpuInstanceId={_gpuInstanceId}, pnpDeviceIdPart={pnpDeviceIdPart}]\");\n        }\n        else\n        {\n            _state = GPUState.Inactive;\n            _gpuInstanceId = gpuInstanceId;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Inactive [state={_state}, processes.Count={_processes.Count}, gpuInstanceId={_gpuInstanceId}]\");\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/GPUOverclockController.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\nusing NvAPIWrapper.GPU;\nusing NvAPIWrapper.Native;\nusing NvAPIWrapper.Native.GPU;\nusing NvAPIWrapper.Native.GPU.Structures;\n\nnamespace LenovoLegionToolkit.Lib.Controllers;\n\npublic class GPUOverclockController\n{\n    private readonly GPUOverclockSettings _settings;\n    private readonly VantageDisabler _vantageDisabler;\n    private readonly LegionZoneDisabler _legionZoneDisabler;\n    private readonly NativeWindowsMessageListener _nativeWindowsMessageListener;\n\n    public event EventHandler? Changed;\n\n    public GPUOverclockController(GPUOverclockSettings settings,\n        VantageDisabler vantageDisabler,\n        LegionZoneDisabler legionZoneDisabler,\n        NativeWindowsMessageListener nativeWindowsMessageListener)\n    {\n        _settings = settings;\n        _vantageDisabler = vantageDisabler;\n        _legionZoneDisabler = legionZoneDisabler;\n        _nativeWindowsMessageListener = nativeWindowsMessageListener;\n        _nativeWindowsMessageListener.Changed += NativeWindowsMessageListenerOnChanged;\n    }\n\n    public static int GetMaxCoreDeltaMhz() => 500;\n\n    public static int GetMaxMemoryDeltaMhz()\n    {\n        try\n        {\n            NVAPI.Initialize();\n            return GetMaxMemoryDeltaMhz(NVAPI.GetGPU());\n        }\n        finally\n        {\n            try { NVAPI.Unload(); } catch { /* Ignored */ }\n        }\n    }\n\n    public async Task<bool> IsSupportedAsync()\n    {\n        bool isSupported;\n\n        try\n        {\n            NVAPI.Initialize();\n            isSupported = NVAPI.GetGPU() is not null;\n        }\n        catch\n        {\n            isSupported = false;\n        }\n        finally\n        {\n            try { NVAPI.Unload(); } catch { /* Ignored */ }\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"NVAPI status: {isSupported}.\");\n\n        if (!isSupported)\n            return isSupported;\n\n        try\n        {\n            isSupported = await WMI.LenovoGameZoneData.IsSupportGpuOCAsync().ConfigureAwait(false) > 0;\n\n            if (!isSupported)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Clearing settings...\");\n\n                _settings.Store.Enabled = false;\n                _settings.Store.Info = GPUOverclockInfo.Zero;\n                _settings.SynchronizeStore();\n            }\n        }\n        catch\n        {\n            isSupported = false;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Supports GPU OC status: {isSupported}\");\n\n        return isSupported;\n    }\n\n    public (bool, GPUOverclockInfo) GetState() => (_settings.Store.Enabled, _settings.Store.Info);\n\n    public void SaveState(bool enabled, GPUOverclockInfo info)\n    {\n        _settings.Store.Enabled = enabled;\n        _settings.Store.Info = info;\n        _settings.SynchronizeStore();\n    }\n\n    public async Task ApplyStateAsync(bool force = false)\n    {\n        if (await _vantageDisabler.GetStatusAsync().ConfigureAwait(false) == SoftwareStatus.Enabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Can't correctly apply state when Vantage is running.\");\n\n            Changed?.Invoke(this, EventArgs.Empty);\n            return;\n        }\n\n        if (await _legionZoneDisabler.GetStatusAsync().ConfigureAwait(false) == SoftwareStatus.Enabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Can't correctly apply state when Legion Zone is running.\");\n\n            Changed?.Invoke(this, EventArgs.Empty);\n            return;\n        }\n\n        var enabled = _settings.Store.Enabled;\n        var info = _settings.Store.Info;\n\n        if (force)\n        {\n            info = enabled ? info : GPUOverclockInfo.Zero;\n            enabled = true;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Forcing... [enabled=true, info={info}]\");\n        }\n\n        if (!enabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not enabled.\");\n\n            Changed?.Invoke(this, EventArgs.Empty);\n\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Applying overclock: {info}.\");\n\n        try\n        {\n            NVAPI.Initialize();\n\n            var gpu = NVAPI.GetGPU();\n            if (gpu is null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"dGPU not found.\");\n\n                Changed?.Invoke(this, EventArgs.Empty);\n\n                return;\n            }\n\n            SetOverclockInfo(gpu, info);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Applied overclock: {info}, current: {GetOverclockInfo(gpu)}.\");\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to apply overclock: {info}, clearing settings...\", ex);\n\n            _settings.Store.Enabled = false;\n            _settings.Store.Info = GPUOverclockInfo.Zero;\n            _settings.SynchronizeStore();\n        }\n        finally\n        {\n            Changed?.Invoke(this, EventArgs.Empty);\n\n            try { NVAPI.Unload(); } catch { /* Ignored */ }\n        }\n    }\n\n    public async Task<bool> EnsureOverclockIsAppliedAsync()\n    {\n        var (enabled, _) = GetState();\n        if (!enabled)\n            return false;\n\n        await ApplyStateAsync().ConfigureAwait(false);\n        return true;\n    }\n\n    private async void NativeWindowsMessageListenerOnChanged(object? sender, NativeWindowsMessageListener.ChangedEventArgs e)\n    {\n        if (e.Message != NativeWindowsMessage.OnDisplayDeviceArrival)\n            return;\n\n        if (await IsSupportedAsync().ConfigureAwait(false))\n            await ApplyStateAsync().ConfigureAwait(false);\n    }\n\n    private static int GetMaxMemoryDeltaMhz(PhysicalGPU? gpu) => gpu?.MemoryInformation.RAMMaker switch\n    {\n        GPUMemoryMaker.Samsung => 1500,\n        _ => 750\n    };\n\n    private static void SetOverclockInfo(PhysicalGPU gpu, GPUOverclockInfo info)\n    {\n        var coreDelta = Math.Clamp(info.CoreDeltaMhz, 0, GetMaxCoreDeltaMhz());\n        var memoryDelta = Math.Clamp(info.MemoryDeltaMhz, 0, GetMaxMemoryDeltaMhz(gpu));\n\n        var clockEntries = new[]\n        {\n            new PerformanceStates20ClockEntryV1(PublicClockDomain.Graphics, new PerformanceStates20ParameterDelta(coreDelta * 1000)),\n            new PerformanceStates20ClockEntryV1(PublicClockDomain.Memory, new PerformanceStates20ParameterDelta(memoryDelta * 1000))\n        };\n        var voltageEntries = Array.Empty<PerformanceStates20BaseVoltageEntryV1>();\n        var performanceStateInfo = new[] { new PerformanceStates20InfoV1.PerformanceState20(PerformanceStateId.P0_3DPerformance, clockEntries, voltageEntries) };\n\n        var overclock = new PerformanceStates20InfoV1(performanceStateInfo, 2, 0);\n        GPUApi.SetPerformanceStates20(gpu.Handle, overclock);\n    }\n\n    private static GPUOverclockInfo GetOverclockInfo(PhysicalGPU gpu)\n    {\n        var states = GPUApi.GetPerformanceStates20(gpu.Handle);\n        var core = states.Clocks[PerformanceStateId.P0_3DPerformance][0].FrequencyDeltaInkHz.DeltaValue / 1000;\n        var memory = states.Clocks[PerformanceStateId.P0_3DPerformance][1].FrequencyDeltaInkHz.DeltaValue / 1000;\n        return new(core, memory);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/GodMode/AbstractGodModeController.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.GodMode;\n\npublic abstract class AbstractGodModeController(GodModeSettings settings)\n    : IGodModeController\n{\n    public event EventHandler<Guid>? PresetChanged;\n\n    public abstract Task<bool> NeedsVantageDisabledAsync();\n\n    public abstract Task<bool> NeedsLegionZoneDisabledAsync();\n\n    public Task<Guid> GetActivePresetIdAsync() => Task.FromResult(settings.Store.ActivePresetId);\n\n    public Task<string?> GetActivePresetNameAsync()\n    {\n        var store = settings.Store;\n        var name = store.Presets\n            .Where(p => p.Key == store.ActivePresetId)\n            .Select(p => p.Value.Name)\n            .FirstOrDefault();\n        return Task.FromResult(name);\n    }\n\n    public async Task<GodModeState> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state...\");\n\n        var store = settings.Store;\n        var defaultState = await GetDefaultStateAsync().ConfigureAwait(false);\n\n        if (!IsValidStore(store))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Loading default state...\");\n\n            var id = Guid.NewGuid();\n            return new GodModeState\n            {\n                ActivePresetId = id,\n                Presets = new Dictionary<Guid, GodModePreset> { { id, defaultState } }.AsReadOnlyDictionary()\n            };\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Loading state from store...\");\n\n        return await LoadStateFromStoreAsync(store, defaultState).ConfigureAwait(false);\n    }\n\n    public Task SetStateAsync(GodModeState state)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state...\");\n\n        var activePresetId = state.ActivePresetId;\n        var presets = new Dictionary<Guid, GodModeSettings.GodModeSettingsStore.Preset>();\n\n        foreach (var (id, preset) in state.Presets)\n        {\n            presets.Add(id, new()\n            {\n                Name = preset.Name,\n                CPULongTermPowerLimit = preset.CPULongTermPowerLimit,\n                CPUShortTermPowerLimit = preset.CPUShortTermPowerLimit,\n                CPUPeakPowerLimit = preset.CPUPeakPowerLimit,\n                CPUCrossLoadingPowerLimit = preset.CPUCrossLoadingPowerLimit,\n                CPUPL1Tau = preset.CPUPL1Tau,\n                APUsPPTPowerLimit = preset.APUsPPTPowerLimit,\n                CPUTemperatureLimit = preset.CPUTemperatureLimit,\n                GPUPowerBoost = preset.GPUPowerBoost,\n                GPUConfigurableTGP = preset.GPUConfigurableTGP,\n                GPUTemperatureLimit = preset.GPUTemperatureLimit,\n                GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline = preset.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline,\n                GPUToCPUDynamicBoost = preset.GPUToCPUDynamicBoost,\n                FanTable = preset.FanTableInfo?.Table,\n                FanFullSpeed = preset.FanFullSpeed,\n                MinValueOffset = preset.MinValueOffset,\n                MaxValueOffset = preset.MaxValueOffset,\n            });\n        }\n\n        settings.Store.ActivePresetId = activePresetId;\n        settings.Store.Presets = presets;\n        settings.SynchronizeStore();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State saved.\");\n\n        return Task.CompletedTask;\n    }\n\n    public abstract Task ApplyStateAsync();\n\n    public Task<FanTable> GetDefaultFanTableAsync()\n    {\n        var fanTable = new FanTable([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);\n        return Task.FromResult(fanTable);\n    }\n\n    public abstract Task<FanTable> GetMinimumFanTableAsync();\n\n    public abstract Task<Dictionary<PowerModeState, GodModeDefaults>> GetDefaultsInOtherPowerModesAsync();\n\n    public abstract Task RestoreDefaultsInOtherPowerModeAsync(PowerModeState state);\n\n    protected abstract Task<GodModePreset> GetDefaultStateAsync();\n\n    protected void RaisePresetChanged(Guid presetId) => PresetChanged?.Invoke(this, presetId);\n\n    protected async Task<(Guid, GodModeSettings.GodModeSettingsStore.Preset)> GetActivePresetAsync()\n    {\n        if (!IsValidStore(settings.Store))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Invalid store, generating default one.\");\n\n            var state = await GetStateAsync().ConfigureAwait(false);\n            await SetStateAsync(state).ConfigureAwait(false);\n        }\n\n        var activePresetId = settings.Store.ActivePresetId;\n        var presets = settings.Store.Presets;\n\n        if (presets.TryGetValue(activePresetId, out var activePreset))\n            return (activePresetId, activePreset);\n\n        throw new InvalidOperationException($\"Preset with ID {activePresetId} not found\");\n    }\n\n    protected async Task<bool> IsValidFanTableAsync(FanTable fanTable)\n    {\n        var minimumFanTable = await GetMinimumFanTableAsync().ConfigureAwait(false);\n        var minimum = minimumFanTable.GetTable();\n        return fanTable.GetTable().Where((t, i) => t < minimum[i] || t > 10u).IsEmpty();\n    }\n\n    private static bool IsValidStore(GodModeSettings.GodModeSettingsStore store) => store.Presets.Count != 0 && store.Presets.ContainsKey(store.ActivePresetId);\n\n    private async Task<GodModeState> LoadStateFromStoreAsync(GodModeSettings.GodModeSettingsStore store, GodModePreset defaultState)\n    {\n        var states = new Dictionary<Guid, GodModePreset>();\n\n        foreach (var (id, preset) in store.Presets)\n        {\n            states.Add(id, new GodModePreset\n            {\n                Name = preset.Name,\n                CPULongTermPowerLimit = CreateStepperValue(defaultState.CPULongTermPowerLimit, preset.CPULongTermPowerLimit, preset.MinValueOffset, preset.MaxValueOffset),\n                CPUShortTermPowerLimit = CreateStepperValue(defaultState.CPUShortTermPowerLimit, preset.CPUShortTermPowerLimit, preset.MinValueOffset, preset.MaxValueOffset),\n                CPUPeakPowerLimit = CreateStepperValue(defaultState.CPUPeakPowerLimit, preset.CPUPeakPowerLimit, preset.MinValueOffset, preset.MaxValueOffset),\n                CPUCrossLoadingPowerLimit = CreateStepperValue(defaultState.CPUCrossLoadingPowerLimit, preset.CPUCrossLoadingPowerLimit, preset.MinValueOffset, preset.MaxValueOffset),\n                CPUPL1Tau = CreateStepperValue(defaultState.CPUPL1Tau, preset.CPUPL1Tau, preset.MinValueOffset, preset.MaxValueOffset),\n                APUsPPTPowerLimit = CreateStepperValue(defaultState.APUsPPTPowerLimit, preset.APUsPPTPowerLimit, preset.MinValueOffset, preset.MaxValueOffset),\n                CPUTemperatureLimit = CreateStepperValue(defaultState.CPUTemperatureLimit, preset.CPUTemperatureLimit, preset.MinValueOffset, preset.MaxValueOffset),\n                GPUPowerBoost = CreateStepperValue(defaultState.GPUPowerBoost, preset.GPUPowerBoost, preset.MinValueOffset, preset.MaxValueOffset),\n                GPUConfigurableTGP = CreateStepperValue(defaultState.GPUConfigurableTGP, preset.GPUConfigurableTGP, preset.MinValueOffset, preset.MaxValueOffset),\n                GPUTemperatureLimit = CreateStepperValue(defaultState.GPUTemperatureLimit, preset.GPUTemperatureLimit, preset.MinValueOffset, preset.MaxValueOffset),\n                GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline = CreateStepperValue(defaultState.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline,\n                    preset.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline,\n                    preset.MinValueOffset,\n                    preset.MaxValueOffset),\n                GPUToCPUDynamicBoost = CreateStepperValue(defaultState.GPUToCPUDynamicBoost, preset.GPUToCPUDynamicBoost),\n                FanTableInfo = await GetFanTableInfoAsync(preset, defaultState.FanTableInfo?.Data).ConfigureAwait(false),\n                FanFullSpeed = preset.FanFullSpeed,\n                MinValueOffset = preset.MinValueOffset ?? defaultState.MinValueOffset,\n                MaxValueOffset = preset.MaxValueOffset ?? defaultState.MaxValueOffset\n            });\n        }\n\n        return new GodModeState\n        {\n            ActivePresetId = store.ActivePresetId,\n            Presets = states.AsReadOnlyDictionary()\n        };\n    }\n\n    private static StepperValue? CreateStepperValue(StepperValue? state, StepperValue? store = null, int? minValueOffset = 0, int? maxValueOffset = 0)\n    {\n        if (state is not { } stateValue)\n            return null;\n\n        if (stateValue.Steps.Length > 0)\n        {\n            var value = store?.Value ?? stateValue.Value;\n            var steps = stateValue.Steps;\n            var defaultValue = stateValue.DefaultValue;\n\n            if (!steps.Contains(value))\n            {\n                var valueTemp = value;\n                value = steps.MinBy(v => Math.Abs((long)v - valueTemp));\n            }\n\n            return new(value, 0, 0, 0, steps, defaultValue);\n        }\n\n        if (stateValue.Step > 0)\n        {\n            var value = store?.Value ?? stateValue.Value;\n            var min = Math.Max(0, stateValue.Min + (minValueOffset ?? 0));\n            var max = stateValue.Max + (maxValueOffset ?? 0);\n            var step = stateValue.Step;\n            var defaultValue = stateValue.DefaultValue;\n\n            value = MathExtensions.RoundNearest(value, step);\n\n            if (value < min || value > max)\n                value = defaultValue ?? Math.Clamp(value, min, max);\n\n            return new(value, min, max, step, [], defaultValue);\n        }\n\n        return null;\n    }\n\n    private async Task<FanTableInfo?> GetFanTableInfoAsync(GodModeSettings.GodModeSettingsStore.Preset preset, FanTableData[]? fanTableData)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting fan table info...\");\n\n        if (fanTableData is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Fan table data is null\");\n            return null;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Fan table data retrieved: {fanTableData}\");\n\n        var fanTable = preset.FanTable ?? await GetDefaultFanTableAsync().ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Fan table retrieved: {fanTable}\");\n\n        if (!await IsValidFanTableAsync(fanTable).ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Fan table invalid, replacing with default...\");\n\n            fanTable = await GetDefaultFanTableAsync().ConfigureAwait(false);\n        }\n\n        return new FanTableInfo(fanTableData, fanTable);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/GodMode/GodModeController.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.GodMode;\n\npublic class GodModeController(GodModeControllerV1 controllerV1, GodModeControllerV2 controllerV2)\n    : IGodModeController\n{\n    private IGodModeController ControllerV1 => controllerV1;\n    private IGodModeController ControllerV2 => controllerV2;\n\n    public event EventHandler<Guid>? PresetChanged\n    {\n        add\n        {\n            ControllerV1.PresetChanged += value;\n            ControllerV2.PresetChanged += value;\n        }\n        remove\n        {\n            ControllerV1.PresetChanged -= value;\n            ControllerV2.PresetChanged -= value;\n        }\n    }\n\n    public async Task<bool> NeedsVantageDisabledAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        return await controller.NeedsVantageDisabledAsync().ConfigureAwait(false);\n    }\n\n    public async Task<bool> NeedsLegionZoneDisabledAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        return await controller.NeedsLegionZoneDisabledAsync().ConfigureAwait(false);\n    }\n\n    public async Task<Guid> GetActivePresetIdAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        return await controller.GetActivePresetIdAsync().ConfigureAwait(false);\n    }\n\n    public async Task<string?> GetActivePresetNameAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        return await controller.GetActivePresetNameAsync().ConfigureAwait(false);\n    }\n\n    public async Task<GodModeState> GetStateAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        return await controller.GetStateAsync().ConfigureAwait(false);\n    }\n\n    public async Task SetStateAsync(GodModeState state)\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        await controller.SetStateAsync(state).ConfigureAwait(false);\n    }\n\n    public async Task ApplyStateAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        await controller.ApplyStateAsync().ConfigureAwait(false);\n    }\n\n    public async Task<FanTable> GetDefaultFanTableAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        return await controller.GetDefaultFanTableAsync().ConfigureAwait(false);\n    }\n\n    public async Task<FanTable> GetMinimumFanTableAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        return await controller.GetMinimumFanTableAsync().ConfigureAwait(false);\n    }\n\n    public async Task<Dictionary<PowerModeState, GodModeDefaults>> GetDefaultsInOtherPowerModesAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        return await controller.GetDefaultsInOtherPowerModesAsync().ConfigureAwait(false);\n    }\n\n    public async Task RestoreDefaultsInOtherPowerModeAsync(PowerModeState state)\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false);\n        await controller.RestoreDefaultsInOtherPowerModeAsync(state).ConfigureAwait(false);\n    }\n\n    private async Task<IGodModeController> GetControllerAsync()\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n\n        if (mi.Properties.SupportsGodModeV1)\n            return controllerV1;\n\n        if (mi.Properties.SupportsGodModeV2)\n            return controllerV2;\n\n        throw new InvalidOperationException(\"No supported version found\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/GodMode/GodModeControllerV1.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.GodMode;\n\npublic class GodModeControllerV1(\n    GodModeSettings settings,\n    LegionZoneDisabler legionZoneDisabler)\n    : AbstractGodModeController(settings)\n{\n    public override Task<bool> NeedsVantageDisabledAsync() => Task.FromResult(false);\n    public override Task<bool> NeedsLegionZoneDisabledAsync() => Task.FromResult(true);\n\n    public override async Task ApplyStateAsync()\n    {\n        if (await legionZoneDisabler.GetStatusAsync().ConfigureAwait(false) == SoftwareStatus.Enabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Can't correctly apply state when Legion Zone is running.\");\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Applying state...\");\n\n        var (presetId, preset) = await GetActivePresetAsync().ConfigureAwait(false);\n\n        var cpuLongTermPowerLimit = preset.CPULongTermPowerLimit;\n        var cpuShortTermPowerLimit = preset.CPUShortTermPowerLimit;\n        var cpuPeakPowerLimit = preset.CPUPeakPowerLimit;\n        var cpuCrossLoadingPowerLimit = preset.CPUCrossLoadingPowerLimit;\n        var apuSPPTPowerLimit = preset.APUsPPTPowerLimit;\n        var cpuTemperatureLimit = preset.CPUTemperatureLimit;\n        var gpuPowerBoost = preset.GPUPowerBoost;\n        var gpuConfigurableTgp = preset.GPUConfigurableTGP;\n        var gpuTemperatureLimit = preset.GPUTemperatureLimit;\n        var fanTable = preset.FanTable ?? await GetDefaultFanTableAsync().ConfigureAwait(false);\n        var fanFullSpeed = preset.FanFullSpeed ?? false;\n\n        if (cpuLongTermPowerLimit is not null)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying CPU Long Term Power Limit: {cpuLongTermPowerLimit}\");\n\n                await SetCPULongTermPowerLimitAsync(cpuLongTermPowerLimit.Value.Value).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=cpuLongTermPowerLimit]\", ex);\n                throw;\n            }\n        }\n\n        if (cpuShortTermPowerLimit is not null)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying CPU Short Term Power Limit: {cpuShortTermPowerLimit}\");\n\n                await SetCPUShortTermPowerLimitAsync(cpuShortTermPowerLimit.Value.Value).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=cpuShortTermPowerLimit]\", ex);\n                throw;\n            }\n        }\n\n        if (cpuPeakPowerLimit is not null)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying CPU Peak Power Limit: {cpuPeakPowerLimit}\");\n\n                await SetCPUPeakPowerLimitAsync(cpuPeakPowerLimit.Value.Value).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=cpuPeakPowerLimit]\", ex);\n                throw;\n            }\n        }\n\n        if (cpuCrossLoadingPowerLimit is not null)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying CPU Cross Loading Power Limit: {cpuCrossLoadingPowerLimit}\");\n\n                await SetCPUCrossLoadingPowerLimitAsync(cpuCrossLoadingPowerLimit.Value.Value).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=cpuCrossLoadingPowerLimit]\", ex);\n                throw;\n            }\n        }\n\n        if (apuSPPTPowerLimit is not null)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying APU sPPT Power Limit: {apuSPPTPowerLimit}\");\n\n                await SetAPUSPPTPowerLimitAsync(apuSPPTPowerLimit.Value.Value).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=apuSPPTPowerLimit]\", ex);\n                throw;\n            }\n        }\n\n        if (cpuTemperatureLimit is not null)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying CPU Temperature Limit: {cpuTemperatureLimit}\");\n\n                await SetCPUTemperatureLimitAsync(cpuTemperatureLimit.Value.Value).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=cpuTemperatureLimit]\", ex);\n                throw;\n            }\n        }\n\n        if (gpuPowerBoost is not null)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying GPU Power Boost: {gpuPowerBoost}\");\n\n                await SetGPUPowerBoostAsync(gpuPowerBoost.Value.Value).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=gpuPowerBoost]\", ex);\n            }\n        }\n\n        if (gpuConfigurableTgp is not null)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying GPU Configurable TGP: {gpuConfigurableTgp}\");\n\n                await SetGPUConfigurableTGPAsync(gpuConfigurableTgp.Value.Value).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=gpuConfigurableTgp]\", ex);\n            }\n        }\n\n        if (gpuTemperatureLimit is not null)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying GPU Temperature Limit: {gpuTemperatureLimit}\");\n\n                await SetGPUTemperatureLimitAsync(gpuTemperatureLimit.Value.Value).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=gpuTemperatureLimit]\", ex);\n            }\n        }\n\n        if (fanFullSpeed)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying Fan Full Speed {fanFullSpeed}...\");\n\n                await SetFanFullSpeedAsync(fanFullSpeed).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=fanFullSpeed]\", ex);\n                throw;\n            }\n        }\n        else\n        {\n\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Making sure Fan Full Speed is false...\");\n\n                await SetFanFullSpeedAsync(false).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=fanFullSpeed]\", ex);\n                throw;\n            }\n\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying Fan Table {fanTable}...\");\n\n                if (!await IsValidFanTableAsync(fanTable).ConfigureAwait(false))\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Fan table invalid, replacing with default...\");\n\n                    fanTable = await GetDefaultFanTableAsync().ConfigureAwait(false);\n                }\n\n                await SetFanTable(fanTable).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=fanTable]\", ex);\n                throw;\n            }\n        }\n\n        RaisePresetChanged(presetId);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State applied. [name={preset.Name}, id={presetId}]\");\n    }\n\n    public override Task<FanTable> GetMinimumFanTableAsync()\n    {\n        var fanTable = new FanTable([0, 0, 0, 0, 0, 0, 0, 1, 3, 5]);\n        return Task.FromResult(fanTable);\n    }\n\n    public override async Task<Dictionary<PowerModeState, GodModeDefaults>> GetDefaultsInOtherPowerModesAsync()\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Getting defaults in other power modes...\");\n\n            var result = await GetDefaultValuesInDifferentModeAsync().ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n            {\n                Log.Instance.Trace($\"Defaults in other power modes retrieved:\");\n                foreach (var (powerMode, defaults) in result)\n                    Log.Instance.Trace($\" - {powerMode}: {defaults}\");\n            }\n\n            return result;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to get defaults in other power modes.\", ex);\n            return [];\n        }\n    }\n\n    public override async Task RestoreDefaultsInOtherPowerModeAsync(PowerModeState state)\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Restoring defaults for {state}...\");\n\n            var result = await GetDefaultValuesInDifferentModeAsync().ConfigureAwait(false);\n\n            if (!result.TryGetValue(state, out var defaults))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Defaults for {state} not found. Skipping...\");\n\n                return;\n            }\n\n            if (defaults.CPULongTermPowerLimit is not null)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying CPU Long Term Power Limit: {defaults.CPULongTermPowerLimit}\");\n\n                    await SetCPULongTermPowerLimitAsync(defaults.CPULongTermPowerLimit.Value).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Apply failed. [setting=cpuLongTermPowerLimit]\", ex);\n                    throw;\n                }\n            }\n\n            if (defaults.CPUShortTermPowerLimit is not null)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying CPU Short Term Power Limit: {defaults.CPUShortTermPowerLimit}\");\n\n                    await SetCPUShortTermPowerLimitAsync(defaults.CPUShortTermPowerLimit.Value).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Apply failed. [setting=cpuShortTermPowerLimit]\", ex);\n                    throw;\n                }\n            }\n\n            if (defaults.CPUPeakPowerLimit is not null)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying CPU Peak Power Limit: {defaults.CPUPeakPowerLimit}\");\n\n                    await SetCPUPeakPowerLimitAsync(defaults.CPUPeakPowerLimit.Value).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Apply failed. [setting=cpuPeakPowerLimit]\", ex);\n                    throw;\n                }\n            }\n\n            if (defaults.CPUCrossLoadingPowerLimit is not null)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying CPU Cross Loading Power Limit: {defaults.CPUCrossLoadingPowerLimit}\");\n\n                    await SetCPUCrossLoadingPowerLimitAsync(defaults.CPUCrossLoadingPowerLimit.Value).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Apply failed. [setting=cpuCrossLoadingPowerLimit]\", ex);\n                    throw;\n                }\n            }\n\n            if (defaults.APUsPPTPowerLimit is not null)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying APU sPPT Power Limit: {defaults.APUsPPTPowerLimit}\");\n\n                    await SetAPUSPPTPowerLimitAsync(defaults.APUsPPTPowerLimit.Value).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Apply failed. [setting=apuSPPTPowerLimit]\", ex);\n                    throw;\n                }\n            }\n\n            if (defaults.CPUTemperatureLimit is not null)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying CPU Temperature Limit: {defaults.CPUTemperatureLimit}\");\n\n                    await SetCPUTemperatureLimitAsync(defaults.CPUTemperatureLimit.Value).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Apply failed. [setting=cpuTemperatureLimit]\", ex);\n                    throw;\n                }\n            }\n\n            if (defaults.GPUPowerBoost is not null)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying GPU Power Boost: {defaults.GPUPowerBoost}\");\n\n                    await SetGPUPowerBoostAsync(defaults.GPUPowerBoost.Value).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Apply failed. [setting=gpuPowerBoost]\", ex);\n                    throw;\n                }\n            }\n\n            if (defaults.GPUConfigurableTGP is not null)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying GPU Configurable TGP: {defaults.GPUConfigurableTGP}\");\n\n                    await SetGPUConfigurableTGPAsync(defaults.GPUConfigurableTGP.Value).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Apply failed. [setting=gpuConfigurableTgp]\", ex);\n                    throw;\n                }\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to restore defaults for {state}.\", ex);\n        }\n    }\n\n    protected override async Task<GodModePreset> GetDefaultStateAsync()\n    {\n        var fanTableData = await GetFanTableDataAsync().ConfigureAwait(false);\n\n        var preset = new GodModePreset\n        {\n            Name = \"Default\",\n            CPULongTermPowerLimit = await GetCPULongTermPowerLimitAsync().OrNullIfException().ConfigureAwait(false),\n            CPUShortTermPowerLimit = await GetCPUShortTermPowerLimitAsync().OrNullIfException().ConfigureAwait(false),\n            CPUPeakPowerLimit = await GetCPUPeakPowerLimitAsync().OrNullIfException().ConfigureAwait(false),\n            CPUCrossLoadingPowerLimit = await GetCPUCrossLoadingPowerLimitAsync().OrNullIfException().ConfigureAwait(false),\n            APUsPPTPowerLimit = await GetAPUSPPTPowerLimitAsync().OrNullIfException().ConfigureAwait(false),\n            CPUTemperatureLimit = await GetCPUTemperatureLimitAsync().OrNullIfException().ConfigureAwait(false),\n            GPUPowerBoost = await GetGPUPowerBoost().OrNullIfException().ConfigureAwait(false),\n            GPUConfigurableTGP = await GetGPUConfigurableTGPAsync().OrNullIfException().ConfigureAwait(false),\n            GPUTemperatureLimit = await GetGPUTemperatureLimitAsync().OrNullIfException().ConfigureAwait(false),\n            FanTableInfo = fanTableData is null ? null : new FanTableInfo(fanTableData, await GetDefaultFanTableAsync().ConfigureAwait(false)),\n            FanFullSpeed = await GetFanFullSpeedAsync().ConfigureAwait(false),\n            MinValueOffset = 0,\n            MaxValueOffset = 0\n        };\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Default state retrieved: {preset}\");\n\n        return preset;\n    }\n\n    #region CPU Long Term Power Limit\n\n    private static async Task<StepperValue> GetCPULongTermPowerLimitAsync()\n    {\n        var defaultValue = await WMI.LenovoCpuMethod.CPUGetDefaultPowerLimitAsync().OrNullIfException().ConfigureAwait(false);\n        var (value, min, max, step) = await WMI.LenovoCpuMethod.CPUGetLongTermPowerLimitAsync().ConfigureAwait(false);\n        return new(value, min, max, step, [], defaultValue?.longTerm);\n    }\n\n    private static Task SetCPULongTermPowerLimitAsync(int value) => WMI.LenovoCpuMethod.CPUSetLongTermPowerLimitAsync(value);\n\n    #endregion\n\n    #region CPU Short Term Power Limit\n\n    private static async Task<StepperValue> GetCPUShortTermPowerLimitAsync()\n    {\n        var defaultValue = await WMI.LenovoCpuMethod.CPUGetDefaultPowerLimitAsync().OrNullIfException().ConfigureAwait(false);\n        var (value, min, max, step) = await WMI.LenovoCpuMethod.CPUGetShortTermPowerLimitAsync().ConfigureAwait(false);\n        return new(value, min, max, step, [], defaultValue?.shortTerm);\n    }\n\n    private static Task SetCPUShortTermPowerLimitAsync(int value) => WMI.LenovoCpuMethod.CPUSetShortTermPowerLimitAsync(value);\n\n    #endregion\n\n    #region CPU Peak Power Limit\n\n    private static async Task<StepperValue> GetCPUPeakPowerLimitAsync()\n    {\n        var (value, min, max, step, defaultValue) = await WMI.LenovoCpuMethod.CPUGetPeakPowerLimitAsync().ConfigureAwait(false);\n        return new(value, min, max, step, [], defaultValue);\n    }\n\n    private static Task SetCPUPeakPowerLimitAsync(int value) => WMI.LenovoCpuMethod.CPUSetPeakPowerLimitAsync(value);\n\n    #endregion\n\n    #region CPU Cross Loading Power Limit\n\n    private static async Task<StepperValue> GetCPUCrossLoadingPowerLimitAsync()\n    {\n        var (value, min, max, step, defaultValue) = await WMI.LenovoCpuMethod.CPUGetCrossLoadingPowerLimitAsync().ConfigureAwait(false);\n        return new(value, min, max, step, [], defaultValue);\n    }\n\n    private static Task SetCPUCrossLoadingPowerLimitAsync(int value) => WMI.LenovoCpuMethod.CPUSetCrossLoadingPowerLimitAsync(value);\n\n    #endregion\n\n    #region APU sPPT Power Limit\n\n    private static async Task<StepperValue> GetAPUSPPTPowerLimitAsync()\n    {\n        var (value, min, max, step, defaultValue) = await WMI.LenovoCpuMethod.GetAPUSPPTPowerLimitAsync().ConfigureAwait(false);\n        return new(value, min, max, step, [], defaultValue);\n    }\n\n    private static Task SetAPUSPPTPowerLimitAsync(int value) => WMI.LenovoCpuMethod.SetAPUSPPTPowerLimitAsync(value);\n\n    #endregion\n\n    #region CPU Temperature Limit\n\n    private static async Task<StepperValue> GetCPUTemperatureLimitAsync()\n    {\n        var (value, min, max, step, defaultValue) = await WMI.LenovoCpuMethod.CPUGetTemperatureControlAsync().ConfigureAwait(false);\n        return new(value, min, max, step, [], defaultValue);\n    }\n\n    private static Task SetCPUTemperatureLimitAsync(int value) => WMI.LenovoCpuMethod.CPUSetTemperatureControlAsync(value);\n\n    #endregion\n\n    #region GPU Configurable TGP\n\n    private static async Task<StepperValue> GetGPUConfigurableTGPAsync()\n    {\n        var defaultValue = await WMI.LenovoGpuMethod.GPUGetDefaultPPABcTGPPowerLimit().OrNullIfException().ConfigureAwait(false);\n        var (value, min, max, step) = await WMI.LenovoGpuMethod.GPUGetCTGPPowerLimitAsync().ConfigureAwait(false);\n        return new(value, min, max, step, [], defaultValue?.ctgp);\n    }\n\n    private static Task SetGPUConfigurableTGPAsync(int value) => WMI.LenovoGpuMethod.GPUSetCTGPPowerLimitAsync(value);\n\n    #endregion\n\n    #region GPU Power Boost\n\n    private static async Task<StepperValue> GetGPUPowerBoost()\n    {\n        var defaultValue = await WMI.LenovoGpuMethod.GPUGetDefaultPPABcTGPPowerLimit().OrNullIfException().ConfigureAwait(false);\n        var (value, min, max, step) = await WMI.LenovoGpuMethod.GPUGetPPABPowerLimitAsync().ConfigureAwait(false);\n        return new(value, min, max, step, [], defaultValue?.ppab);\n    }\n\n    private static Task SetGPUPowerBoostAsync(int value) => WMI.LenovoGpuMethod.GPUSetPPABPowerLimitAsync(value);\n\n    #endregion\n\n    #region GPU Temperature Limit\n\n    private static async Task<StepperValue> GetGPUTemperatureLimitAsync()\n    {\n        var (value, min, max, step, defaultValue) = await WMI.LenovoGpuMethod.GPUGetTemperatureLimitAsync().ConfigureAwait(false);\n        return new(value, min, max, step, [], defaultValue);\n    }\n\n    private static Task SetGPUTemperatureLimitAsync(int value) => WMI.LenovoGpuMethod.GPUSetTemperatureLimitAsync(value);\n\n    #endregion\n\n    #region Fan Table\n\n    private static async Task<FanTableData[]?> GetFanTableDataAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Reading fan table data...\");\n\n        var data = await WMI.LenovoFanTableData.ReadAsync().ConfigureAwait(false);\n\n        var fanTableData = data\n            .Select(d =>\n            {\n                var type = (d.fanId, d.sensorId) switch\n                {\n                    (0, 3) => FanTableType.CPU,\n                    (1, 4) => FanTableType.GPU,\n                    (0, 0) => FanTableType.CPUSensor,\n                    _ => FanTableType.Unknown,\n                };\n                return new FanTableData(type, d.fanId, d.sensorId, d.fanTableData, d.sensorTableData);\n            })\n            .ToArray();\n\n        if (fanTableData.Length != 3)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Bad fan table length: {fanTableData}\");\n\n            return null;\n        }\n\n        if (fanTableData.Count(ftd => ftd.FanSpeeds.Length == 10) != 3)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Bad fan table fan speeds length: {fanTableData}\");\n\n            return null;\n        }\n\n        if (fanTableData.Count(ftd => ftd.Temps.Length == 10) != 3)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Bad fan table temps length: {fanTableData}\");\n\n            return null;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Fan table data: {fanTableData}\");\n\n        return fanTableData;\n    }\n\n    private static Task SetFanTable(FanTable fanTable) => WMI.LenovoFanMethod.FanSetTableAsync(fanTable.GetBytes());\n\n    #endregion\n\n    #region Fan Full Speed\n\n    private static Task<bool> GetFanFullSpeedAsync() => WMI.LenovoFanMethod.FanGetFullSpeedAsync();\n\n    private static Task SetFanFullSpeedAsync(bool enabled) => WMI.LenovoFanMethod.FanSetFullSpeedAsync(enabled ? 1 : 0);\n\n    #endregion\n\n    #region Default values\n\n    private async Task<Dictionary<PowerModeState, GodModeDefaults>> GetDefaultValuesInDifferentModeAsync()\n    {\n        var defaultFanTableAsync = await GetDefaultFanTableAsync().ConfigureAwait(false);\n\n        var result = await WMI.LenovoDefaultValueInDifferentModeData.ReadAsync().ConfigureAwait(false);\n        return result.Select(d =>\n            {\n                var powerMode = (PowerModeState)(d.Mode - 1);\n                var defaults = new GodModeDefaults\n                {\n                    CPULongTermPowerLimit = d.CPULongTermPowerLimit,\n                    CPUShortTermPowerLimit = d.CPUShortTermPowerLimit,\n                    CPUPeakPowerLimit = d.CPUPeakPowerLimit,\n                    CPUCrossLoadingPowerLimit = d.CPUCrossLoadingPowerLimit,\n                    APUsPPTPowerLimit = d.APUsPPTPowerLimit,\n                    CPUTemperatureLimit = d.CPUTemperatureLimit,\n                    GPUPowerBoost = d.GPUPowerBoost,\n                    GPUConfigurableTGP = d.GPUConfigurableTGP,\n                    GPUTemperatureLimit = d.GPUTemperatureLimit,\n                    FanTable = defaultFanTableAsync,\n                    FanFullSpeed = false\n                };\n                return (powerMode, defaults);\n            })\n            .Where(d => d.powerMode is PowerModeState.Quiet or PowerModeState.Balance or PowerModeState.Performance)\n            .DistinctBy(d => d.powerMode)\n            .ToDictionary(d => d.powerMode, d => d.defaults);\n    }\n\n    #endregion\n\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/GodMode/GodModeControllerV2.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.GodMode;\n\npublic class GodModeControllerV2(\n    GodModeSettings settings,\n    VantageDisabler vantageDisabler,\n    LegionZoneDisabler legionZoneDisabler)\n    : AbstractGodModeController(settings)\n{\n    public override Task<bool> NeedsVantageDisabledAsync() => Task.FromResult(true);\n    public override Task<bool> NeedsLegionZoneDisabledAsync() => Task.FromResult(true);\n\n    public override async Task ApplyStateAsync()\n    {\n        if (await vantageDisabler.GetStatusAsync().ConfigureAwait(false) == SoftwareStatus.Enabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Can't correctly apply state when Vantage is running.\");\n            return;\n        }\n\n        if (await legionZoneDisabler.GetStatusAsync().ConfigureAwait(false) == SoftwareStatus.Enabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Can't correctly apply state when Legion Zone is running.\");\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Applying state...\");\n\n        var (presetId, preset) = await GetActivePresetAsync().ConfigureAwait(false);\n\n        var settings = new Dictionary<CapabilityID, StepperValue?>\n        {\n            { CapabilityID.CPULongTermPowerLimit, preset.CPULongTermPowerLimit },\n            { CapabilityID.CPUShortTermPowerLimit, preset.CPUShortTermPowerLimit },\n            { CapabilityID.CPUPeakPowerLimit, preset.CPUPeakPowerLimit },\n            { CapabilityID.CPUCrossLoadingPowerLimit, preset.CPUCrossLoadingPowerLimit },\n            { CapabilityID.CPUPL1Tau, preset.CPUPL1Tau },\n            { CapabilityID.APUsPPTPowerLimit, preset.APUsPPTPowerLimit },\n            { CapabilityID.CPUTemperatureLimit, preset.CPUTemperatureLimit },\n            { CapabilityID.GPUPowerBoost, preset.GPUPowerBoost },\n            { CapabilityID.GPUConfigurableTGP, preset.GPUConfigurableTGP },\n            { CapabilityID.GPUTemperatureLimit, preset.GPUTemperatureLimit },\n            { CapabilityID.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline, preset.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline },\n            { CapabilityID.GPUToCPUDynamicBoost, preset.GPUToCPUDynamicBoost },\n        };\n\n        var defaultPresets = await GetDefaultsInOtherPowerModesAsync().ConfigureAwait(false);\n        var defaultPerformancePreset = defaultPresets.GetValueOrNull(PowerModeState.Performance);\n\n        var defaultPerformanceSettings = new Dictionary<CapabilityID, int?>\n        {\n            { CapabilityID.CPULongTermPowerLimit, defaultPerformancePreset?.CPULongTermPowerLimit },\n            { CapabilityID.CPUShortTermPowerLimit, defaultPerformancePreset?.CPUShortTermPowerLimit },\n            { CapabilityID.CPUPeakPowerLimit, defaultPerformancePreset?.CPUPeakPowerLimit },\n            { CapabilityID.CPUCrossLoadingPowerLimit, defaultPerformancePreset?.CPUCrossLoadingPowerLimit },\n            { CapabilityID.CPUPL1Tau, defaultPerformancePreset?.CPUPL1Tau },\n            { CapabilityID.APUsPPTPowerLimit, defaultPerformancePreset?.APUsPPTPowerLimit },\n            { CapabilityID.CPUTemperatureLimit, defaultPerformancePreset?.CPUTemperatureLimit },\n            { CapabilityID.GPUPowerBoost, defaultPerformancePreset?.GPUPowerBoost },\n            { CapabilityID.GPUConfigurableTGP, defaultPerformancePreset?.GPUConfigurableTGP  },\n            { CapabilityID.GPUTemperatureLimit, defaultPerformancePreset?.GPUTemperatureLimit },\n            { CapabilityID.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline, defaultPerformancePreset?.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline },\n            { CapabilityID.GPUToCPUDynamicBoost, defaultPerformancePreset?.GPUToCPUDynamicBoost },\n        };\n\n        var failAllowedSettings = new[]\n        {\n            CapabilityID.GPUPowerBoost,\n            CapabilityID.GPUConfigurableTGP,\n            CapabilityID.GPUTemperatureLimit,\n            CapabilityID.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline,\n            CapabilityID.GPUToCPUDynamicBoost,\n        };\n\n        var fanTable = preset.FanTable ?? await GetDefaultFanTableAsync().ConfigureAwait(false);\n        var fanFullSpeed = preset.FanFullSpeed ?? false;\n\n        foreach (var (id, value) in settings)\n        {\n            if (value.HasValue)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying {id}: {value}...\");\n\n                    await SetValueAsync(id, value.Value).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Failed to apply {id}. [value={value}]\", ex);\n\n                    if (!failAllowedSettings.Contains(id))\n                        throw;\n                }\n            }\n            else if (defaultPerformanceSettings.GetValueOrDefault(id) is { } defaultPerformanceValue)\n            {\n                try\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Applying default {id}: {defaultPerformanceValue}...\");\n\n                    await SetValueAsync(id, defaultPerformanceValue).ConfigureAwait(false);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Failed to apply default {id}. [value={defaultPerformanceValue}]\", ex);\n\n                    if (!failAllowedSettings.Contains(id))\n                        throw;\n                }\n            }\n            else\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Failed to apply {id}, because neither value nor default value was available.\");\n            }\n        }\n\n        if (fanFullSpeed)\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying Fan Full Speed {fanFullSpeed}...\");\n\n                await SetFanFullSpeedAsync(fanFullSpeed).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=fanFullSpeed]\", ex);\n                throw;\n            }\n        }\n        else\n        {\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Making sure Fan Full Speed is false...\");\n\n                await SetFanFullSpeedAsync(false).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=fanFullSpeed]\", ex);\n                throw;\n            }\n\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Applying Fan Table {fanTable}...\");\n\n                if (!await IsValidFanTableAsync(fanTable).ConfigureAwait(false))\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Fan table invalid, replacing with default...\");\n\n                    fanTable = await GetDefaultFanTableAsync().ConfigureAwait(false);\n                }\n\n                await SetFanTable(fanTable).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Apply failed. [setting=fanTable]\", ex);\n                throw;\n            }\n        }\n\n        RaisePresetChanged(presetId);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State applied. [name={preset.Name}, id={presetId}]\");\n    }\n\n    public override Task<FanTable> GetMinimumFanTableAsync()\n    {\n        var fanTable = new FanTable([1, 1, 1, 1, 1, 1, 1, 1, 3, 5]);\n        return Task.FromResult(fanTable);\n    }\n\n    public override async Task<Dictionary<PowerModeState, GodModeDefaults>> GetDefaultsInOtherPowerModesAsync()\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Getting defaults in other power modes...\");\n\n            var result = new Dictionary<PowerModeState, GodModeDefaults>();\n\n            var allCapabilityData = await WMI.LenovoCapabilityData01.ReadAsync().ConfigureAwait(false);\n            allCapabilityData = allCapabilityData.ToArray();\n\n            foreach (var powerMode in new[] { PowerModeState.Quiet, PowerModeState.Balance, PowerModeState.Performance })\n            {\n                var defaults = new GodModeDefaults\n                {\n                    CPULongTermPowerLimit = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.CPULongTermPowerLimit, powerMode),\n                    CPUShortTermPowerLimit = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.CPUShortTermPowerLimit, powerMode),\n                    CPUPeakPowerLimit = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.CPUPeakPowerLimit, powerMode),\n                    CPUCrossLoadingPowerLimit = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.CPUCrossLoadingPowerLimit, powerMode),\n                    CPUPL1Tau = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.CPUPL1Tau, powerMode),\n                    APUsPPTPowerLimit = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.APUsPPTPowerLimit, powerMode),\n                    CPUTemperatureLimit = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.CPUTemperatureLimit, powerMode),\n                    GPUPowerBoost = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.GPUPowerBoost, powerMode),\n                    GPUConfigurableTGP = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.GPUConfigurableTGP, powerMode),\n                    GPUTemperatureLimit = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.GPUTemperatureLimit, powerMode),\n                    GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline, powerMode),\n                    GPUToCPUDynamicBoost = GetDefaultCapabilityIdValueInPowerMode(allCapabilityData, CapabilityID.GPUToCPUDynamicBoost, powerMode),\n                    FanTable = await GetDefaultFanTableAsync().ConfigureAwait(false),\n                    FanFullSpeed = false\n                };\n\n                result[powerMode] = defaults;\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n            {\n                Log.Instance.Trace($\"Defaults in other power modes retrieved:\");\n                foreach (var (powerMode, defaults) in result)\n                    Log.Instance.Trace($\" - {powerMode}: {defaults}\");\n            }\n\n            return result;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to get defaults in other power modes.\", ex);\n\n            return [];\n        }\n    }\n\n    public override Task RestoreDefaultsInOtherPowerModeAsync(PowerModeState _) => Task.CompletedTask;\n\n    protected override async Task<GodModePreset> GetDefaultStateAsync()\n    {\n        var allCapabilityData = await WMI.LenovoCapabilityData01.ReadAsync().ConfigureAwait(false);\n        allCapabilityData = allCapabilityData.ToArray();\n\n        var capabilityData = allCapabilityData\n            .Where(d => Enum.IsDefined(d.Id))\n            .ToArray();\n\n        var allDiscreteData = await WMI.LenovoDiscreteData.ReadAsync().ConfigureAwait(false);\n        allDiscreteData = allDiscreteData.ToArray();\n\n        var discreteData = allDiscreteData\n            .Where(d => Enum.IsDefined(d.Id))\n            .GroupBy(d => d.Id, d => d.Value, (id, values) => (id, values))\n            .ToDictionary(d => d.id, d => d.values.ToArray());\n\n        var stepperValues = new Dictionary<CapabilityID, StepperValue>();\n\n        foreach (var c in capabilityData)\n        {\n            var value = await GetValueAsync(c.Id).OrNullIfException().ConfigureAwait(false) ?? c.DefaultValue;\n            var steps = discreteData.GetValueOrDefault(c.Id) ?? [];\n\n            if (c.Step == 0 && steps.Length < 1)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Skipping {c.Id}... [idRaw={(int)c.Id:X}, defaultValue={c.DefaultValue}, min={c.Min}, max={c.Max}, step={c.Step}, steps={string.Join(\", \", steps)}]\");\n\n                continue;\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Creating StepperValue {c.Id}... [idRaw={(int)c.Id:X}, defaultValue={c.DefaultValue}, min={c.Min}, max={c.Max}, step={c.Step}, steps={string.Join(\", \", steps)}]\");\n\n            var stepperValue = new StepperValue(value, c.Min, c.Max, c.Step, steps, c.DefaultValue);\n            stepperValues[c.Id] = stepperValue;\n        }\n\n        var fanTableData = await GetFanTableDataAsync().ConfigureAwait(false);\n\n        var preset = new GodModePreset\n        {\n            Name = \"Default\",\n            CPULongTermPowerLimit = stepperValues.GetValueOrNull(CapabilityID.CPULongTermPowerLimit),\n            CPUShortTermPowerLimit = stepperValues.GetValueOrNull(CapabilityID.CPUShortTermPowerLimit),\n            CPUPeakPowerLimit = stepperValues.GetValueOrNull(CapabilityID.CPUPeakPowerLimit),\n            CPUCrossLoadingPowerLimit = stepperValues.GetValueOrNull(CapabilityID.CPUCrossLoadingPowerLimit),\n            CPUPL1Tau = stepperValues.GetValueOrNull(CapabilityID.CPUPL1Tau),\n            APUsPPTPowerLimit = stepperValues.GetValueOrNull(CapabilityID.APUsPPTPowerLimit),\n            CPUTemperatureLimit = stepperValues.GetValueOrNull(CapabilityID.CPUTemperatureLimit),\n            GPUPowerBoost = stepperValues.GetValueOrNull(CapabilityID.GPUPowerBoost),\n            GPUConfigurableTGP = stepperValues.GetValueOrNull(CapabilityID.GPUConfigurableTGP),\n            GPUTemperatureLimit = stepperValues.GetValueOrNull(CapabilityID.GPUTemperatureLimit),\n            GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline = stepperValues.GetValueOrNull(CapabilityID.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline),\n            GPUToCPUDynamicBoost = stepperValues.GetValueOrNull(CapabilityID.GPUToCPUDynamicBoost),\n            FanTableInfo = fanTableData is null ? null : new FanTableInfo(fanTableData, await GetDefaultFanTableAsync().ConfigureAwait(false)),\n            FanFullSpeed = await GetFanFullSpeedAsync().ConfigureAwait(false),\n            MinValueOffset = 0,\n            MaxValueOffset = 0\n        };\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Default state retrieved: {preset}\");\n\n        return preset;\n    }\n\n    private static CapabilityID AdjustCapabilityIdForPowerMode(CapabilityID id, PowerModeState powerMode)\n    {\n        var idRaw = (uint)id & 0xFFFF00FF;\n        var powerModeRaw = ((uint)powerMode + 1) << 8;\n        return (CapabilityID)(idRaw + powerModeRaw);\n    }\n\n    private static int? GetDefaultCapabilityIdValueInPowerMode(IEnumerable<RangeCapability> capabilities, CapabilityID id, PowerModeState powerMode)\n    {\n        var adjustedId = AdjustCapabilityIdForPowerMode(id, powerMode);\n        var value = capabilities\n            .Where(c => c.Id == adjustedId)\n            .Select(c => c.DefaultValue)\n            .DefaultIfEmpty(-1)\n            .First();\n        return value < 0 ? null : value;\n    }\n\n    #region Get/Set Value\n\n    private static Task<int> GetValueAsync(CapabilityID id)\n    {\n        var idRaw = (uint)id & 0xFFFF00FF;\n        return WMI.LenovoOtherMethod.GetFeatureValueAsync(idRaw);\n    }\n\n    private static Task SetValueAsync(CapabilityID id, StepperValue value) => SetValueAsync(id, value.Value);\n\n    private static Task SetValueAsync(CapabilityID id, int value)\n    {\n        var idRaw = (uint)id & 0xFFFF00FF;\n        return WMI.LenovoOtherMethod.SetFeatureValueAsync(idRaw, value);\n    }\n\n    #endregion\n\n    #region Fan Table\n\n    private static async Task<FanTableData[]?> GetFanTableDataAsync(PowerModeState powerModeState = PowerModeState.GodMode)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Reading fan table data...\");\n\n        var data = await WMI.LenovoFanTableData.ReadAsync().ConfigureAwait(false);\n\n        var fanTableData = data\n            .Where(d => d.mode == (int)powerModeState + 1)\n            .Select(d =>\n            {\n                var type = (d.fanId, d.sensorId) switch\n                {\n                    (1, 4) => FanTableType.CPU,\n                    (1, 1) => FanTableType.CPUSensor,\n                    (2, 5) => FanTableType.GPU,\n                    (3, 5) => FanTableType.GPU2,\n                    _ => FanTableType.Unknown,\n                };\n                return new FanTableData(type, d.fanId, d.sensorId, d.fanTableData, d.sensorTableData);\n            })\n            .ToArray();\n\n        var length = fanTableData.Where(ftd => ftd.Type != FanTableType.Unknown).Count();\n\n        if (fanTableData.Length != length)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Bad fan table length: {string.Join(\", \", fanTableData)}\");\n\n            return null;\n        }\n\n        if (fanTableData.Count(ftd => ftd.FanSpeeds.Length == 10) != length)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Bad fan table fan speeds length: {string.Join(\", \", fanTableData)}\");\n\n            return null;\n        }\n\n        if (fanTableData.Count(ftd => ftd.Temps.Length == 10) != length)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Bad fan table temps length: {string.Join(\", \", fanTableData)}\");\n\n            return null;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Fan table data: {string.Join(\", \", fanTableData)}\");\n\n        return fanTableData;\n    }\n\n    private static Task SetFanTable(FanTable fanTable) => WMI.LenovoFanMethod.FanSetTableAsync(fanTable.GetBytes());\n\n    #endregion\n\n    #region Fan Full Speed\n\n    private static async Task<bool> GetFanFullSpeedAsync()\n    {\n        var value = await WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.FanFullSpeed).ConfigureAwait(false);\n        return value != 0;\n    }\n\n    private static Task SetFanFullSpeedAsync(bool enabled) => WMI.LenovoOtherMethod.SetFeatureValueAsync(CapabilityID.FanFullSpeed, enabled ? 1 : 0);\n\n    #endregion\n\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/GodMode/IGodModeController.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.GodMode;\n\npublic interface IGodModeController\n{\n    event EventHandler<Guid> PresetChanged;\n    Task<bool> NeedsVantageDisabledAsync();\n    Task<bool> NeedsLegionZoneDisabledAsync();\n    Task<Guid> GetActivePresetIdAsync();\n    Task<string?> GetActivePresetNameAsync();\n    Task<GodModeState> GetStateAsync();\n    Task SetStateAsync(GodModeState state);\n    Task ApplyStateAsync();\n    Task<FanTable> GetDefaultFanTableAsync();\n    Task<FanTable> GetMinimumFanTableAsync();\n    Task<Dictionary<PowerModeState, GodModeDefaults>> GetDefaultsInOtherPowerModesAsync();\n    Task RestoreDefaultsInOtherPowerModeAsync(PowerModeState state);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/RGBKeyboardBacklightController.cs",
    "content": "﻿// #define MOCK_RGB\n\nusing System;\nusing System.Collections.Generic;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32.SafeHandles;\nusing NeoSmart.AsyncLock;\nusing Windows.Win32;\n\nnamespace LenovoLegionToolkit.Lib.Controllers\n{\n    public class RGBKeyboardBacklightController(RGBKeyboardSettings settings, VantageDisabler vantageDisabler)\n    {\n        private static readonly AsyncLock IoLock = new();\n\n        private SafeFileHandle? _deviceHandle;\n\n        private SafeFileHandle? DeviceHandle\n        {\n            get\n            {\n                if (ForceDisable)\n                    return null;\n\n                _deviceHandle ??= Devices.GetRGBKeyboard();\n                return _deviceHandle;\n            }\n        }\n\n        public bool ForceDisable { get; set; }\n\n        public Task<bool> IsSupportedAsync()\n        {\n#if MOCK_RGB\n            return Task.FromResult(true);\n#else\n            return Task.FromResult(DeviceHandle is not null);\n#endif\n        }\n\n        public async Task SetLightControlOwnerAsync(bool enable, bool restorePreset = false)\n        {\n            using (await IoLock.LockAsync().ConfigureAwait(false))\n            {\n                try\n                {\n#if !MOCK_RGB\n                    _ = DeviceHandle ?? throw new InvalidOperationException(\"RGB Keyboard unsupported\");\n#endif\n\n                    await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Taking ownership...\");\n\n#if !MOCK_RGB\n                    await WMI.LenovoGameZoneData.SetLightControlOwnerAsync(enable ? 1 : 0).ConfigureAwait(false);\n#endif\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Ownership set to {enable}, restoring profile...\");\n\n                    if (restorePreset)\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Restoring preset...\");\n\n                        await SetCurrentPresetAsync().ConfigureAwait(false);\n\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Restored preset\");\n                    }\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Can't take ownership.\", ex);\n\n                    throw;\n                }\n            }\n        }\n\n        public async Task<RGBKeyboardBacklightState> GetStateAsync()\n        {\n            using (await IoLock.LockAsync().ConfigureAwait(false))\n            {\n#if !MOCK_RGB\n                _ = DeviceHandle ?? throw new InvalidOperationException(\"RGB Keyboard unsupported\");\n#endif\n\n                await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n                return settings.Store.State;\n            }\n        }\n\n        public async Task SetStateAsync(RGBKeyboardBacklightState state)\n        {\n            using (await IoLock.LockAsync().ConfigureAwait(false))\n            {\n#if !MOCK_RGB\n                _ = DeviceHandle ?? throw new InvalidOperationException(\"RGB Keyboard unsupported\");\n#endif\n\n                await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n                settings.Store.State = state;\n                settings.SynchronizeStore();\n\n                var selectedPreset = state.SelectedPreset;\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Selected preset: {selectedPreset}\");\n\n                LENOVO_RGB_KEYBOARD_STATE str;\n                if (selectedPreset == RGBKeyboardBacklightPreset.Off)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Creating off state.\");\n\n                    str = CreateOffState();\n                }\n                else\n                {\n                    var presetDescription = state.Presets.GetValueOrDefault(selectedPreset, RGBKeyboardBacklightBacklightPresetDescription.Default);\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Creating state: {presetDescription}\");\n\n                    str = Convert(presetDescription);\n                }\n\n                await SendToDevice(str).ConfigureAwait(false);\n            }\n        }\n\n        public async Task SetPresetAsync(RGBKeyboardBacklightPreset preset)\n        {\n            using (await IoLock.LockAsync().ConfigureAwait(false))\n            {\n#if !MOCK_RGB\n                _ = DeviceHandle ?? throw new InvalidOperationException(\"RGB Keyboard unsupported\");\n#endif\n\n                await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n                var state = settings.Store.State;\n                var presets = state.Presets;\n\n                settings.Store.State = new(preset, presets);\n                settings.SynchronizeStore();\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Preset is {preset}.\");\n\n                LENOVO_RGB_KEYBOARD_STATE str;\n                if (preset == RGBKeyboardBacklightPreset.Off)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Creating off state.\");\n\n                    str = CreateOffState();\n                }\n                else\n                {\n                    var presetDescription = state.Presets.GetValueOrDefault(preset, RGBKeyboardBacklightBacklightPresetDescription.Default);\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Creating state: {presetDescription}\");\n\n                    str = Convert(presetDescription);\n                }\n\n                await SendToDevice(str).ConfigureAwait(false);\n            }\n        }\n\n        public async Task<RGBKeyboardBacklightPreset> SetNextPresetAsync()\n        {\n            using (await IoLock.LockAsync().ConfigureAwait(false))\n            {\n#if !MOCK_RGB\n                _ = DeviceHandle ?? throw new InvalidOperationException(\"RGB Keyboard unsupported\");\n#endif\n\n                await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n                var state = settings.Store.State;\n\n                var newPreset = state.SelectedPreset.Next();\n                var presets = state.Presets;\n\n                settings.Store.State = new(newPreset, presets);\n                settings.SynchronizeStore();\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"New preset is {newPreset}.\");\n\n                LENOVO_RGB_KEYBOARD_STATE str;\n                if (newPreset == RGBKeyboardBacklightPreset.Off)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Creating off state.\");\n\n                    str = CreateOffState();\n                }\n                else\n                {\n                    var presetDescription = state.Presets.GetValueOrDefault(newPreset, RGBKeyboardBacklightBacklightPresetDescription.Default);\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Creating state: {presetDescription}\");\n\n                    str = Convert(presetDescription);\n                }\n\n                await SendToDevice(str).ConfigureAwait(false);\n\n                return newPreset;\n            }\n        }\n\n        private async Task SetCurrentPresetAsync()\n        {\n#if !MOCK_RGB\n            _ = DeviceHandle ?? throw new InvalidOperationException(\"RGB Keyboard unsupported\");\n#endif\n\n            await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n            var state = settings.Store.State;\n\n            var preset = state.SelectedPreset;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Current preset is {preset}.\");\n\n            LENOVO_RGB_KEYBOARD_STATE str;\n            if (preset == RGBKeyboardBacklightPreset.Off)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Creating off state.\");\n\n                str = CreateOffState();\n            }\n            else\n            {\n                var presetDescription = state.Presets.GetValueOrDefault(preset, RGBKeyboardBacklightBacklightPresetDescription.Default);\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Creating state: {presetDescription}\");\n\n                str = Convert(presetDescription);\n            }\n\n            await SendToDevice(str).ConfigureAwait(false);\n        }\n\n        private async Task ThrowIfVantageEnabled()\n        {\n            var vantageStatus = await vantageDisabler.GetStatusAsync().ConfigureAwait(false);\n            if (vantageStatus == SoftwareStatus.Enabled)\n                throw new InvalidOperationException(\"Can't manage RGB keyboard with Vantage enabled\");\n        }\n\n        private unsafe Task SendToDevice(LENOVO_RGB_KEYBOARD_STATE str) => Task.Run(() =>\n        {\n#if !MOCK_RGB\n            var handle = DeviceHandle ?? throw new InvalidOperationException(\"RGB Keyboard unsupported\");\n\n            var ptr = IntPtr.Zero;\n            try\n            {\n                var size = Marshal.SizeOf<LENOVO_RGB_KEYBOARD_STATE>();\n                ptr = Marshal.AllocHGlobal(size);\n                Marshal.StructureToPtr(str, ptr, false);\n\n                if (!PInvoke.HidD_SetFeature(handle, ptr.ToPointer(), (uint)size))\n                    PInvokeExtensions.ThrowIfWin32Error(\"HidD_SetFeature\");\n            }\n            finally\n            {\n                Marshal.FreeHGlobal(ptr);\n            }\n#endif\n        });\n\n        private static LENOVO_RGB_KEYBOARD_STATE CreateOffState()\n        {\n            return new()\n            {\n                Header = [0xCC, 0x16],\n                Unused = new byte[13],\n                Padding = 0,\n                Effect = 0,\n                WaveLTR = 0,\n                WaveRTL = 0,\n                Brightness = 0,\n                Zone1Rgb = new byte[3],\n                Zone2Rgb = new byte[3],\n                Zone3Rgb = new byte[3],\n                Zone4Rgb = new byte[3],\n            };\n        }\n\n        private static LENOVO_RGB_KEYBOARD_STATE Convert(RGBKeyboardBacklightBacklightPresetDescription preset)\n        {\n            var result = new LENOVO_RGB_KEYBOARD_STATE\n            {\n                Header = [0xCC, 0x16],\n                Unused = new byte[13],\n                Padding = 0x0,\n                Zone1Rgb = [0xFF, 0xFF, 0xFF],\n                Zone2Rgb = [0xFF, 0xFF, 0xFF],\n                Zone3Rgb = [0xFF, 0xFF, 0xFF],\n                Zone4Rgb = [0xFF, 0xFF, 0xFF],\n                Effect = preset.Effect switch\n                {\n                    RGBKeyboardBacklightEffect.Static => 1,\n                    RGBKeyboardBacklightEffect.Breath => 3,\n                    RGBKeyboardBacklightEffect.WaveRTL => 4,\n                    RGBKeyboardBacklightEffect.WaveLTR => 4,\n                    RGBKeyboardBacklightEffect.Smooth => 6,\n                    _ => 0\n                },\n                WaveRTL = (byte)(preset.Effect == RGBKeyboardBacklightEffect.WaveRTL ? 1 : 0),\n                WaveLTR = (byte)(preset.Effect == RGBKeyboardBacklightEffect.WaveLTR ? 1 : 0),\n                Brightness = preset.Brightness switch\n                {\n                    RGBKeyboardBacklightBrightness.Low => 1,\n                    RGBKeyboardBacklightBrightness.High => 2,\n                    _ => 0\n                }\n            };\n\n\n            if (preset.Effect != RGBKeyboardBacklightEffect.Static)\n            {\n                result.Speed = preset.Speed switch\n                {\n                    RGBKeyboardBacklightSpeed.Slowest => 1,\n                    RGBKeyboardBacklightSpeed.Slow => 2,\n                    RGBKeyboardBacklightSpeed.Fast => 3,\n                    RGBKeyboardBacklightSpeed.Fastest => 4,\n                    _ => 0\n                };\n            }\n\n            if (preset.Effect is RGBKeyboardBacklightEffect.Static or RGBKeyboardBacklightEffect.Breath)\n            {\n                result.Zone1Rgb = [preset.Zone1.R, preset.Zone1.G, preset.Zone1.B];\n                result.Zone2Rgb = [preset.Zone2.R, preset.Zone2.G, preset.Zone2.B];\n                result.Zone3Rgb = [preset.Zone3.R, preset.Zone3.G, preset.Zone3.B];\n                result.Zone4Rgb = [preset.Zone4.R, preset.Zone4.G, preset.Zone4.B];\n            }\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/Sensors/AbstractSensorsController.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\nusing NvAPIWrapper.Native;\nusing NvAPIWrapper.Native.GPU;\nusing Windows.Win32;\nusing Windows.Win32.System.Power;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.Sensors;\n\npublic abstract class AbstractSensorsController(GPUController gpuController) : ISensorsController\n{\n    private readonly struct GPUInfo(\n        int utilization,\n        int coreClock,\n        int maxCoreClock,\n        int memoryClock,\n        int maxMemoryClock,\n        int temperature,\n        int maxTemperature)\n    {\n        public static readonly GPUInfo Empty = new(-1, -1, -1, -1, -1, -1, -1);\n\n        public int Utilization { get; } = utilization;\n        public int CoreClock { get; } = coreClock;\n        public int MaxCoreClock { get; } = maxCoreClock;\n        public int MemoryClock { get; } = memoryClock;\n        public int MaxMemoryClock { get; } = maxMemoryClock;\n        public int Temperature { get; } = temperature;\n        public int MaxTemperature { get; } = maxTemperature;\n    }\n\n    private readonly SafePerformanceCounter _percentProcessorPerformanceCounter = new(\"Processor Information\", \"% Processor Performance\", \"_Total\");\n    private readonly SafePerformanceCounter _percentProcessorUtilityCounter = new(\"Processor Information\", \"% Processor Utility\", \"_Total\");\n\n    private int? _cpuBaseClockCache;\n    private int? _cpuMaxCoreClockCache;\n    private int? _cpuMaxFanSpeedCache;\n    private int? _gpuMaxFanSpeedCache;\n\n    public abstract Task<bool> IsSupportedAsync();\n\n    public Task PrepareAsync()\n    {\n        _percentProcessorPerformanceCounter.Reset();\n        _percentProcessorUtilityCounter.Reset();\n        return Task.CompletedTask;\n    }\n\n    public async Task<SensorsData> GetDataAsync()\n    {\n        const int genericMaxUtilization = 100;\n        const int genericMaxTemperature = 100;\n\n        var cpuUtilization = GetCpuUtilization(genericMaxUtilization);\n        var cpuMaxCoreClock = _cpuMaxCoreClockCache ??= await GetCpuMaxCoreClockAsync().ConfigureAwait(false);\n        var cpuCoreClock = GetCpuCoreClock();\n        var cpuCurrentTemperature = await GetCpuCurrentTemperatureAsync().ConfigureAwait(false);\n        var cpuCurrentFanSpeed = await GetCpuCurrentFanSpeedAsync().ConfigureAwait(false);\n        var cpuMaxFanSpeed = _cpuMaxFanSpeedCache ??= await GetCpuMaxFanSpeedAsync().ConfigureAwait(false);\n\n        var gpuInfo = await GetGPUInfoAsync().ConfigureAwait(false);\n        var gpuCurrentTemperature = gpuInfo.Temperature >= 0 ? gpuInfo.Temperature : await GetGpuCurrentTemperatureAsync().ConfigureAwait(false);\n        var gpuMaxTemperature = gpuInfo.MaxTemperature >= 0 ? gpuInfo.MaxTemperature : genericMaxTemperature;\n        var gpuCurrentFanSpeed = await GetGpuCurrentFanSpeedAsync().ConfigureAwait(false);\n        var gpuMaxFanSpeed = _gpuMaxFanSpeedCache ??= await GetGpuMaxFanSpeedAsync().ConfigureAwait(false);\n\n        var cpu = new SensorData(cpuUtilization,\n            genericMaxUtilization,\n            cpuCoreClock,\n            cpuMaxCoreClock,\n            -1,\n            -1,\n            cpuCurrentTemperature,\n            genericMaxTemperature,\n            cpuCurrentFanSpeed,\n            cpuMaxFanSpeed);\n        var gpu = new SensorData(gpuInfo.Utilization,\n            genericMaxUtilization,\n            gpuInfo.CoreClock,\n            gpuInfo.MaxCoreClock,\n            gpuInfo.MemoryClock,\n            gpuInfo.MaxMemoryClock,\n            gpuCurrentTemperature,\n            gpuMaxTemperature,\n            gpuCurrentFanSpeed,\n            gpuMaxFanSpeed);\n        var result = new SensorsData(cpu, gpu);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Current data: {result} [type={GetType().Name}]\");\n\n        return result;\n    }\n\n    public async Task<(int cpuFanSpeed, int gpuFanSpeed)> GetFanSpeedsAsync()\n    {\n        var cpuFanSpeed = await GetCpuCurrentFanSpeedAsync().ConfigureAwait(false);\n        var gpuFanSpeed = await GetGpuCurrentFanSpeedAsync().ConfigureAwait(false);\n        return (cpuFanSpeed, gpuFanSpeed);\n    }\n\n    protected abstract Task<int> GetCpuCurrentTemperatureAsync();\n\n    protected abstract Task<int> GetGpuCurrentTemperatureAsync();\n\n    protected abstract Task<int> GetCpuCurrentFanSpeedAsync();\n\n    protected abstract Task<int> GetGpuCurrentFanSpeedAsync();\n\n    protected abstract Task<int> GetCpuMaxFanSpeedAsync();\n\n    protected abstract Task<int> GetGpuMaxFanSpeedAsync();\n\n    private int GetCpuUtilization(int maxUtilization)\n    {\n        var result = (int)_percentProcessorUtilityCounter.NextValue();\n        if (result < 0)\n            return -1;\n        return Math.Min(result, maxUtilization);\n    }\n\n    private int GetCpuCoreClock()\n    {\n        var baseClock = _cpuBaseClockCache ??= GetCpuBaseClock();\n        var clock = (int)(baseClock * (_percentProcessorPerformanceCounter.NextValue() / 100f));\n        if (clock < 1)\n            return -1;\n        return clock;\n    }\n\n    private static unsafe int GetCpuBaseClock()\n    {\n        var ptr = IntPtr.Zero;\n        try\n        {\n            PInvoke.GetSystemInfo(out var systemInfo);\n\n            var numberOfProcessors = Math.Min(32, (int)systemInfo.dwNumberOfProcessors);\n            var infoSize = Marshal.SizeOf<PROCESSOR_POWER_INFORMATION>();\n            var infosSize = numberOfProcessors * infoSize;\n\n            ptr = Marshal.AllocHGlobal(infosSize);\n\n            var result = PInvoke.CallNtPowerInformation(POWER_INFORMATION_LEVEL.ProcessorInformation,\n                null,\n                0,\n                ptr.ToPointer(),\n                (uint)infosSize);\n            if (result != 0)\n                return 0;\n\n            var infos = new PROCESSOR_POWER_INFORMATION[numberOfProcessors];\n\n            for (var i = 0; i < infos.Length; i++)\n                infos[i] = Marshal.PtrToStructure<PROCESSOR_POWER_INFORMATION>(IntPtr.Add(ptr, i * infoSize));\n\n            return (int)infos.Select(p => p.MaxMhz).Max();\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n        }\n    }\n\n    private static Task<int> GetCpuMaxCoreClockAsync() => WMI.LenovoGameZoneData.GetCPUFrequencyAsync();\n\n    private async Task<GPUInfo> GetGPUInfoAsync()\n    {\n        if (gpuController.IsSupported())\n            await gpuController.StartAsync().ConfigureAwait(false);\n\n        if (await gpuController.GetLastKnownStateAsync().ConfigureAwait(false) is GPUState.PoweredOff or GPUState.Unknown)\n            return GPUInfo.Empty;\n\n        try\n        {\n            NVAPI.Initialize();\n\n            var gpu = NVAPI.GetGPU();\n            if (gpu is null)\n                return GPUInfo.Empty;\n\n            var utilization = Math.Min(100, Math.Max(gpu.UsageInformation.GPU.Percentage, gpu.UsageInformation.VideoEngine.Percentage));\n\n            var currentCoreClock = (int)gpu.CurrentClockFrequencies.GraphicsClock.Frequency / 1000;\n            var currentMemoryClock = (int)gpu.CurrentClockFrequencies.MemoryClock.Frequency / 1000;\n\n            var maxCoreClock = (int)gpu.BoostClockFrequencies.GraphicsClock.Frequency / 1000;\n            var maxMemoryClock = (int)gpu.BoostClockFrequencies.MemoryClock.Frequency / 1000;\n\n            var states = GPUApi.GetPerformanceStates20(gpu.Handle);\n            var maxCoreClockOffset = states.Clocks[PerformanceStateId.P0_3DPerformance][0].FrequencyDeltaInkHz.DeltaValue / 1000;\n            var maxMemoryClockOffset = states.Clocks[PerformanceStateId.P0_3DPerformance][1].FrequencyDeltaInkHz.DeltaValue / 1000;\n\n            var temperatureSensor = gpu.ThermalInformation.ThermalSensors.FirstOrDefault();\n            var currentTemperature = temperatureSensor?.CurrentTemperature ?? -1;\n            var maxTemperature = temperatureSensor?.DefaultMaximumTemperature ?? -1;\n\n            return new(utilization,\n                currentCoreClock,\n                maxCoreClock + maxCoreClockOffset,\n                currentMemoryClock,\n                maxMemoryClock + maxMemoryClockOffset,\n                currentTemperature,\n                maxTemperature);\n        }\n        catch\n        {\n            return GPUInfo.Empty;\n        }\n        finally\n        {\n            try { NVAPI.Unload(); } catch { /* Ignored */ }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/Sensors/ISensorsController.cs",
    "content": "﻿using System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.Sensors;\n\npublic interface ISensorsController\n{\n    Task<bool> IsSupportedAsync();\n    Task PrepareAsync();\n    Task<SensorsData> GetDataAsync();\n    Task<(int cpuFanSpeed, int gpuFanSpeed)> GetFanSpeedsAsync();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/Sensors/SensorsController.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.Sensors;\n\npublic class SensorsController(\n    SensorsControllerV1 controllerV1,\n    SensorsControllerV2 controllerV2,\n    SensorsControllerV3 controllerV3)\n    : ISensorsController\n{\n    private ISensorsController? _controller;\n\n    public async Task<bool> IsSupportedAsync() => await GetControllerAsync().ConfigureAwait(false) is not null;\n\n    public async Task PrepareAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false) ?? throw new InvalidOperationException(\"No supported controller found\");\n        await controller.PrepareAsync().ConfigureAwait(false);\n    }\n\n    public async Task<SensorsData> GetDataAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false) ?? throw new InvalidOperationException(\"No supported controller found\");\n        return await controller.GetDataAsync().ConfigureAwait(false);\n    }\n\n    public async Task<(int cpuFanSpeed, int gpuFanSpeed)> GetFanSpeedsAsync()\n    {\n        var controller = await GetControllerAsync().ConfigureAwait(false) ?? throw new InvalidOperationException(\"No supported controller found\");\n        return await controller.GetFanSpeedsAsync().ConfigureAwait(false);\n    }\n\n    private async Task<ISensorsController?> GetControllerAsync()\n    {\n        if (_controller is not null)\n            return _controller;\n\n        if (await controllerV3.IsSupportedAsync().ConfigureAwait(false))\n            return _controller = controllerV3;\n\n        if (await controllerV2.IsSupportedAsync().ConfigureAwait(false))\n            return _controller = controllerV2;\n\n        if (await controllerV1.IsSupportedAsync().ConfigureAwait(false))\n            return _controller = controllerV1;\n\n        return null;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/Sensors/SensorsControllerV1.cs",
    "content": "﻿using System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.Sensors;\n\npublic class SensorsControllerV1(GPUController gpuController) : AbstractSensorsController(gpuController)\n{\n    private const int CPU_SENSOR_ID = 3;\n    private const int GPU_SENSOR_ID = 4;\n    private const int CPU_FAN_ID = 0;\n    private const int GPU_FAN_ID = 1;\n\n    public override async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var result = await WMI.LenovoFanTableData.ExistsAsync(0, CPU_FAN_ID).ConfigureAwait(false);\n            result &= await WMI.LenovoFanTableData.ExistsAsync(0, GPU_FAN_ID).ConfigureAwait(false);\n\n            if (result)\n                _ = await GetDataAsync().ConfigureAwait(false);\n\n            return result;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    protected override async Task<int> GetCpuCurrentTemperatureAsync()\n    {\n        var t = await WMI.LenovoFanMethod.FanGetCurrentSensorTemperatureAsync(CPU_SENSOR_ID).ConfigureAwait(false);\n        if (t < 1)\n            return -1;\n        return t;\n    }\n\n    protected override async Task<int> GetGpuCurrentTemperatureAsync()\n    {\n        var t = await WMI.LenovoFanMethod.FanGetCurrentSensorTemperatureAsync(GPU_SENSOR_ID).ConfigureAwait(false);\n        if (t < 1)\n            return -1;\n        return t;\n    }\n\n    protected override Task<int> GetCpuCurrentFanSpeedAsync() => WMI.LenovoFanMethod.FanGetCurrentFanSpeedAsync(CPU_FAN_ID);\n\n    protected override Task<int> GetGpuCurrentFanSpeedAsync() => WMI.LenovoFanMethod.FanGetCurrentFanSpeedAsync(GPU_FAN_ID);\n\n    protected override Task<int> GetCpuMaxFanSpeedAsync() => WMI.LenovoFanMethod.GetDefaultFanMaxSpeedAsync(0, CPU_FAN_ID);\n\n    protected override Task<int> GetGpuMaxFanSpeedAsync() => WMI.LenovoFanMethod.GetDefaultFanMaxSpeedAsync(0, GPU_FAN_ID);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/Sensors/SensorsControllerV2.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.Sensors;\n\npublic class SensorsControllerV2(GPUController gpuController) : AbstractSensorsController(gpuController)\n{\n    private const int CPU_SENSOR_ID = 3;\n    private const int GPU_SENSOR_ID = 4;\n    private const int CPU_FAN_ID = 0;\n    private const int GPU_FAN_ID = 1;\n\n    public override async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var result = await WMI.LenovoFanTableData.ExistsAsync(CPU_SENSOR_ID, CPU_FAN_ID).ConfigureAwait(false);\n            result &= await WMI.LenovoFanTableData.ExistsAsync(GPU_SENSOR_ID, GPU_FAN_ID).ConfigureAwait(false);\n\n            if (result)\n                _ = await GetDataAsync().ConfigureAwait(false);\n\n            return result;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Error checking support. [type={GetType().Name}]\", ex);\n\n            return false;\n        }\n    }\n\n    protected override async Task<int> GetCpuCurrentTemperatureAsync()\n    {\n        var t = await WMI.LenovoFanMethod.FanGetCurrentSensorTemperatureAsync(CPU_SENSOR_ID).ConfigureAwait(false);\n        if (t < 1)\n            return -1;\n        return t;\n    }\n\n    protected override async Task<int> GetGpuCurrentTemperatureAsync()\n    {\n        var t = await WMI.LenovoFanMethod.FanGetCurrentSensorTemperatureAsync(GPU_SENSOR_ID).ConfigureAwait(false);\n        if (t < 1)\n            return -1;\n        return t;\n    }\n\n    protected override Task<int> GetCpuCurrentFanSpeedAsync() => WMI.LenovoFanMethod.FanGetCurrentFanSpeedAsync(CPU_FAN_ID);\n\n    protected override Task<int> GetGpuCurrentFanSpeedAsync() => WMI.LenovoFanMethod.FanGetCurrentFanSpeedAsync(GPU_FAN_ID);\n\n    protected override Task<int> GetCpuMaxFanSpeedAsync() => WMI.LenovoFanMethod.GetCurrentFanMaxSpeedAsync(CPU_SENSOR_ID, CPU_FAN_ID);\n\n    protected override Task<int> GetGpuMaxFanSpeedAsync() => WMI.LenovoFanMethod.GetCurrentFanMaxSpeedAsync(GPU_SENSOR_ID, GPU_FAN_ID);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/Sensors/SensorsControllerV3.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Controllers.Sensors;\n\npublic class SensorsControllerV3(GPUController gpuController) : AbstractSensorsController(gpuController)\n{\n    private const int CPU_SENSOR_ID = 4;\n    private const int GPU_SENSOR_ID = 5;\n    private const int CPU_FAN_ID = 1;\n    private const int GPU_FAN_ID = 2;\n\n    public override async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var result = await WMI.LenovoFanTableData.ExistsAsync(CPU_SENSOR_ID, CPU_FAN_ID).ConfigureAwait(false);\n            result &= await WMI.LenovoFanTableData.ExistsAsync(GPU_SENSOR_ID, GPU_FAN_ID).ConfigureAwait(false);\n\n            if (result)\n                _ = await GetDataAsync().ConfigureAwait(false);\n\n            return result;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Error checking support. [type={GetType().Name}]\", ex);\n\n            return false;\n        }\n    }\n\n    protected override async Task<int> GetCpuCurrentTemperatureAsync()\n    {\n        var value = await WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.CpuCurrentTemperature).ConfigureAwait(false);\n        return value < 1 ? -1 : value;\n    }\n\n    protected override async Task<int> GetGpuCurrentTemperatureAsync()\n    {\n        var value = await WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.GpuCurrentTemperature).ConfigureAwait(false);\n        return value < 1 ? -1 : value;\n    }\n\n    protected override Task<int> GetCpuCurrentFanSpeedAsync() => WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.CpuCurrentFanSpeed);\n\n    protected override Task<int> GetGpuCurrentFanSpeedAsync() => WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.GpuCurrentFanSpeed);\n\n    protected override Task<int> GetCpuMaxFanSpeedAsync() => WMI.LenovoFanMethod.GetCurrentFanMaxSpeedAsync(CPU_SENSOR_ID, CPU_FAN_ID);\n\n    protected override Task<int> GetGpuMaxFanSpeedAsync() => WMI.LenovoFanMethod.GetCurrentFanMaxSpeedAsync(GPU_SENSOR_ID, GPU_FAN_ID);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/SmartFnLockController.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.Utils;\nusing NeoSmart.AsyncLock;\nusing Windows.Win32;\nusing Windows.Win32.UI.Input.KeyboardAndMouse;\nusing Windows.Win32.UI.WindowsAndMessaging;\n\nnamespace LenovoLegionToolkit.Lib.Controllers;\n\npublic class SmartFnLockController(FnLockFeature feature, ApplicationSettings settings)\n{\n    private readonly AsyncLock _lock = new();\n\n    private bool _ctrlDepressed;\n    private bool _shiftDepressed;\n    private bool _altDepressed;\n    private bool _restoreFnLock;\n\n    public void OnKeyboardEvent(nuint wParam, KBDLLHOOKSTRUCT kbStruct)\n    {\n        if (settings.Store.SmartFnLockFlags == 0)\n            return;\n\n        Task.Run(async () =>\n        {\n            try\n            {\n                using (await _lock.LockAsync().ConfigureAwait(false))\n                    await OnKeyboardEventAsync(wParam, kbStruct).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Failed to handle keyboard event.\", ex);\n            }\n        });\n    }\n\n    private async Task OnKeyboardEventAsync(nuint wParam, KBDLLHOOKSTRUCT kbStruct)\n    {\n        if (IsModifierKeyPressed(wParam, kbStruct))\n        {\n            if (_restoreFnLock)\n                return;\n\n            var state = await feature.GetStateAsync().ConfigureAwait(false);\n            if (state == FnLockState.Off)\n                return;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Disabling Fn Lock temporarily...\");\n\n            await feature.SetStateAsync(FnLockState.Off).ConfigureAwait(false);\n            _restoreFnLock = true;\n        }\n        else if (_restoreFnLock)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Re-enabling Fn Lock...\");\n\n            await feature.SetStateAsync(FnLockState.On).ConfigureAwait(false);\n            _restoreFnLock = false;\n        }\n    }\n\n    private bool IsModifierKeyPressed(nuint wParam, KBDLLHOOKSTRUCT kbStruct)\n    {\n        var isKeyDown = wParam is PInvoke.WM_KEYDOWN or PInvoke.WM_SYSKEYDOWN;\n        var vkKeyCode = (VIRTUAL_KEY)kbStruct.vkCode;\n\n        if (vkKeyCode is VIRTUAL_KEY.VK_LCONTROL or VIRTUAL_KEY.VK_RCONTROL)\n            _ctrlDepressed = isKeyDown;\n\n        if (vkKeyCode is VIRTUAL_KEY.VK_LSHIFT or VIRTUAL_KEY.VK_RSHIFT)\n            _shiftDepressed = isKeyDown;\n\n        if (vkKeyCode is VIRTUAL_KEY.VK_LMENU or VIRTUAL_KEY.VK_RMENU)\n            _altDepressed = isKeyDown;\n\n        if (!_ctrlDepressed && !_shiftDepressed && !_altDepressed)\n            return false;\n\n        var result = false;\n        var flags = settings.Store.SmartFnLockFlags;\n\n        if (flags.HasFlag(ModifierKey.Ctrl))\n            result |= _ctrlDepressed;\n\n        if (flags.HasFlag(ModifierKey.Shift))\n            result |= _shiftDepressed;\n\n        if (flags.HasFlag(ModifierKey.Alt))\n            result |= _altDepressed;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Modifier key is depressed: {result} [ctrl={_ctrlDepressed}, shift={_shiftDepressed}, alt={_altDepressed}, flags={flags}]\");\n\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/SpectrumKeyboardBacklightController.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32.SafeHandles;\nusing NeoSmart.AsyncLock;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing Windows.Win32;\n\nnamespace LenovoLegionToolkit.Lib.Controllers;\n\npublic class SpectrumKeyboardBacklightController\n{\n    public interface IScreenCapture\n    {\n        void CaptureScreen(ref RGBColor[,] buffer, int width, int height, CancellationToken token);\n    }\n\n    private readonly struct KeyMap(int width, int height, ushort[,] keyCodes, ushort[] additionalKeyCodes)\n    {\n        public static readonly KeyMap Empty = new(0, 0, new ushort[0, 0], []);\n\n        public readonly int Width = width;\n        public readonly int Height = height;\n        public readonly ushort[,] KeyCodes = keyCodes;\n        public readonly ushort[] AdditionalKeyCodes = additionalKeyCodes;\n    }\n\n    private static readonly AsyncLock GetDeviceHandleLock = new();\n    private static readonly object IoLock = new();\n\n    private readonly TimeSpan _auroraRefreshInterval = TimeSpan.FromMilliseconds(60);\n\n    private readonly SpecialKeyListener _listener;\n    private readonly VantageDisabler _vantageDisabler;\n    private readonly IScreenCapture _screenCapture;\n\n    private SafeFileHandle? _deviceHandle;\n\n    private CancellationTokenSource? _auroraRefreshCancellationTokenSource;\n    private Task? _auroraRefreshTask;\n\n    private readonly JsonSerializerSettings _jsonSerializerSettings = new()\n    {\n        Formatting = Formatting.Indented,\n        TypeNameHandling = TypeNameHandling.Auto,\n        ObjectCreationHandling = ObjectCreationHandling.Replace,\n        Converters = [new StringEnumConverter()]\n    };\n\n    public bool ForceDisable { get; set; }\n\n    public SpectrumKeyboardBacklightController(SpecialKeyListener listener, VantageDisabler vantageDisabler, IScreenCapture screenCapture)\n    {\n        _listener = listener;\n        _vantageDisabler = vantageDisabler;\n        _screenCapture = screenCapture;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    private async void Listener_Changed(object? sender, SpecialKeyListener.ChangedEventArgs e)\n    {\n        if (!await IsSupportedAsync().ConfigureAwait(false))\n            return;\n\n        if (await _vantageDisabler.GetStatusAsync().ConfigureAwait(false) == SoftwareStatus.Enabled)\n            return;\n\n        switch (e.SpecialKey)\n        {\n            case SpecialKey.SpectrumPreset1\n                or SpecialKey.SpectrumPreset2\n                or SpecialKey.SpectrumPreset3\n                or SpecialKey.SpectrumPreset4\n                or SpecialKey.SpectrumPreset5\n                or SpecialKey.SpectrumPreset6:\n                {\n                    await StartAuroraIfNeededAsync().ConfigureAwait(false);\n                    break;\n                }\n        }\n    }\n\n    public async Task<bool> IsSupportedAsync() => await GetDeviceHandleAsync().ConfigureAwait(false) is not null;\n\n    public async Task<(SpectrumLayout, KeyboardLayout, HashSet<ushort>)> GetKeyboardLayoutAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Checking keyboard layout...\");\n\n        var (width, height, keys) = await ReadAllKeyCodesAsync().ConfigureAwait(false);\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n\n        var spectrumLayout = (width, height) switch\n        {\n            (22, 9) when mi.Properties.HasAlternativeFullSpectrumLayout => SpectrumLayout.FullAlternative,\n            (22, 9) => SpectrumLayout.Full,\n            (20, 8) => SpectrumLayout.KeyboardAndFront,\n            _ => SpectrumLayout.KeyboardOnly // (20, 7)\n        };\n\n        KeyboardLayout keyboardLayout;\n        if (keys.Contains(0xA9))\n            keyboardLayout = KeyboardLayout.Jis;\n        else if (keys.Contains(0xA8))\n            keyboardLayout = KeyboardLayout.Iso;\n        else\n            keyboardLayout = KeyboardLayout.Ansi;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Layout is {spectrumLayout}, {keyboardLayout}.\");\n\n        return (spectrumLayout, keyboardLayout, keys);\n    }\n\n    public async Task<int> GetBrightnessAsync()\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting keyboard brightness...\");\n\n        var input = new LENOVO_SPECTRUM_GET_BRIGHTNESS_REQUEST();\n        SetAndGetFeature(handle, input, out LENOVO_SPECTRUM_GET_BRIGHTNESS_RESPONSE output);\n        var result = output.Brightness;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Keyboard brightness is {result}.\");\n\n        return result;\n    }\n\n    public async Task SetBrightnessAsync(int brightness)\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        if (brightness is < 0 or > 9)\n            throw new InvalidOperationException(\"Brightness must be between 0 and 9\");\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting keyboard brightness to: {brightness}.\");\n\n        var input = new LENOVO_SPECTRUM_SET_BRIGHTNESS_REQUEST((byte)brightness);\n        SetFeature(handle, input);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Keyboard brightness set.\");\n    }\n\n    public async Task<bool> GetLogoStatusAsync()\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting logo status...\");\n\n        var input = new LENOVO_SPECTRUM_GET_LOGO_STATUS();\n        SetAndGetFeature(handle, input, out LENOVO_SPECTRUM_GET_LOGO_STATUS_RESPONSE output);\n        var result = output.IsOn;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Logo status is {result}.\");\n\n        return result;\n    }\n\n    public async Task SetLogoStatusAsync(bool isOn)\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting logo status to: {isOn}.\");\n\n        var input = new LENOVO_SPECTRUM_SET_LOGO_STATUS_REQUEST(isOn);\n        SetFeature(handle, input);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Logo status set.\");\n    }\n\n    public async Task<int> GetProfileAsync()\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting keyboard profile...\");\n\n        var input = new LENOVO_SPECTRUM_GET_PROFILE_REQUEST();\n        SetAndGetFeature(handle, input, out LENOVO_SPECTRUM_GET_PROFILE_RESPONSE output);\n        var result = output.Profile;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Keyboard profile is {result}.\");\n\n        return result;\n    }\n\n    public async Task SetProfileAsync(int profile)\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        await StopAuroraIfNeededAsync().ConfigureAwait(false);\n\n        if (profile is < 0 or > 6)\n            throw new InvalidOperationException(\"Profile must be between 0 and 6\");\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting keyboard profile to {profile}...\");\n\n        var input = new LENOVO_SPECTRUM_SET_PROFILE_REQUEST((byte)profile);\n        SetFeature(handle, input);\n\n        await Task.Delay(TimeSpan.FromMilliseconds(100)).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Keyboard profile set to {profile}.\");\n\n        await StartAuroraIfNeededAsync(profile).ConfigureAwait(false);\n    }\n\n    public async Task SetProfileDefaultAsync(int profile)\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting keyboard profile {profile} to default...\");\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Keyboard profile {profile} set to default.\");\n\n        var input = new LENOVO_SPECTRUM_SET_PROFILE_DEFAULT_REQUEST((byte)profile);\n        SetFeature(handle, input);\n    }\n\n    public async Task SetProfileDescriptionAsync(int profile, SpectrumKeyboardBacklightEffect[] effects)\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting {effects.Length} effect to keyboard profile {profile}...\");\n\n        effects = Compress(effects);\n        var bytes = Convert(profile, effects).ToBytes();\n        SetFeature(handle, bytes);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Set {effects.Length} effect to keyboard profile {profile}.\");\n\n        await StartAuroraIfNeededAsync(profile).ConfigureAwait(false);\n    }\n\n    public async Task<(int Profile, SpectrumKeyboardBacklightEffect[] Effects)> GetProfileDescriptionAsync(int profile)\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting effects for keyboard profile {profile}...\");\n\n        var input = new LENOVO_SPECTRUM_GET_EFFECT_REQUEST((byte)profile);\n        SetAndGetFeature(handle, input, out var buffer, 960);\n\n        var description = LENOVO_SPECTRUM_EFFECT_DESCRIPTION.FromBytes(buffer);\n        var result = Convert(description);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Retrieved {result.Effects.Length} effects for keyboard profile {profile}...\");\n\n        return result;\n    }\n\n    public async Task ImportProfileDescription(int profile, string jsonPath)\n    {\n        var json = await File.ReadAllTextAsync(jsonPath).ConfigureAwait(false);\n        var effects = JsonConvert.DeserializeObject<SpectrumKeyboardBacklightEffect[]>(json)\n                      ?? throw new InvalidOperationException(\"Couldn't deserialize effects\");\n\n        await SetProfileDescriptionAsync(profile, effects).ConfigureAwait(false);\n    }\n\n    public async Task ExportProfileDescriptionAsync(int profile, string jsonPath)\n    {\n        var (_, effects) = await GetProfileDescriptionAsync(profile).ConfigureAwait(false);\n        var json = JsonConvert.SerializeObject(effects, _jsonSerializerSettings);\n        await File.WriteAllTextAsync(jsonPath, json).ConfigureAwait(false);\n    }\n\n    public async Task<bool> StartAuroraIfNeededAsync(int? profile = null)\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        await StopAuroraIfNeededAsync().ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Starting Aurora... [profile={profile}]\");\n\n        profile ??= await GetProfileAsync().ConfigureAwait(false);\n        var (_, effects) = await GetProfileDescriptionAsync(profile.Value).ConfigureAwait(false);\n\n        if (!effects.Any(e => e.Type == SpectrumKeyboardBacklightEffectType.AuroraSync))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Aurora not needed. [profile={profile}]\");\n\n            return false;\n        }\n\n        _auroraRefreshCancellationTokenSource = new();\n        var token = _auroraRefreshCancellationTokenSource.Token;\n        _auroraRefreshTask = Task.Run(() => AuroraRefreshAsync(profile.Value, token), token);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Aurora started. [profile={profile}]\");\n\n        return true;\n    }\n\n    public async Task StopAuroraIfNeededAsync()\n    {\n        await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopping Aurora...\");\n\n        if (_auroraRefreshCancellationTokenSource is not null)\n            await _auroraRefreshCancellationTokenSource.CancelAsync().ConfigureAwait(false);\n\n        if (_auroraRefreshTask is not null)\n            await _auroraRefreshTask.ConfigureAwait(false);\n\n        _auroraRefreshTask = null;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Aurora stopped.\");\n    }\n\n    public async Task<Dictionary<ushort, RGBColor>> GetStateAsync(bool skipVantageCheck = false)\n    {\n        if (!skipVantageCheck)\n            await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n        var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n        if (handle is null)\n            throw new InvalidOperationException(nameof(handle));\n\n        GetFeature(handle, out LENOVO_SPECTRUM_STATE_RESPONSE state);\n\n        var dict = new Dictionary<ushort, RGBColor>();\n\n        foreach (var key in state.Data.Where(k => k.KeyCode > 0))\n        {\n            var rgb = new RGBColor(key.Color.R, key.Color.G, key.Color.B);\n            dict.TryAdd(key.KeyCode, rgb);\n        }\n\n        return dict;\n    }\n\n    private async Task ThrowIfVantageEnabled()\n    {\n        var vantageStatus = await _vantageDisabler.GetStatusAsync().ConfigureAwait(false);\n        if (vantageStatus == SoftwareStatus.Enabled)\n            throw new InvalidOperationException(\"Can't manage Spectrum keyboard with Vantage enabled\");\n    }\n\n    private async Task<(int Width, int Height, HashSet<ushort> Keys)> ReadAllKeyCodesAsync()\n    {\n        var keyMap = await GetKeyMapAsync().ConfigureAwait(false);\n        var keyCodes = new HashSet<ushort>(keyMap.Width * keyMap.Height);\n\n        foreach (var keyCode in keyMap.KeyCodes)\n            if (keyCode > 0)\n                keyCodes.Add(keyCode);\n\n        foreach (var keyCode in keyMap.AdditionalKeyCodes)\n            if (keyCode > 0)\n                keyCodes.Add(keyCode);\n\n        return (keyMap.Width, keyMap.Height, keyCodes);\n    }\n\n    private async Task<KeyMap> GetKeyMapAsync()\n    {\n        try\n        {\n            var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n            if (handle is null)\n                return KeyMap.Empty;\n\n            SetAndGetFeature(handle,\n                new LENOVO_SPECTRUM_GET_KEY_COUNT_REQUEST(),\n                out LENOVO_SPECTRUM_GET_KEY_COUNT_RESPONSE keyCountResponse);\n\n            var width = keyCountResponse.KeysPerIndex;\n            var height = keyCountResponse.Indexes;\n\n            var keyCodes = new ushort[width, height];\n            var additionalKeyCodes = new ushort[width];\n\n            for (var y = 0; y < height; y++)\n            {\n                SetAndGetFeature(handle,\n                    new LENOVO_SPECTRUM_GET_KEY_PAGE_REQUEST((byte)y),\n                    out LENOVO_SPECTRUM_GET_KEY_PAGE_RESPONSE keyPageResponse);\n\n                for (var x = 0; x < width; x++)\n                    keyCodes[x, y] = keyPageResponse.Items[x].KeyCode;\n            }\n\n            SetAndGetFeature(handle,\n                new LENOVO_SPECTRUM_GET_KEY_PAGE_REQUEST(0, true),\n                out LENOVO_SPECTRUM_GET_KEY_PAGE_RESPONSE secondaryKeyPageResponse);\n\n            for (var x = 0; x < width; x++)\n                additionalKeyCodes[x] = secondaryKeyPageResponse.Items[x].KeyCode;\n\n            return new(width, height, keyCodes, additionalKeyCodes);\n        }\n        catch\n        {\n            return KeyMap.Empty;\n        }\n    }\n\n    private async Task AuroraRefreshAsync(int profile, CancellationToken token)\n    {\n        try\n        {\n            await ThrowIfVantageEnabled().ConfigureAwait(false);\n\n            var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n            if (handle is null)\n                throw new InvalidOperationException(nameof(handle));\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Aurora refresh starting...\");\n\n            var keyMap = await GetKeyMapAsync().ConfigureAwait(false);\n            var width = keyMap.Width;\n            var height = keyMap.Height;\n            var colorBuffer = new RGBColor[width, height];\n\n            SetFeature(handle, new LENOVO_SPECTRUM_AURORA_START_STOP_REQUEST(true, (byte)profile));\n\n            while (!token.IsCancellationRequested)\n            {\n                var delay = Task.Delay(_auroraRefreshInterval, token);\n\n                try\n                {\n                    _screenCapture.CaptureScreen(ref colorBuffer, width, height, token);\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Screen capture failed. Delaying before next refresh...\", ex);\n\n                    await Task.Delay(TimeSpan.FromSeconds(1), token).ConfigureAwait(false);\n                }\n\n                token.ThrowIfCancellationRequested();\n\n                var items = new List<LENOVO_SPECTRUM_AURORA_ITEM>(width * height);\n\n                var avgR = 0;\n                var avgG = 0;\n                var avgB = 0;\n\n                for (var x = 0; x < width; x++)\n                {\n                    for (var y = 0; y < height; y++)\n                    {\n                        var keyCode = keyMap.KeyCodes[x, y];\n                        if (keyCode < 1)\n                            continue;\n\n                        var color = colorBuffer[x, y];\n                        avgR += color.R;\n                        avgG += color.G;\n                        avgB += color.B;\n                        items.Add(new(keyCode, new(color.R, color.G, color.B)));\n                    }\n                }\n\n                avgR /= items.Count;\n                avgG /= items.Count;\n                avgB /= items.Count;\n\n                for (var x = 0; x < width; x++)\n                {\n                    var keyCode = keyMap.AdditionalKeyCodes[x];\n                    if (keyCode < 1)\n                        continue;\n\n                    items.Add(new(keyCode, new((byte)avgR, (byte)avgB, (byte)avgG)));\n                }\n\n                token.ThrowIfCancellationRequested();\n\n                SetFeature(handle, new LENOVO_SPECTRUM_AURORA_SEND_BITMAP_REQUEST([.. items]).ToBytes());\n\n                await delay.ConfigureAwait(false);\n            }\n        }\n        catch (OperationCanceledException) { }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Unexpected exception while refreshing Aurora.\", ex);\n        }\n        finally\n        {\n            var handle = await GetDeviceHandleAsync().ConfigureAwait(false);\n            if (handle is not null)\n            {\n                var currentProfile = await GetProfileAsync().ConfigureAwait(false);\n                SetFeature(handle, new LENOVO_SPECTRUM_AURORA_START_STOP_REQUEST(false, (byte)currentProfile));\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Aurora refresh stopped.\");\n        }\n    }\n\n    private async Task<SafeFileHandle?> GetDeviceHandleAsync()\n    {\n        if (ForceDisable)\n            return null;\n\n        try\n        {\n            using (await GetDeviceHandleLock.LockAsync().ConfigureAwait(false))\n            {\n                if (_deviceHandle is not null && IsReady(_deviceHandle))\n                    return _deviceHandle;\n\n                SafeFileHandle? newDeviceHandle = null;\n\n                const int retries = 3;\n                const int delay = 50;\n\n                for (var i = 0; i < retries; i++)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Refreshing handle... [retry={i + 1}]\");\n\n                    var tempDeviceHandle = Devices.GetSpectrumRGBKeyboard(true);\n                    if (tempDeviceHandle is not null && IsReady(tempDeviceHandle))\n                    {\n                        newDeviceHandle = tempDeviceHandle;\n                        break;\n                    }\n\n                    await Task.Delay(delay).ConfigureAwait(false);\n                }\n\n                if (newDeviceHandle is null)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Handle couldn't be refreshed.\");\n\n                    return null;\n                }\n\n                SetAndGetFeature(newDeviceHandle,\n                    new LENOVO_SPECTRUM_GET_COMPATIBILITY_REQUEST(),\n                    out LENOVO_SPECTRUM_GET_COMPATIBILITY_RESPONSE res);\n\n                if (!res.IsCompatible)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Handle not compatible.\");\n\n                    return null;\n                }\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Handle refreshed.\");\n\n                _deviceHandle = newDeviceHandle;\n                return newDeviceHandle;\n            }\n        }\n        catch\n        {\n            return null;\n        }\n    }\n\n    private static bool IsReady(SafeHandle handle)\n    {\n        try\n        {\n            var b = new byte[960];\n            b[0] = 7;\n            SetFeature(handle, b);\n            return true;\n        }\n        catch\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Keyboard not ready.\");\n\n            return false;\n        }\n    }\n\n    private static void SetAndGetFeature<TIn, TOut>(SafeHandle handle, TIn input, out TOut output) where TIn : notnull where TOut : struct\n    {\n        lock (IoLock)\n        {\n            SetFeature(handle, input);\n            GetFeature(handle, out output);\n        }\n    }\n\n    private static void SetAndGetFeature<TIn>(SafeHandle handle, TIn input, out byte[] output, int size) where TIn : notnull\n    {\n        lock (IoLock)\n        {\n            SetFeature(handle, input);\n            GetFeature(handle, out output, size);\n        }\n    }\n\n    private static unsafe void SetFeature<T>(SafeHandle handle, T str) where T : notnull\n    {\n        lock (IoLock)\n        {\n            var ptr = IntPtr.Zero;\n            try\n            {\n                int size;\n                if (str is byte[] bytes)\n                {\n                    size = bytes.Length;\n                    ptr = Marshal.AllocHGlobal(size);\n                    Marshal.Copy(bytes, 0, ptr, size);\n                }\n                else\n                {\n                    size = Marshal.SizeOf<T>();\n                    ptr = Marshal.AllocHGlobal(size);\n                    Marshal.StructureToPtr(str, ptr, false);\n                }\n\n                var result = PInvoke.HidD_SetFeature(handle, ptr.ToPointer(), (uint)size);\n                if (!result)\n                    PInvokeExtensions.ThrowIfWin32Error(typeof(T).Name);\n            }\n            finally\n            {\n                Marshal.FreeHGlobal(ptr);\n            }\n        }\n    }\n\n    private static unsafe void GetFeature<T>(SafeHandle handle, out T str) where T : struct\n    {\n        lock (IoLock)\n        {\n            var ptr = IntPtr.Zero;\n            try\n            {\n                var size = Marshal.SizeOf<T>();\n                ptr = Marshal.AllocHGlobal(size);\n                Marshal.Copy(new byte[] { 7 }, 0, ptr, 1);\n\n                var result = PInvoke.HidD_GetFeature(handle, ptr.ToPointer(), (uint)size);\n                if (!result)\n                    PInvokeExtensions.ThrowIfWin32Error(typeof(T).Name);\n\n                str = Marshal.PtrToStructure<T>(ptr);\n            }\n            finally\n            {\n                Marshal.FreeHGlobal(ptr);\n            }\n        }\n    }\n\n    private static unsafe void GetFeature(SafeHandle handle, out byte[] bytes, int size)\n    {\n        lock (IoLock)\n        {\n            var ptr = IntPtr.Zero;\n            try\n            {\n                ptr = Marshal.AllocHGlobal(size);\n                Marshal.Copy(new byte[] { 7 }, 0, ptr, 1);\n\n                var result = PInvoke.HidD_GetFeature(handle, ptr.ToPointer(), (uint)size);\n                if (!result)\n                    PInvokeExtensions.ThrowIfWin32Error(\"bytes\");\n\n                bytes = new byte[size];\n                Marshal.Copy(ptr, bytes, 0, size);\n            }\n            finally\n            {\n                Marshal.FreeHGlobal(ptr);\n            }\n        }\n    }\n\n    private static SpectrumKeyboardBacklightEffect[] Compress(SpectrumKeyboardBacklightEffect[] effects)\n    {\n        if (effects.Any(e => e.Type.IsAllLightsEffect()))\n            return [effects.Last(e => e.Type.IsAllLightsEffect())];\n\n        var usedKeyCodes = new HashSet<ushort>();\n        var newEffects = new List<SpectrumKeyboardBacklightEffect>();\n\n        foreach (var effect in effects.Reverse())\n        {\n            if (effect.Type.IsWholeKeyboardEffect() && usedKeyCodes.Intersect(effect.Keys).Any())\n                continue;\n\n            var newKeyCodes = effect.Keys.Except(usedKeyCodes).ToArray();\n\n            foreach (var keyCode in newKeyCodes)\n                usedKeyCodes.Add(keyCode);\n\n            if (newKeyCodes.IsEmpty())\n                continue;\n\n            var newEffect = new SpectrumKeyboardBacklightEffect(effect.Type,\n                effect.Speed,\n                effect.Direction,\n                effect.ClockwiseDirection,\n                effect.Colors,\n                newKeyCodes);\n\n            newEffects.Add(newEffect);\n        }\n\n        newEffects.Reverse();\n        return [.. newEffects];\n    }\n\n    private static (int Profile, SpectrumKeyboardBacklightEffect[] Effects) Convert(LENOVO_SPECTRUM_EFFECT_DESCRIPTION description)\n    {\n        var profile = description.Profile;\n        var effects = description.Effects.Select(Convert).ToArray();\n        return (profile, effects);\n    }\n\n    private static SpectrumKeyboardBacklightEffect Convert(LENOVO_SPECTRUM_EFFECT effect)\n    {\n        var effectType = effect.EffectHeader.EffectType switch\n        {\n            LENOVO_SPECTRUM_EFFECT_TYPE.Always => SpectrumKeyboardBacklightEffectType.Always,\n            LENOVO_SPECTRUM_EFFECT_TYPE.LegionAuraSync => SpectrumKeyboardBacklightEffectType.AuroraSync,\n            LENOVO_SPECTRUM_EFFECT_TYPE.AudioBounceLighting => SpectrumKeyboardBacklightEffectType.AudioBounce,\n            LENOVO_SPECTRUM_EFFECT_TYPE.AudioRippleLighting => SpectrumKeyboardBacklightEffectType.AudioRipple,\n            LENOVO_SPECTRUM_EFFECT_TYPE.ColorChange => SpectrumKeyboardBacklightEffectType.ColorChange,\n            LENOVO_SPECTRUM_EFFECT_TYPE.ColorPulse => SpectrumKeyboardBacklightEffectType.ColorPulse,\n            LENOVO_SPECTRUM_EFFECT_TYPE.ColorWave => SpectrumKeyboardBacklightEffectType.ColorWave,\n            LENOVO_SPECTRUM_EFFECT_TYPE.Rain => SpectrumKeyboardBacklightEffectType.Rain,\n            LENOVO_SPECTRUM_EFFECT_TYPE.ScrewRainbow => SpectrumKeyboardBacklightEffectType.RainbowScrew,\n            LENOVO_SPECTRUM_EFFECT_TYPE.RainbowWave => SpectrumKeyboardBacklightEffectType.RainbowWave,\n            LENOVO_SPECTRUM_EFFECT_TYPE.Ripple => SpectrumKeyboardBacklightEffectType.Ripple,\n            LENOVO_SPECTRUM_EFFECT_TYPE.Smooth => SpectrumKeyboardBacklightEffectType.Smooth,\n            LENOVO_SPECTRUM_EFFECT_TYPE.TypeLighting => SpectrumKeyboardBacklightEffectType.Type,\n            _ => throw new ArgumentException(nameof(effect.EffectHeader.EffectType))\n        };\n\n        var speed = effect.EffectHeader.Speed switch\n        {\n            LENOVO_SPECTRUM_SPEED.Speed1 => SpectrumKeyboardBacklightSpeed.Speed1,\n            LENOVO_SPECTRUM_SPEED.Speed2 => SpectrumKeyboardBacklightSpeed.Speed2,\n            LENOVO_SPECTRUM_SPEED.Speed3 => SpectrumKeyboardBacklightSpeed.Speed3,\n            _ => SpectrumKeyboardBacklightSpeed.None\n        };\n\n        var direction = effect.EffectHeader.Direction switch\n        {\n            LENOVO_SPECTRUM_DIRECTION.LeftToRight => SpectrumKeyboardBacklightDirection.LeftToRight,\n            LENOVO_SPECTRUM_DIRECTION.RightToLeft => SpectrumKeyboardBacklightDirection.RightToLeft,\n            LENOVO_SPECTRUM_DIRECTION.BottomToTop => SpectrumKeyboardBacklightDirection.BottomToTop,\n            LENOVO_SPECTRUM_DIRECTION.TopToBottom => SpectrumKeyboardBacklightDirection.TopToBottom,\n            _ => SpectrumKeyboardBacklightDirection.None\n        };\n\n        var clockwiseDirection = effect.EffectHeader.ClockwiseDirection switch\n        {\n            LENOVO_SPECTRUM_CLOCKWISE_DIRECTION.Clockwise => SpectrumKeyboardBacklightClockwiseDirection.Clockwise,\n            LENOVO_SPECTRUM_CLOCKWISE_DIRECTION.CounterClockwise => SpectrumKeyboardBacklightClockwiseDirection.CounterClockwise,\n            _ => SpectrumKeyboardBacklightClockwiseDirection.None\n        };\n\n        var colors = effect.Colors.Select(c => new RGBColor(c.R, c.G, c.B)).ToArray();\n\n        var keys = effect.KeyCodes;\n        if (effect.KeyCodes is [0x65])\n            keys = [];\n\n        return new(effectType, speed, direction, clockwiseDirection, colors, keys);\n    }\n\n    private static LENOVO_SPECTRUM_EFFECT_DESCRIPTION Convert(int profile, SpectrumKeyboardBacklightEffect[] effects)\n    {\n        var header = new LENOVO_SPECTRUM_HEADER(LENOVO_SPECTRUM_OPERATION_TYPE.EffectChange, 0); // Size will be set on serialization\n        var str = effects.Select((e, i) => Convert(i, e)).ToArray();\n        var result = new LENOVO_SPECTRUM_EFFECT_DESCRIPTION(header, (byte)profile, str);\n        return result;\n    }\n\n    private static LENOVO_SPECTRUM_EFFECT Convert(int index, SpectrumKeyboardBacklightEffect effect)\n    {\n        var effectType = effect.Type switch\n        {\n            SpectrumKeyboardBacklightEffectType.Always => LENOVO_SPECTRUM_EFFECT_TYPE.Always,\n            SpectrumKeyboardBacklightEffectType.AuroraSync => LENOVO_SPECTRUM_EFFECT_TYPE.LegionAuraSync,\n            SpectrumKeyboardBacklightEffectType.AudioBounce => LENOVO_SPECTRUM_EFFECT_TYPE.AudioBounceLighting,\n            SpectrumKeyboardBacklightEffectType.AudioRipple => LENOVO_SPECTRUM_EFFECT_TYPE.AudioRippleLighting,\n            SpectrumKeyboardBacklightEffectType.ColorChange => LENOVO_SPECTRUM_EFFECT_TYPE.ColorChange,\n            SpectrumKeyboardBacklightEffectType.ColorPulse => LENOVO_SPECTRUM_EFFECT_TYPE.ColorPulse,\n            SpectrumKeyboardBacklightEffectType.ColorWave => LENOVO_SPECTRUM_EFFECT_TYPE.ColorWave,\n            SpectrumKeyboardBacklightEffectType.Rain => LENOVO_SPECTRUM_EFFECT_TYPE.Rain,\n            SpectrumKeyboardBacklightEffectType.RainbowScrew => LENOVO_SPECTRUM_EFFECT_TYPE.ScrewRainbow,\n            SpectrumKeyboardBacklightEffectType.RainbowWave => LENOVO_SPECTRUM_EFFECT_TYPE.RainbowWave,\n            SpectrumKeyboardBacklightEffectType.Ripple => LENOVO_SPECTRUM_EFFECT_TYPE.Ripple,\n            SpectrumKeyboardBacklightEffectType.Smooth => LENOVO_SPECTRUM_EFFECT_TYPE.Smooth,\n            SpectrumKeyboardBacklightEffectType.Type => LENOVO_SPECTRUM_EFFECT_TYPE.TypeLighting,\n            _ => throw new ArgumentException(nameof(effect.Type))\n        };\n\n        var speed = effect.Speed switch\n        {\n            SpectrumKeyboardBacklightSpeed.Speed1 => LENOVO_SPECTRUM_SPEED.Speed1,\n            SpectrumKeyboardBacklightSpeed.Speed2 => LENOVO_SPECTRUM_SPEED.Speed2,\n            SpectrumKeyboardBacklightSpeed.Speed3 => LENOVO_SPECTRUM_SPEED.Speed3,\n            _ => LENOVO_SPECTRUM_SPEED.None\n        };\n\n        var direction = effect.Direction switch\n        {\n            SpectrumKeyboardBacklightDirection.LeftToRight => LENOVO_SPECTRUM_DIRECTION.LeftToRight,\n            SpectrumKeyboardBacklightDirection.RightToLeft => LENOVO_SPECTRUM_DIRECTION.RightToLeft,\n            SpectrumKeyboardBacklightDirection.BottomToTop => LENOVO_SPECTRUM_DIRECTION.BottomToTop,\n            SpectrumKeyboardBacklightDirection.TopToBottom => LENOVO_SPECTRUM_DIRECTION.TopToBottom,\n            _ => LENOVO_SPECTRUM_DIRECTION.None\n        };\n\n        var clockwiseDirection = effect.ClockwiseDirection switch\n        {\n            SpectrumKeyboardBacklightClockwiseDirection.Clockwise => LENOVO_SPECTRUM_CLOCKWISE_DIRECTION.Clockwise,\n            SpectrumKeyboardBacklightClockwiseDirection.CounterClockwise => LENOVO_SPECTRUM_CLOCKWISE_DIRECTION.CounterClockwise,\n            _ => LENOVO_SPECTRUM_CLOCKWISE_DIRECTION.None\n        };\n\n        var colorMode = effect.Type switch\n        {\n            SpectrumKeyboardBacklightEffectType.Always => LENOVO_SPECTRUM_COLOR_MODE.ColorList,\n            SpectrumKeyboardBacklightEffectType.ColorChange when effect.Colors.Length != 0 => LENOVO_SPECTRUM_COLOR_MODE.ColorList,\n            SpectrumKeyboardBacklightEffectType.ColorPulse when effect.Colors.Length != 0 => LENOVO_SPECTRUM_COLOR_MODE.ColorList,\n            SpectrumKeyboardBacklightEffectType.ColorWave when effect.Colors.Length != 0 => LENOVO_SPECTRUM_COLOR_MODE.ColorList,\n            SpectrumKeyboardBacklightEffectType.Rain when effect.Colors.Length != 0 => LENOVO_SPECTRUM_COLOR_MODE.ColorList,\n            SpectrumKeyboardBacklightEffectType.Smooth when effect.Colors.Length != 0 => LENOVO_SPECTRUM_COLOR_MODE.ColorList,\n            SpectrumKeyboardBacklightEffectType.Ripple when effect.Colors.Length != 0 => LENOVO_SPECTRUM_COLOR_MODE.ColorList,\n            SpectrumKeyboardBacklightEffectType.Type when effect.Colors.Length != 0 => LENOVO_SPECTRUM_COLOR_MODE.ColorList,\n            SpectrumKeyboardBacklightEffectType.ColorChange => LENOVO_SPECTRUM_COLOR_MODE.RandomColor,\n            SpectrumKeyboardBacklightEffectType.ColorPulse => LENOVO_SPECTRUM_COLOR_MODE.RandomColor,\n            SpectrumKeyboardBacklightEffectType.ColorWave => LENOVO_SPECTRUM_COLOR_MODE.RandomColor,\n            SpectrumKeyboardBacklightEffectType.Rain => LENOVO_SPECTRUM_COLOR_MODE.RandomColor,\n            SpectrumKeyboardBacklightEffectType.Smooth => LENOVO_SPECTRUM_COLOR_MODE.RandomColor,\n            SpectrumKeyboardBacklightEffectType.Ripple => LENOVO_SPECTRUM_COLOR_MODE.RandomColor,\n            SpectrumKeyboardBacklightEffectType.Type => LENOVO_SPECTRUM_COLOR_MODE.RandomColor,\n            _ => LENOVO_SPECTRUM_COLOR_MODE.None\n        };\n\n        var header = new LENOVO_SPECTRUM_EFFECT_HEADER(effectType, speed, direction, clockwiseDirection, colorMode);\n        var colors = effect.Colors.Select(c => new LENOVO_SPECTRUM_COLOR(c.R, c.G, c.B)).ToArray();\n        var keys = effect.Type.IsAllLightsEffect() ? [0x65] : effect.Keys;\n        var result = new LENOVO_SPECTRUM_EFFECT(header, index + 1, colors, keys);\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/WindowsPowerModeController.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\n\nnamespace LenovoLegionToolkit.Lib.Controllers;\n\npublic partial class WindowsPowerModeController(ApplicationSettings settings, IMainThreadDispatcher mainThreadDispatcher)\n{\n    private const string POWER_SCHEMES_HIVE = \"HKEY_LOCAL_MACHINE\";\n    private const string POWER_SCHEMES_SUBKEY = \"SYSTEM\\\\CurrentControlSet\\\\Control\\\\Power\\\\User\\\\PowerSchemes\";\n    private const string ACTIVE_OVERLAY_AC_POWER_SCHEME_KEY = \"ActiveOverlayAcPowerScheme\";\n    private const string ACTIVE_OVERLAY_DC_POWER_SCHEME_KEY = \"ActiveOverlayDcPowerScheme\";\n\n    private static readonly Guid DefaultPowerPlan = Guid.Parse(\"381b4222-f694-41f0-9685-ff5bb260df2e\");\n    private static readonly Guid BestPowerEfficiency = Guid.Parse(\"961cc777-2547-4f9d-8174-7d86181b8a7a\");\n    private static readonly Guid BestPerformance = Guid.Parse(\"ded574b5-45a0-4f42-8737-46345c09c238\");\n\n    private readonly ThrottleLastDispatcher _dispatcher = new(TimeSpan.FromSeconds(2), nameof(WindowsPowerModeController));\n\n    public async Task SetPowerModeAsync(PowerModeState powerModeState)\n    {\n        if (settings.Store.PowerModeMappingMode is not PowerModeMappingMode.WindowsPowerMode)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Ignoring... [powerModeMappingMode={settings.Store.PowerModeMappingMode}]\");\n\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Activating... [powerModeState={powerModeState}]\");\n\n        var powerMode = settings.Store.PowerModes.GetValueOrDefault(powerModeState, WindowsPowerMode.Balanced);\n        var powerModeGuid = GuidForWindowsPowerMode(powerMode);\n\n        if (Power.IsBatterySaverEnabled())\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Battery saver is on - will not set overlay scheme.\");\n\n            return;\n        }\n\n        await _dispatcher.DispatchAsync(() =>\n        {\n            ActivateDefaultPowerPlanIfNeeded();\n\n            mainThreadDispatcher.Dispatch(() =>\n            {\n                var result = PowerSetActiveOverlayScheme(powerModeGuid);\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Overlay scheme set. [result={result}]\");\n            });\n\n            try\n            {\n                UpdateRegistry(powerModeGuid);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Failed to update registry.\", ex);\n            }\n\n            return Task.CompletedTask;\n        }).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Power mode {powerMode} activated... [powerModeState={powerModeState}, powerModeGuid={powerModeGuid}]\");\n    }\n\n    private static void UpdateRegistry(Guid guid)\n    {\n        Registry.SetValue(POWER_SCHEMES_HIVE, POWER_SCHEMES_SUBKEY, ACTIVE_OVERLAY_AC_POWER_SCHEME_KEY, guid, true);\n        Registry.SetValue(POWER_SCHEMES_HIVE, POWER_SCHEMES_SUBKEY, ACTIVE_OVERLAY_DC_POWER_SCHEME_KEY, guid, true);\n    }\n\n    private static Guid GuidForWindowsPowerMode(WindowsPowerMode windowsPowerMode) => windowsPowerMode switch\n    {\n        WindowsPowerMode.BestPowerEfficiency => BestPowerEfficiency,\n        WindowsPowerMode.BestPerformance => BestPerformance,\n        _ => Guid.Empty\n    };\n\n    private static unsafe void ActivateDefaultPowerPlanIfNeeded()\n    {\n        if (PInvoke.PowerGetActiveScheme(null, out var guid) != WIN32_ERROR.ERROR_SUCCESS)\n            PInvokeExtensions.ThrowIfWin32Error(\"PowerGetActiveScheme\");\n\n        if (DefaultPowerPlan == *guid)\n            return;\n\n        if (PInvoke.PowerSetActiveScheme(null, DefaultPowerPlan) != WIN32_ERROR.ERROR_SUCCESS)\n            PInvokeExtensions.ThrowIfWin32Error(\"PowerSetActiveScheme\");\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Activated default power plan.\");\n    }\n\n    [LibraryImport(\"powrprof.dll\", EntryPoint = \"PowerSetActiveOverlayScheme\")]\n    private static partial uint PowerSetActiveOverlayScheme(Guid guid);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Controllers/WindowsPowerPlanController.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.System.Power;\n\nnamespace LenovoLegionToolkit.Lib.Controllers;\n\npublic class WindowsPowerPlanController(ApplicationSettings settings, VantageDisabler vantageDisabler)\n{\n    private static readonly Guid DefaultPowerPlan = Guid.Parse(\"381b4222-f694-41f0-9685-ff5bb260df2e\");\n\n    public IEnumerable<WindowsPowerPlan> GetPowerPlans()\n    {\n        var activePowerPlanGuid = GetActivePowerPlanGuid();\n        foreach (var powerPlanGuid in GetPowerPlanGuids())\n        {\n            var powerPlaneName = GetPowerPlanName(powerPlanGuid);\n            yield return new WindowsPowerPlan(powerPlanGuid, powerPlaneName, powerPlanGuid == activePowerPlanGuid);\n        }\n    }\n\n    public async Task SetPowerPlanAsync(PowerModeState powerModeState, bool alwaysActivateDefaults = false)\n    {\n        if (settings.Store.PowerModeMappingMode is not PowerModeMappingMode.WindowsPowerPlan)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Ignoring... [powerModeMappingMode={settings.Store.PowerModeMappingMode}]\");\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Activating... [powerModeState={powerModeState}, alwaysActivateDefaults={alwaysActivateDefaults}]\");\n\n        var powerPlanId = settings.Store.PowerPlans.GetValueOrDefault(powerModeState);\n        var isDefault = false;\n\n        if (powerPlanId == Guid.Empty)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Power plan for power mode {powerModeState} was not found in settings\");\n\n            powerPlanId = DefaultPowerPlan;\n            isDefault = true;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Power plan to be activated is {powerPlanId} [isDefault={isDefault}]\");\n\n        if (!await ShouldSetPowerPlanAsync(alwaysActivateDefaults, isDefault).ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Power plan {powerPlanId} will not be activated [isDefault={isDefault}]\");\n\n            return;\n        }\n\n        var powerPlans = GetPowerPlans().ToArray();\n\n        if (Log.Instance.IsTraceEnabled)\n        {\n            Log.Instance.Trace($\"Available power plans:\");\n            foreach (var powerPlan in powerPlans)\n                Log.Instance.Trace($\" - {powerPlan}\");\n        }\n\n        var powerPlanToActivate = powerPlans.FirstOrDefault(pp => pp.Guid == powerPlanId);\n        if (powerPlanToActivate.Equals(default(WindowsPowerPlan)))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Power plan {powerPlanId} was not found\");\n            return;\n        }\n\n        if (powerPlanToActivate.IsActive)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Power plan {powerPlanToActivate.Guid} is already active. [name={powerPlanToActivate.Name}]\");\n            return;\n        }\n\n        SetActivePowerPlan(powerPlanToActivate.Guid);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Power plan {powerPlanToActivate.Guid} activated. [name={powerPlanToActivate.Name}]\");\n    }\n\n    public void SetPowerPlanParameter(WindowsPowerPlan windowsPowerPlan, Brightness brightness)\n    {\n        PInvoke.PowerWriteACValueIndex(NullSafeHandle.Null, windowsPowerPlan.Guid, PInvoke.GUID_VIDEO_SUBGROUP, PInvokeExtensions.DISPLAY_BRIGTHNESS_SETTING_GUID, brightness.Value);\n        PInvoke.PowerWriteDCValueIndex(NullSafeHandle.Null, windowsPowerPlan.Guid, PInvoke.GUID_VIDEO_SUBGROUP, PInvokeExtensions.DISPLAY_BRIGTHNESS_SETTING_GUID, brightness.Value);\n    }\n\n    private async Task<bool> ShouldSetPowerPlanAsync(bool alwaysActivateDefaults, bool isDefault)\n    {\n        if (isDefault && alwaysActivateDefaults)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Power plan is default and always active defaults is set\");\n\n            return true;\n        }\n\n        var status = await vantageDisabler.GetStatusAsync().ConfigureAwait(false);\n        if (status is SoftwareStatus.NotFound or SoftwareStatus.Disabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Vantage is active [status={status}]\");\n\n            return true;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Criteria for activation not met [isDefault={isDefault}, alwaysActivateDefaults={alwaysActivateDefaults}, status={status}]\");\n\n        return false;\n    }\n\n    private static unsafe List<Guid> GetPowerPlanGuids()\n    {\n        var list = new List<Guid>();\n\n        var bufferSize = (uint)Marshal.SizeOf<Guid>();\n        var buffer = new byte[bufferSize];\n\n        fixed (byte* bufferPtr = buffer)\n        {\n            uint index = 0;\n            while (PInvoke.PowerEnumerate(null, null, null, POWER_DATA_ACCESSOR.ACCESS_SCHEME, index, bufferPtr, ref bufferSize) == WIN32_ERROR.ERROR_SUCCESS)\n            {\n                list.Add(new Guid(buffer));\n                index++;\n            }\n        }\n\n        return list;\n    }\n\n    private static unsafe string GetPowerPlanName(Guid powerPlanGuid)\n    {\n        var nameSize = 2048u;\n        var namePtr = Marshal.AllocHGlobal((int)nameSize);\n\n        try\n        {\n            if (PInvoke.PowerReadFriendlyName(null, powerPlanGuid, null, null, (byte*)namePtr.ToPointer(), ref nameSize) != WIN32_ERROR.ERROR_SUCCESS)\n                PInvokeExtensions.ThrowIfWin32Error(\"PowerReadFriendlyName\");\n\n            return Marshal.PtrToStringUni(namePtr) ?? string.Empty;\n        }\n        catch\n        {\n            return powerPlanGuid.ToString();\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(namePtr);\n        }\n    }\n\n    private static unsafe Guid GetActivePowerPlanGuid()\n    {\n        if (PInvoke.PowerGetActiveScheme(null, out var guid) != WIN32_ERROR.ERROR_SUCCESS)\n            PInvokeExtensions.ThrowIfWin32Error(\"PowerGetActiveScheme\");\n\n        return *guid;\n    }\n\n    private static void SetActivePowerPlan(Guid powerPlanGuid)\n    {\n        if (PInvoke.PowerSetActiveScheme(null, powerPlanGuid) != WIN32_ERROR.ERROR_SUCCESS)\n            PInvokeExtensions.ThrowIfWin32Error(\"PowerSetActiveScheme\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Enums.cs",
    "content": "﻿using System;\nusing System.ComponentModel.DataAnnotations;\nusing LenovoLegionToolkit.Lib.Resources;\n\nnamespace LenovoLegionToolkit.Lib;\n\npublic enum AlwaysOnUSBState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"AlwaysOnUSBState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"AlwaysOnUSBState_OnWhenSleeping\")]\n    OnWhenSleeping,\n    [Display(ResourceType = typeof(Resource), Name = \"AlwaysOnUSBState_OnAlways\")]\n    OnAlways\n}\n\npublic enum AutorunState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"AutorunState_Enabled\")]\n    Enabled,\n    [Display(ResourceType = typeof(Resource), Name = \"AutorunState_EnabledDelayed\")]\n    EnabledDelayed,\n    [Display(ResourceType = typeof(Resource), Name = \"AutorunState_Disabled\")]\n    Disabled\n}\n\npublic enum BatteryNightChargeState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"BatteryNightChargeState_On\")]\n    On,\n    [Display(ResourceType = typeof(Resource), Name = \"BatteryNightChargeState_Off\")]\n    Off\n}\n\npublic enum BatteryState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"BatteryState_Conservation\")]\n    Conservation,\n    [Display(ResourceType = typeof(Resource), Name = \"BatteryState_Normal\")]\n    Normal,\n    [Display(ResourceType = typeof(Resource), Name = \"BatteryState_RapidCharge\")]\n    RapidCharge\n}\n\npublic enum CapabilityID\n{\n    IGPUMode = 0x00010000,\n    FlipToStart = 0x00030000,\n    NvidiaGPUDynamicDisplaySwitching = 0x00040000,\n    AMDSmartShiftMode = 0x00050001,\n    AMDSkinTemperatureTracking = 0x00050002,\n    SupportedPowerModes = 0x00070000,\n    LegionZoneSupportVersion = 0x00090000,\n    GodModeFnQSwitchable = 0x00100000,\n    OverDrive = 0x001A0000,\n    AIChip = 0x000E0000,\n    IGPUModeChangeStatus = 0x000F0000,\n    CPUShortTermPowerLimit = 0x0101FF00,\n    CPULongTermPowerLimit = 0x0102FF00,\n    CPUPeakPowerLimit = 0x0103FF00,\n    CPUTemperatureLimit = 0x0104FF00,\n    APUsPPTPowerLimit = 0x0105FF00,\n    CPUCrossLoadingPowerLimit = 0x0106FF00,\n    CPUPL1Tau = 0x0107FF00,\n    GPUPowerBoost = 0x0201FF00,\n    GPUConfigurableTGP = 0x0202FF00,\n    GPUTemperatureLimit = 0x0203FF00,\n    GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline = 0x0204FF00,\n    GPUToCPUDynamicBoost = 0x020BFF00,\n    GPUStatus = 0x02070000,\n    GPUDidVid = 0x02090000,\n    InstantBootAc = 0x03010001,\n    InstantBootUsbPowerDelivery = 0x03010002,\n    FanFullSpeed = 0x04020000,\n    CpuCurrentFanSpeed = 0x04030001,\n    GpuCurrentFanSpeed = 0x04030002,\n    CpuCurrentTemperature = 0x05040000,\n    GpuCurrentTemperature = 0x05050000\n}\n\n[Flags]\npublic enum DriverKey\n{\n    FnF10 = 32,\n    FnF4 = 256,\n    FnF8 = 8192,\n    FnSpace = 4096,\n}\n\npublic enum FanTableType\n{\n    Unknown,\n    CPU,\n    CPUSensor,\n    GPU,\n    GPU2\n}\n\npublic enum FlipToStartState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"FlipToStartState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"FlipToStartState_On\")]\n    On\n}\n\npublic enum FnLockState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"FnLockState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"FnLockState_On\")]\n    On\n}\n\npublic enum GPUState\n{\n    Unknown,\n    NvidiaGpuNotFound,\n    MonitorConnected,\n    Active,\n    Inactive,\n    PoweredOff\n}\n\npublic enum GSyncState\n{\n    Off,\n    On\n}\n\npublic enum HDRState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"HDRState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"HDRState_On\")]\n    On\n}\n\npublic enum HybridModeState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"HybridModeState_On\")]\n    On,\n    [Display(ResourceType = typeof(Resource), Name = \"HybridModeState_OnIGPUOnly\")]\n    OnIGPUOnly,\n    [Display(ResourceType = typeof(Resource), Name = \"HybridModeState_OnAuto\")]\n    OnAuto,\n    [Display(ResourceType = typeof(Resource), Name = \"HybridModeState_Off\")]\n    Off\n}\n\npublic enum IGPUModeState\n{\n    Default,\n    IGPUOnly,\n    Auto\n}\n\npublic enum InstantBootState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"InstantBootState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"InstantBootState_AcAdapter\")]\n    AcAdapter,\n    [Display(ResourceType = typeof(Resource), Name = \"InstantBootState_UsbPowerDelivery\")]\n    UsbPowerDelivery,\n    [Display(ResourceType = typeof(Resource), Name = \"InstantBootState_AcAdapterAndUsbPowerDelivery\")]\n    AcAdapterAndUsbPowerDelivery\n}\n\npublic enum KeyboardLayout\n{\n    Ansi,\n    Iso,\n    Jis\n}\n\npublic enum KnownFolder\n{\n    Contacts,\n    Downloads,\n    Favorites,\n    Links,\n    SavedGames,\n    SavedSearches\n}\n\npublic enum LightingChangeState\n{\n    Panel = 0,\n    Ports = 1,\n}\n\npublic enum MicrophoneState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"MicrophoneState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"MicrophoneState_On\")]\n    On\n}\n\n[Flags]\npublic enum ModifierKey\n{\n    None = 0,\n    [Display(ResourceType = typeof(Resource), Name = \"ModifierKey_Shift\")]\n    Shift = 1,\n    [Display(ResourceType = typeof(Resource), Name = \"ModifierKey_Ctrl\")]\n    Ctrl = 2,\n    [Display(ResourceType = typeof(Resource), Name = \"ModifierKey_Alt\")]\n    Alt = 4\n}\n\npublic enum NativeWindowsMessage\n{\n    LidOpened,\n    LidClosed,\n    MonitorOn,\n    MonitorOff,\n    DeviceConnected,\n    DeviceDisconnected,\n    MonitorConnected,\n    MonitorDisconnected,\n    ExternalMonitorConnected,\n    ExternalMonitorDisconnected,\n    OnDisplayDeviceArrival,\n    BatterySaverEnabled\n}\n\npublic enum NotificationDuration\n{\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationDuration_Short\")]\n    Short,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationDuration_Normal\")]\n    Normal,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationDuration_Long\")]\n    Long\n}\n\npublic enum NotificationType\n{\n    ACAdapterConnected,\n    ACAdapterConnectedLowWattage,\n    ACAdapterDisconnected,\n    AutomationNotification,\n    CameraOn,\n    CameraOff,\n    CapsLockOn,\n    CapsLockOff,\n    FnLockOn,\n    FnLockOff,\n    MicrophoneOff,\n    MicrophoneOn,\n    NumLockOn,\n    NumLockOff,\n    PanelLogoLightingOn,\n    PanelLogoLightingOff,\n    PortLightingOn,\n    PortLightingOff,\n    PowerModeQuiet,\n    PowerModeBalance,\n    PowerModePerformance,\n    PowerModeGodMode,\n    RefreshRate,\n    RGBKeyboardBacklightChanged,\n    RGBKeyboardBacklightOff,\n    SmartKeyDoublePress,\n    SmartKeySinglePress,\n    SpectrumBacklightChanged,\n    SpectrumBacklightOff,\n    SpectrumBacklightPresetChanged,\n    TouchpadOn,\n    TouchpadOff,\n    UpdateAvailable,\n    WhiteKeyboardBacklightChanged,\n    WhiteKeyboardBacklightOff\n}\n\npublic enum NotificationPosition\n{\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationPosition_BottomRight\")]\n    BottomRight,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationPosition_BottomCenter\")]\n    BottomCenter,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationPosition_BottomLeft\")]\n    BottomLeft,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationPosition_CenterLeft\")]\n    CenterLeft,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationPosition_TopLeft\")]\n    TopLeft,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationPosition_TopCenter\")]\n    TopCenter,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationPosition_TopRight\")]\n    TopRight,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationPosition_CenterRight\")]\n    CenterRight,\n    [Display(ResourceType = typeof(Resource), Name = \"NotificationPosition_Center\")]\n    Center\n}\n\npublic enum OneLevelWhiteKeyboardBacklightState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"OneLevelWhiteKeyboardBacklightState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"OneLevelWhiteKeyboardBacklightState_On\")]\n    On\n}\n\npublic enum OS\n{\n    [Display(Name = \"Windows 11\")]\n    Windows11,\n    [Display(Name = \"Windows 10\")]\n    Windows10,\n    [Display(Name = \"Windows 8\")]\n    Windows8,\n    [Display(Name = \"Windows 7\")]\n    Windows7\n}\n\npublic enum OverDriveState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"OverdriveState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"OverdriveState_On\")]\n    On\n}\n\npublic enum PanelLogoBacklightState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"PanelLogoBacklightState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"PanelLogoBacklightState_On\")]\n    On\n}\n\npublic enum PortsBacklightState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"PortsBacklightState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"PortsBacklightState_On\")]\n    On\n}\n\npublic enum PowerAdapterStatus\n{\n    Connected,\n    ConnectedLowWattage,\n    Disconnected\n}\n\npublic enum PowerModeMappingMode\n{\n    [Display(ResourceType = typeof(Resource), Name = \"PowerModeMappingMode_Disabled\")]\n    Disabled,\n    [Display(ResourceType = typeof(Resource), Name = \"PowerModeMappingMode_WindowsPowerMode\")]\n    WindowsPowerMode,\n    [Display(ResourceType = typeof(Resource), Name = \"PowerModeMappingMode_WindowsPowerPlan\")]\n    WindowsPowerPlan,\n}\n\npublic enum PowerModeState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"PowerModeState_Quiet\")]\n    Quiet,\n    [Display(ResourceType = typeof(Resource), Name = \"PowerModeState_Balance\")]\n    Balance,\n    [Display(ResourceType = typeof(Resource), Name = \"PowerModeState_Performance\")]\n    Performance,\n    [Display(ResourceType = typeof(Resource), Name = \"PowerModeState_GodMode\")]\n    GodMode = 254\n}\n\npublic enum PowerStateEvent\n{\n    Unknown = -1,\n    StatusChange,\n    Suspend,\n    Resume,\n}\n\npublic enum ProcessEventInfoType\n{\n    Started,\n    Stopped\n}\n\npublic enum RebootType\n{\n    NotRequired = 0,\n    Forced = 1,\n    Requested = 3,\n    ForcedPowerOff = 4,\n    Delayed = 5\n}\n\npublic enum RGBKeyboardBacklightChanged;\n\npublic enum RGBKeyboardBacklightBrightness\n{\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightBrightness_Low\")]\n    Low,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightBrightness_High\")]\n    High\n}\n\npublic enum RGBKeyboardBacklightEffect\n{\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightEffect_Static\")]\n    Static,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightEffect_Breath\")]\n    Breath,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightEffect_Smooth\")]\n    Smooth,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightEffect_WaveRTL\")]\n    WaveRTL,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightEffect_WaveLTR\")]\n    WaveLTR\n}\n\npublic enum RGBKeyboardBacklightPreset\n{\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightPreset_Off\")]\n    Off = -1,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightPreset_One\")]\n    One = 0,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightPreset_Two\")]\n    Two = 1,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightPreset_Three\")]\n    Three = 2,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightPreset_Four\")]\n    Four = 3\n}\n\npublic enum RGBKeyboardBacklightSpeed\n{\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightSpeed_Slowest\")]\n    Slowest,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightSpeed_Slow\")]\n    Slow,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightSpeed_Fast\")]\n    Fast,\n    [Display(ResourceType = typeof(Resource), Name = \"RGBKeyboardBacklightSpeed_Fastest\")]\n    Fastest\n}\n\npublic enum SpeakerState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"SpeakerState_Mute\")]\n    Mute,\n    [Display(ResourceType = typeof(Resource), Name = \"SpeakerState_Unmute\")]\n    Unmute\n}\n\npublic enum SoftwareStatus\n{\n    Enabled,\n    Disabled,\n    NotFound\n}\n\npublic enum SpecialKey\n{\n    FnF9 = 1,\n    FnLockOn = 2,\n    FnLockOff = 3,\n    FnPrtSc = 4,\n    FnPrtSc2 = 45,\n    CameraOn = 12,\n    CameraOff = 13,\n    FnR = 16,\n    FnR2 = 0x0041002A,\n    SpectrumBacklightOff = 24,\n    SpectrumBacklight1 = 25,\n    SpectrumBacklight2 = 26,\n    SpectrumBacklight3 = 38,\n    SpectrumPreset1 = 32,\n    SpectrumPreset2 = 33,\n    SpectrumPreset3 = 34,\n    SpectrumPreset4 = 35,\n    SpectrumPreset5 = 36,\n    SpectrumPreset6 = 37,\n    FnN = 42,\n    FnF4 = 62,\n    FnF8 = 63,\n    WhiteBacklightOff = 64,\n    WhiteBacklight1 = 65,\n    WhiteBacklight2 = 66\n}\n\npublic enum SpectrumKeyboardBacklightBrightness\n{\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightBrightness_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightBrightness_Low\")]\n    Low,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightBrightness_Medium\")]\n    Medium,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightBrightness_High\")]\n    High\n}\n\npublic enum SpectrumKeyboardBacklightClockwiseDirection\n{\n    None,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightDirection_Clockwise\")]\n    Clockwise,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightDirection_CounterClockwise\")]\n    CounterClockwise\n}\n\npublic enum SpectrumKeyboardBacklightDirection\n{\n    None,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightDirection_BottomToTop\")]\n    BottomToTop,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightDirection_TopToBottom\")]\n    TopToBottom,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightDirection_LeftToRight\")]\n    LeftToRight,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightDirection_RightToLeft\")]\n    RightToLeft\n}\n\npublic enum SpectrumKeyboardBacklightEffectType\n{\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_Always\")]\n    Always,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_RainbowScrew\")]\n    RainbowScrew,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_RainbowWave\")]\n    RainbowWave,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_ColorChange\")]\n    ColorChange,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_ColorWave\")]\n    ColorWave,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_ColorPulse\")]\n    ColorPulse,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_Smooth\")]\n    Smooth,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_Rain\")]\n    Rain,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_Ripple\")]\n    Ripple,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_Type\")]\n    Type,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_AudioBounce\")]\n    AudioBounce,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_AudioRipple\")]\n    AudioRipple,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightEffectType_AuroraSync\")]\n    AuroraSync\n}\n\npublic enum SpectrumKeyboardBacklightSpeed\n{\n    None,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightSpeed_Speed1\")]\n    Speed1,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightSpeed_Speed2\")]\n    Speed2,\n    [Display(ResourceType = typeof(Resource), Name = \"SpectrumKeyboardBacklightSpeed_Speed3\")]\n    Speed3\n}\n\npublic enum SpectrumLayout\n{\n    KeyboardOnly,\n    KeyboardAndFront,\n    Full,\n    FullAlternative\n}\n\npublic enum Theme\n{\n    [Display(ResourceType = typeof(Resource), Name = \"Theme_System\")]\n    System,\n    [Display(ResourceType = typeof(Resource), Name = \"Theme_Light\")]\n    Light,\n    [Display(ResourceType = typeof(Resource), Name = \"Theme_Dark\")]\n    Dark\n}\n\npublic enum AccentColorSource\n{\n    [Display(ResourceType = typeof(Resource), Name = \"AccentColorSource_System\")]\n    System,\n    [Display(ResourceType = typeof(Resource), Name = \"AccentColorSource_Custom\")]\n    Custom\n}\n\npublic enum TemperatureUnit\n{\n    C,\n    F\n}\n\npublic enum ThermalModeState\n{\n    Unknown,\n    Quiet,\n    Balance,\n    Performance,\n    GodMode = 255\n}\n\npublic enum TouchpadLockState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"TouchpadLockState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"TouchpadLockState_On\")]\n    On\n}\n\npublic enum UpdateCheckFrequency\n{\n    [Display(ResourceType = typeof(Resource), Name = \"UpdateCheckFrequency_PerHour\")]\n    PerHour,\n    [Display(ResourceType = typeof(Resource), Name = \"UpdateCheckFrequency_PerThreeHours\")]\n    PerThreeHours,\n    [Display(ResourceType = typeof(Resource), Name = \"UpdateCheckFrequency_PerTwelveHours\")]\n    PerTwelveHours,\n    [Display(ResourceType = typeof(Resource), Name = \"UpdateCheckFrequency_PerDay\")]\n    PerDay,\n    [Display(ResourceType = typeof(Resource), Name = \"UpdateCheckFrequency_PerWeek\")]\n    PerWeek,\n    [Display(ResourceType = typeof(Resource), Name = \"UpdateCheckFrequency_PerMonth\")]\n    PerMonth\n}\n\npublic enum UpdateCheckStatus\n{\n    Success,\n    RateLimitReached,\n    Error\n}\n\npublic enum WhiteKeyboardBacklightState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"WhiteKeyboardBacklightState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"WhiteKeyboardBacklightState_Low\")]\n    Low,\n    [Display(ResourceType = typeof(Resource), Name = \"WhiteKeyboardBacklightState_High\")]\n    High\n}\n\npublic enum WindowsPowerMode\n{\n    [Display(Name = \"Best power efficiency\")]\n    BestPowerEfficiency,\n    [Display(Name = \"Balanced\")]\n    Balanced,\n    [Display(Name = \"Best performance\")]\n    BestPerformance\n}\n\npublic enum WinKeyState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"WinKeyState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"WinKeyState_On\")]\n    On\n}\n\npublic enum WinKeyChanged;\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/AssemblyExtensions.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.Reflection;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class AssemblyExtensions\n{\n    public static DateTime? GetBuildDateTime(this Assembly assembly)\n    {\n        const string buildVersionMetadataPrefix = \"+build\";\n\n        var attribute = assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>();\n        if (attribute?.InformationalVersion is null)\n            return null;\n\n        var value = attribute.InformationalVersion;\n        var index = value.IndexOf(buildVersionMetadataPrefix, StringComparison.InvariantCultureIgnoreCase);\n        if (index <= 0)\n            return null;\n\n        value = value[(index + buildVersionMetadataPrefix.Length)..];\n\n        // ReSharper disable once StringLiteralTypo\n        if (DateTime.TryParseExact(value, \"yyyyMMddHHmmss\", CultureInfo.InvariantCulture, DateTimeStyles.None, out var result))\n            return result;\n\n        return null;\n    }\n\n    public static string? GetBuildDateTimeString(this Assembly assembly)\n    {\n        // ReSharper disable once StringLiteralTypo\n        return GetBuildDateTime(assembly)?.ToString(\"yyyyMMddHHmmss\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/ContainerBuilderExtensions.cs",
    "content": "﻿using Autofac;\nusing Autofac.Builder;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class ContainerBuilderExtensions\n{\n    public static IRegistrationBuilder<T, ConcreteReflectionActivatorData, SingleRegistrationStyle> Register<T>(this ContainerBuilder cb, bool selfOnly = false) where T : notnull\n    {\n        var registration = cb.RegisterType<T>().AsSelf();\n        if (!selfOnly)\n            registration = registration.AsImplementedInterfaces();\n        return registration.SingleInstance();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/DateTimeExtensions.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class DateTimeExtensions\n{\n    public static DateTime UtcFrom(int hours, int minutes)\n    {\n        var now = DateTime.UtcNow;\n        return new(now.Year, now.Month, now.Day, hours, minutes, 0, DateTimeKind.Utc);\n    }\n\n    public static DateTime LocalFrom(int hours, int minutes)\n    {\n        var now = DateTime.Now;\n        return new(now.Year, now.Month, now.Day, hours, minutes, 0, DateTimeKind.Local);\n    }\n\n    public static DateTime UtcDayFrom(DayOfWeek targetDay, int hours, int minutes)\n    {\n        var now = DateTime.UtcNow;\n        var date = new DateTime(now.Year, now.Month, now.Day, hours, minutes, now.Second, DateTimeKind.Utc);\n        var daysUntilDayOfWeek = ((int)targetDay - (int)date.DayOfWeek + 7) % 7;\n        return date.AddDays(daysUntilDayOfWeek);\n    }\n\n    public static DateTime LocalDayFrom(DayOfWeek targetDay, int hours, int minutes)\n    {\n        var now = DateTime.Now;\n        var date = new DateTime(now.Year, now.Month, now.Day, hours, minutes, now.Second, DateTimeKind.Local);\n        var daysUntilDayOfWeek = ((int)targetDay - (int)date.DayOfWeek + 7) % 7;\n        return date.AddDays(daysUntilDayOfWeek);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/DictionaryExtensions.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Collections.ObjectModel;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class DictionaryExtensions\n{\n    public static ReadOnlyDictionary<TKey, TValue> AsReadOnlyDictionary<TKey, TValue>(this IDictionary<TKey, TValue> source) where TKey : notnull\n    {\n        return new ReadOnlyDictionary<TKey, TValue>(source);\n    }\n\n    public static void AddRange<TKey, TValue>(this IDictionary<TKey, TValue> source, IDictionary<TKey, TValue> items)\n    {\n        foreach (var keyValuePair in items)\n            source.Add(keyValuePair.Key, keyValuePair.Value);\n    }\n\n    public static TValue? GetValueOrNull<TKey, TValue>(this IReadOnlyDictionary<TKey, TValue> dictionary, TKey key) where TValue : struct\n    {\n        return !dictionary.TryGetValue(key, out var obj) ? null : obj;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/DisplayExtensions.cs",
    "content": "﻿using System.Linq;\nusing System.Runtime.InteropServices;\nusing Windows.Win32;\nusing Windows.Win32.Devices.Display;\nusing WindowsDisplayAPI;\nusing WindowsDisplayAPI.DisplayConfig;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class DisplayExtensions\n{\n    public static void SetSettingsUsingPathInfo(this Display display, DisplaySetting displaySetting)\n    {\n        // Use display path APIs to change internal display resolution & refresh rate.\n        // Compared to Display.SetSettings(), these APIs can change the Active Signal Mode and not just the Desktop mode.\n        // Setting 60Hz will change the Active Signal Mode to 60Hz instead of leaving it at the max refresh rate,\n        // which lets the display consume less power for more battery life.\n        var displaySource = display.ToPathDisplaySource();\n        var pathInfos = PathInfo.GetActivePaths();\n\n        for (var i = 0; i < pathInfos.Length; i++)\n        {\n            var pathInfo = pathInfos[i];\n\n            if (pathInfo.DisplaySource == displaySource)\n            {\n                var targetsInfo = pathInfo.TargetsInfo;\n                var pathTargetInfos = targetsInfo\n                    .Select(targetInfo => new PathTargetInfo(targetInfo.DisplayTarget,\n                        new PathTargetSignalInfo(displaySetting, displaySetting.Resolution),\n                        targetInfo.Rotation,\n                        targetInfo.Scaling))\n                    .ToArray();\n\n                pathInfos[i] = new PathInfo(\n                    pathInfo.DisplaySource,\n                    pathInfo.Position,\n                    displaySetting.Resolution,\n                    pathInfo.PixelFormat,\n                    pathTargetInfos\n                );\n            }\n        }\n\n        PathInfo.ApplyPathInfos(pathInfos);\n    }\n\n    public static DisplayAdvancedColorInfo GetAdvancedColorInfo(this Display display)\n    {\n        var pathDisplayAdapter = display.Adapter.ToPathDisplayAdapter();\n        var pathDisplayTarget = display.ToPathDisplayTarget();\n\n        if (pathDisplayTarget is null || pathDisplayAdapter is null)\n            return default;\n\n        var getAdvancedColorInfo = new DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO();\n        getAdvancedColorInfo.header.type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO;\n        getAdvancedColorInfo.header.size = (uint)Marshal.SizeOf(typeof(DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO));\n        getAdvancedColorInfo.header.adapterId.HighPart = pathDisplayAdapter.AdapterId.HighPart;\n        getAdvancedColorInfo.header.adapterId.LowPart = pathDisplayAdapter.AdapterId.LowPart;\n        getAdvancedColorInfo.header.id = pathDisplayTarget.TargetId;\n\n        if (PInvoke.DisplayConfigGetDeviceInfo(ref getAdvancedColorInfo.header) != 0)\n            PInvokeExtensions.ThrowIfWin32Error(\"GetAdvancedColorInfo\");\n\n        return new(getAdvancedColorInfo.Anonymous.value.GetNthBit(0),\n            getAdvancedColorInfo.Anonymous.value.GetNthBit(1),\n            getAdvancedColorInfo.Anonymous.value.GetNthBit(2),\n            getAdvancedColorInfo.Anonymous.value.GetNthBit(3));\n    }\n\n    public static void SetAdvancedColorState(this Display display, bool state)\n    {\n        var pathDisplayAdapter = display.Adapter.ToPathDisplayAdapter();\n        var pathDisplayTarget = display.ToPathDisplayTarget();\n\n        if (pathDisplayTarget is null || pathDisplayAdapter is null)\n            return;\n\n        var setAdvancedColorState = new DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE();\n        setAdvancedColorState.header.type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE;\n        setAdvancedColorState.header.size = (uint)Marshal.SizeOf<DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE>();\n        setAdvancedColorState.header.adapterId.HighPart = pathDisplayAdapter.AdapterId.HighPart;\n        setAdvancedColorState.header.adapterId.LowPart = pathDisplayAdapter.AdapterId.LowPart;\n        setAdvancedColorState.header.id = pathDisplayTarget.TargetId;\n        setAdvancedColorState.Anonymous.value = setAdvancedColorState.Anonymous.value.SetNthBit(0, state);\n\n        if (PInvoke.DisplayConfigSetDeviceInfo(setAdvancedColorState.header) != 0)\n            PInvokeExtensions.ThrowIfWin32Error(\"SetAdvancedColorState\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/DisplayPossibleSettingExtensions.cs",
    "content": "﻿using System;\nusing WindowsDisplayAPI;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class DisplayPossibleSettingExtensions\n{\n    public static bool IsTooSmall(this DisplayPossibleSetting dps) => Math.Max(dps.Resolution.Width, dps.Resolution.Height) < 1000;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/DisplaySettingExtensions.cs",
    "content": "﻿using WindowsDisplayAPI;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class DisplaySettingExtensions\n{\n    public static string ToExtendedString(this DisplaySetting displaySetting)\n    {\n        return $\"{displaySetting.Resolution.Width}x{displaySetting.Resolution.Height}{(displaySetting.IsInterlaced ? \"i\" : \"p\")} @ {displaySetting.Frequency}Hz @ {displaySetting.ColorDepth} ({displaySetting.Position}, {displaySetting.Orientation}, {displaySetting.OutputScalingMode})\";\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/EnumExtensions.cs",
    "content": "﻿using System;\nusing System.ComponentModel.DataAnnotations;\nusing System.Linq;\nusing System.Reflection;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class EnumExtensions\n{\n    public static string GetDisplayName(this Enum enumValue)\n    {\n        var displayAttribute = enumValue.GetType()\n            .GetMember(enumValue.ToString())\n            .First()\n            .GetCustomAttributes(false)\n            .OfType<DisplayAttribute>()\n            .FirstOrDefault();\n\n        if (displayAttribute?.Name is null)\n            return enumValue.ToString();\n\n        if (displayAttribute.ResourceType?.GetProperty(displayAttribute.Name, BindingFlags.Static | BindingFlags.Public)?.GetValue(null) is string str)\n            return str;\n\n        return displayAttribute.Name;\n    }\n\n    public static string GetFlagsDisplayName(this Enum enumValue, Enum? excluding = null)\n    {\n        var values = Enum.GetValues(enumValue.GetType()).Cast<Enum>();\n        if (excluding is not null)\n            values = values.Where(v => !v.Equals(excluding));\n        var names = values.Where(enumValue.HasFlag).Select(GetDisplayName);\n        return string.Join(\", \", names);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/EnumerableExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class EnumerableExtensions\n{\n    public static bool IsEmpty<T>(this IEnumerable<T> source)\n    {\n        if (source is ICollection<T> collection)\n            return collection.Count == 0;\n        return !source.Any();\n    }\n\n    public static void ForEach<T>(this IEnumerable<T> enumeration, Action<T> action)\n    {\n        foreach (var item in enumeration)\n            action(item);\n    }\n\n    public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> source, int size)\n    {\n        var enumerable = source as T[] ?? source.ToArray();\n        return enumerable\n            .Select((_, i) => enumerable.Skip(i * size).Take(size))\n            .Where(a => a.Any());\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/HttpClientExtensions.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class HttpClientExtensions\n{\n    public static async Task DownloadAsync(this HttpClient client, string requestUri, Stream destination, IProgress<float>? progress = null, CancellationToken cancellationToken = default)\n    {\n        using var response = await client.GetAsync(requestUri, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false);\n        var contentLength = response.Content.Headers.ContentLength;\n\n        await using var download = await response.Content.ReadAsStreamAsync(cancellationToken).ConfigureAwait(false);\n\n        if (progress is null || !contentLength.HasValue)\n        {\n            await download.CopyToAsync(destination, cancellationToken).ConfigureAwait(false);\n            return;\n        }\n\n        progress.Report(0);\n        var relativeProgress = new Progress<long>(totalBytes => progress.Report((float)totalBytes / contentLength.Value));\n        await download.CopyToAsync(destination, 81920, relativeProgress, cancellationToken).ConfigureAwait(false);\n        progress.Report(1);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/IntExtensions.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class IntExtensions\n{\n    public static bool IsBitSet(this int value, int position) => (value & (1 << position)) != 0;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/ListExtensions.cs",
    "content": "﻿using System.Collections;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class ListExtensions\n{\n\n    public static object[] ToArray(this IList source)\n    {\n        var array = new object[source.Count];\n        source.CopyTo(array, 0);\n        return array;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/LogoInfoFormatExtensions.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Drawing.Imaging;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class LogoInfoFormatExtensions\n{\n    public static IEnumerable<ImageFormat> ImageFormats(this BootLogoFormat format)\n    {\n        if (format.HasFlag(BootLogoFormat.Bmp))\n            yield return ImageFormat.Bmp;\n        if (format.HasFlag(BootLogoFormat.Jpeg))\n            yield return ImageFormat.Jpeg;\n        if (format.HasFlag(BootLogoFormat.Png))\n            yield return ImageFormat.Png;\n    }\n\n    public static IEnumerable<string> ExtensionFilters(this BootLogoFormat format)\n    {\n        if (format.HasFlag(BootLogoFormat.Bmp))\n            yield return \"*.bmp\";\n        if (format.HasFlag(BootLogoFormat.Png))\n            yield return \"*.png\";\n        if (format.HasFlag(BootLogoFormat.Jpeg))\n        {\n            yield return \"*.jpeg\";\n            yield return \"*.jpg\";\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/ManagementObjectSearcherExtensions.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Management;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class ManagementObjectSearcherExtensions\n{\n    public static Task<IEnumerable<ManagementBaseObject>> GetAsync(this ManagementObjectSearcher mos) => Task.Run(() => mos.Get().Cast<ManagementBaseObject>());\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/MathExtensions.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class MathExtensions\n{\n    public static int RoundNearest(int value, int factor)\n    {\n        return (int)Math.Round(value / (double)factor, MidpointRounding.AwayFromZero) * factor;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/OSExtensions.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class OSExtensions\n{\n    public static OS GetCurrent()\n    {\n        var os = Environment.OSVersion;\n        if (os.Version >= new Version(10, 0, 22000, 0)) // Windows 11\n            return OS.Windows11;\n        else if (os.Version >= new Version(10, 0, 0, 0)) // Windows 10\n            return OS.Windows10;\n        else if (os.Version >= new Version(6, 2, 0, 0)) // Windows 8\n            return OS.Windows8;\n        else if (os.Version >= new Version(6, 1, 0, 0)) // Windows 7\n            return OS.Windows7;\n        else\n            return OS.Windows11;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/PInvokeExtensions.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\nusing Microsoft.Win32.SafeHandles;\nusing Windows.Win32;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable IdentifierTypo\n\npublic static class PInvokeExtensions\n{\n    public enum CONSOLE_DISPLAY_STATE\n    {\n        Off = 0,\n        On = 1,\n        Dimmed = 2\n    }\n\n    public const int ERROR_SUCCESS = 0;\n    public const int ERROR_NO_MORE_ITEMS = 259;\n\n    public const uint KF_FLAG_DEFAULT = 0;\n\n    public const uint VARIABLE_ATTRIBUTE_BOOTSERVICE_ACCESS = 2;\n    public const uint VARIABLE_ATTRIBUTE_NON_VOLATILE = 1;\n    public const uint VARIABLE_ATTRIBUTE_RUNTIME_ACCESS = 7;\n\n    public static readonly Guid DISPLAY_BRIGTHNESS_SETTING_GUID = Guid.Parse(\"aded5e82-b909-4619-9949-f5d71dac0bcb\");\n\n    public static unsafe bool DeviceIoControl<TIn, TOut>(SafeFileHandle hDevice, uint dwIoControlCode, TIn inVal, out TOut outVal) where TIn : struct where TOut : struct\n    {\n        var lpInBuffer = IntPtr.Zero;\n        var lpOutBuffer = IntPtr.Zero;\n\n        try\n        {\n            var nInBufferSize = Marshal.SizeOf<TIn>();\n            var nOutBufferSize = Marshal.SizeOf<TOut>();\n\n            lpInBuffer = Marshal.AllocHGlobal(nInBufferSize);\n            lpOutBuffer = Marshal.AllocHGlobal(nOutBufferSize);\n\n            Marshal.StructureToPtr(inVal, lpInBuffer, false);\n\n            var ret = PInvoke.DeviceIoControl(hDevice,\n                dwIoControlCode,\n                lpInBuffer.ToPointer(),\n                (uint)nInBufferSize,\n                lpOutBuffer.ToPointer(),\n                (uint)nOutBufferSize,\n                null,\n                null);\n\n            outVal = ret ? Marshal.PtrToStructure<TOut>(lpOutBuffer) : default;\n\n            return ret;\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(lpInBuffer);\n            Marshal.FreeHGlobal(lpOutBuffer);\n        }\n    }\n\n    public static void ThrowIfWin32Error(string description)\n    {\n        var errorCode = Marshal.GetLastWin32Error();\n        ThrowIfWin32Error(errorCode, description);\n    }\n\n    public static void ThrowIfWin32Error(int errorCode, string description)\n    {\n        if (errorCode != 0)\n            throw Marshal.GetExceptionForHR(errorCode) ?? throw new Exception($\"Unknown Win32 error code {errorCode} in {description}\");\n\n        throw new Exception($\"{description} failed but Win32 didn't catch an error\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/PhyscialGPUExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Linq;\nusing NvAPIWrapper.GPU;\nusing NvAPIWrapper.Native;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class NVAPIExtensions\n{\n    private static readonly string[] Exclusions =\n    [\n        \"dwm.exe\",\n        \"explorer.exe\",\n    ];\n\n    public static List<Process> GetActiveProcesses(PhysicalGPU gpu)\n    {\n        var processes = new List<Process>();\n        var apps = GPUApi.QueryActiveApps(gpu.Handle).Where(app => !Exclusions.Contains(app.ProcessName, StringComparer.InvariantCultureIgnoreCase));\n\n        foreach (var app in apps)\n        {\n            try\n            {\n                var process = Process.GetProcessById(app.ProcessId);\n                processes.Add(process);\n            }\n            catch (ArgumentException) { }\n        }\n\n        return processes;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/ProcessExtensions.cs",
    "content": "﻿using System.Diagnostics;\nusing Windows.Win32;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class ProcessExtensions\n{\n    public static string? GetFileName(this Process process, int maxLength = 512)\n    {\n        var chars = new char[maxLength];\n        return PInvoke.K32GetModuleFileNameEx(process.SafeHandle, null, chars) == 0\n            ? null\n            : chars.ToString();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/PropertyDataCollectionExtensions.cs",
    "content": "﻿using System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class PropertyDataCollectionExtensions\n{\n    public static bool Contains(this PropertyDataCollection pdc, string name)\n    {\n        // ReSharper disable once NotDisposedResource\n        var enumerator = pdc.GetEnumerator();\n\n        while (enumerator.MoveNext())\n            if (enumerator.Current.Name == name)\n                return true;\n\n        return false;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/RGBKeyboardBacklightPresetExtensions.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class RGBKeyboardBacklightPresetExtensions\n{\n    public static RGBKeyboardBacklightPreset Next(this RGBKeyboardBacklightPreset preset) => preset switch\n    {\n        RGBKeyboardBacklightPreset.Off => RGBKeyboardBacklightPreset.One,\n        RGBKeyboardBacklightPreset.One => RGBKeyboardBacklightPreset.Two,\n        RGBKeyboardBacklightPreset.Two => RGBKeyboardBacklightPreset.Three,\n        RGBKeyboardBacklightPreset.Three => RGBKeyboardBacklightPreset.Four,\n        _ => RGBKeyboardBacklightPreset.Off,\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/RegistrationBuilderExtensions.cs",
    "content": "﻿using System;\nusing Autofac;\nusing Autofac.Builder;\nusing LenovoLegionToolkit.Lib.Listeners;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class RegistrationBuilderExtensions\n{\n    public static void AutoActivateListener<T>(this IRegistrationBuilder<IListener<T>, ConcreteReflectionActivatorData, SingleRegistrationStyle> registration) where T : EventArgs\n    {\n        registration.OnActivating(e => e.Instance.StartAsync().AsValueTask()).AutoActivate();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/ServiceControllerExtension.cs",
    "content": "﻿using System.Runtime.InteropServices;\nusing System.ServiceProcess;\nusing Windows.Win32;\nusing Windows.Win32.System.Services;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\ninternal static class ServiceControllerExtension\n{\n    public static unsafe void ChangeStartMode(this ServiceController svc, bool enabled)\n    {\n        using var scManagerHandle = PInvoke.OpenSCManager(null as string, null, PInvoke.SC_MANAGER_ALL_ACCESS);\n        if (scManagerHandle.IsInvalid)\n            throw new ExternalException(\"Open Service Manager Error\");\n\n        using var serviceHandle = PInvoke.OpenService(scManagerHandle, svc.ServiceName, PInvoke.SERVICE_CHANGE_CONFIG);\n        if (serviceHandle.IsInvalid)\n            throw new ExternalException(\"Open Service Error\");\n\n        var result = PInvoke.ChangeServiceConfig(serviceHandle,\n            (ENUM_SERVICE_TYPE)PInvoke.SERVICE_NO_CHANGE,\n            enabled ? SERVICE_START_TYPE.SERVICE_AUTO_START : SERVICE_START_TYPE.SERVICE_DISABLED,\n            SERVICE_ERROR.SERVICE_ERROR_NORMAL,\n            null,\n            null,\n            null,\n            null,\n            null,\n            null,\n            null);\n\n        if (result)\n            return;\n\n        PInvokeExtensions.ThrowIfWin32Error($\"Could not change service: {svc.ServiceName}\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/SpectrumKeyboardBacklightEffectTypeExtensions.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class SpectrumKeyboardBacklightEffectTypeExtensions\n{\n\n    public static bool IsAllLightsEffect(this SpectrumKeyboardBacklightEffectType type) => type switch\n    {\n        SpectrumKeyboardBacklightEffectType.AudioBounce => true,\n        SpectrumKeyboardBacklightEffectType.AudioRipple => true,\n        SpectrumKeyboardBacklightEffectType.AuroraSync => true,\n        _ => false\n    };\n\n    public static bool IsWholeKeyboardEffect(this SpectrumKeyboardBacklightEffectType type) => type switch\n    {\n        SpectrumKeyboardBacklightEffectType.Type => true,\n        SpectrumKeyboardBacklightEffectType.Ripple => true,\n        _ => false\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/StreamExtensions.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\n// ReSharper disable LocalizableElement\n\npublic static class StreamExtensions\n{\n    public static async Task CopyToAsync(this Stream source, Stream destination, int bufferSize, IProgress<long>? progress = null, CancellationToken cancellationToken = default)\n    {\n        if (!source.CanRead)\n            throw new ArgumentException(\"Has to be readable\", nameof(source));\n        if (!destination.CanWrite)\n            throw new ArgumentException(\"Has to be writable\", nameof(destination));\n\n        var buffer = new byte[bufferSize];\n        long totalBytesRead = 0;\n        int bytesRead;\n\n        while ((bytesRead = await source.ReadAsync(buffer, cancellationToken).ConfigureAwait(false)) != 0)\n        {\n            await destination.WriteAsync(buffer.AsMemory(0, bytesRead), cancellationToken).ConfigureAwait(false);\n            totalBytesRead += bytesRead;\n            progress?.Report(totalBytesRead);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/StringExtensions.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class StringExtensions\n{\n    public static string GetUntilOrEmpty(this string text, string stopAt)\n    {\n        if (string.IsNullOrWhiteSpace(text))\n            return string.Empty;\n\n        var charLocation = text.IndexOf(stopAt, StringComparison.Ordinal);\n        if (charLocation > 0)\n            return text[..charLocation];\n\n        return string.Empty;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/TaskExtensions.cs",
    "content": "﻿using System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class TaskExtensions\n{\n    public static ValueTask AsValueTask(this Task task) => new(task);\n\n    public static Task<T?> OrNullIfException<T>(this Task<T> task) where T : struct\n    {\n        return task.ContinueWith(t => t.IsCompletedSuccessfully ? (T?)t.Result : null);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/TimeExtensions.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class TimeExtensions\n{\n    public static Time UtcNow\n    {\n        get\n        {\n            var utcNow = DateTime.UtcNow;\n            return new(utcNow.Hour, utcNow.Minute);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/UintExtensions.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class UintExtensions\n{\n    public static uint ReverseEndianness(this uint state)\n    {\n        var bytes = BitConverter.GetBytes(state);\n        Array.Reverse(bytes, 0, bytes.Length);\n        return BitConverter.ToUInt32(bytes, 0);\n    }\n\n    public static bool GetNthBit(this uint num, int n) => (num & (1 << n)) != 0;\n\n    public static uint SetNthBit(this uint num, int n, bool state) => state ? num | (1U << n) : num & ~(1U << n);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Extensions/VersionExtensions.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Extensions;\n\npublic static class VersionExtensions\n{\n    public static bool IsBeta(this Version version) => version switch\n    {\n        { Major: 0, Minor: 0, Build: 1, Revision: 0 } => true,\n        { Build: 99 } => true,\n        _ => false\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/AbstractCapabilityFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic abstract class AbstractCapabilityFeature<T>(CapabilityID capabilityID)\n    : IFeature<T> where T : struct, Enum, IComparable, IConvertible\n{\n    public async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n            return mi.Features.Source == MachineInformation.FeatureData.SourceType.CapabilityData && mi.Features[capabilityID];\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    public Task<T[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<T>());\n\n    public async Task<T> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state... [feature={GetType().Name}]\");\n\n        var value = await WMI.LenovoOtherMethod.GetFeatureValueAsync(capabilityID).ConfigureAwait(false);\n        var result = (T)Enum.ToObject(typeof(T), value);\n        if (!Enum.IsDefined(result))\n            throw new InvalidOperationException($\"Undefined value received: {result} [type={typeof(T)}, feature={GetType().Name}]\");\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State is {result} [feature={GetType().Name}]\");\n\n        return result;\n    }\n\n    public async Task SetStateAsync(T state)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state to {state}... [feature={GetType().Name}]\");\n\n        await WMI.LenovoOtherMethod.SetFeatureValueAsync(capabilityID, Convert.ToInt32(state)).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Set state to {state} [feature={GetType().Name}]\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/AbstractCompositeFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing NeoSmart.AsyncLock;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic abstract class AbstractCompositeFeature<T>(params IFeature<T>[] features) : IFeature<T> where T : struct\n{\n    private readonly AsyncLock _lock = new();\n\n    private bool _resolved;\n    private IFeature<T>? _feature;\n\n    public async Task<bool> IsSupportedAsync()\n    {\n        var feature = await ResolveInternalAsync().ConfigureAwait(false);\n        if (feature is null)\n            return false;\n        return await feature.IsSupportedAsync().ConfigureAwait(false);\n    }\n\n    public async Task<T[]> GetAllStatesAsync()\n    {\n        var feature = await ResolveInternalAsync().ConfigureAwait(false)\n                      ?? throw new InvalidOperationException($\"No supported feature found [type={GetType().Name}\");\n        return await feature.GetAllStatesAsync().ConfigureAwait(false);\n    }\n\n    public async Task<T> GetStateAsync()\n    {\n        var feature = await ResolveInternalAsync().ConfigureAwait(false)\n                      ?? throw new InvalidOperationException($\"No supported feature found [type={GetType().Name}\");\n        return await feature.GetStateAsync().ConfigureAwait(false);\n    }\n\n    public async Task SetStateAsync(T state)\n    {\n        var feature = await ResolveInternalAsync().ConfigureAwait(false)\n                      ?? throw new InvalidOperationException($\"No supported feature found [type={GetType().Name}\");\n        await feature.SetStateAsync(state).ConfigureAwait(false);\n    }\n\n    protected virtual async Task<IFeature<T>?> ResolveAsync()\n    {\n        foreach (var feature in features)\n        {\n            if (!await feature.IsSupportedAsync().ConfigureAwait(false))\n                continue;\n\n            return feature;\n        }\n\n        return null;\n    }\n\n    private async Task<IFeature<T>?> ResolveInternalAsync()\n    {\n        using (await _lock.LockAsync().ConfigureAwait(false))\n        {\n            if (_resolved)\n                return _feature;\n\n            _feature = await ResolveAsync().ConfigureAwait(false);\n            _resolved = true;\n            return _feature;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/AbstractDriverFeature.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32.SafeHandles;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic abstract class AbstractDriverFeature<T>(Func<SafeFileHandle> driverHandleHandle, uint controlCode) : IFeature<T> where T : struct, Enum, IComparable\n{\n    protected readonly uint ControlCode = controlCode;\n    protected readonly Func<SafeFileHandle> DriverHandle = driverHandleHandle;\n\n    protected T LastState;\n\n    public virtual async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            _ = await GetStateAsync().ConfigureAwait(false);\n            return true;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    public Task<T[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<T>());\n\n    public virtual async Task<T> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state... [feature={GetType().Name}]\");\n\n        var outBuffer = await SendCodeAsync(DriverHandle(), ControlCode, GetInBufferValue()).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Buffer value: {outBuffer} [feature={GetType().Name}]\");\n\n        var state = await FromInternalAsync(outBuffer).ConfigureAwait(false);\n        LastState = state;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State is {state} [feature={GetType().Name}]\");\n\n        return state;\n    }\n\n    public virtual async Task SetStateAsync(T state)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state to {state}... [feature={GetType().Name}]\");\n\n        var codes = await ToInternalAsync(state).ConfigureAwait(false);\n        foreach (var code in codes)\n            await SendCodeAsync(DriverHandle(), ControlCode, code).ConfigureAwait(false);\n        LastState = state;\n\n        await VerifyStateSetAsync(state).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State set to {state} [feature={GetType().Name}]\");\n    }\n\n    protected abstract Task<T> FromInternalAsync(uint state);\n\n    protected abstract uint GetInBufferValue();\n\n    protected abstract Task<uint[]> ToInternalAsync(T state);\n\n    protected Task<uint> SendCodeAsync(SafeFileHandle handle, uint controlCode, uint inBuffer) => Task.Run(() =>\n    {\n        if (PInvokeExtensions.DeviceIoControl(handle, controlCode, inBuffer, out uint outBuffer))\n            return outBuffer;\n\n        var error = Marshal.GetLastWin32Error();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"DeviceIoControl returned 0, last error: {error} [feature={GetType().Name}]\");\n\n        throw new InvalidOperationException($\"DeviceIoControl returned 0, last error: {error}\");\n    });\n\n    private async Task VerifyStateSetAsync(T state)\n    {\n        var retries = 0;\n        var verified = false;\n\n        while (retries < 10)\n        {\n            if (state.Equals(await GetStateAsync().ConfigureAwait(false)))\n            {\n                verified = true;\n                break;\n            }\n\n            retries++;\n\n            await Task.Delay(50).ConfigureAwait(false);\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Verify state {state} set {(verified ? \"succeeded\" : \"failed\")}. [feature={GetType().Name}]\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/AbstractLenovoLightingFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic abstract class AbstractLenovoLightingFeature<T>(int lightingID, int controlInterface, int type) : IFeature<T> where T : struct, Enum, IComparable\n{\n    public bool ForceDisable { get; set; }\n\n    public virtual async Task<bool> IsSupportedAsync()\n    {\n        if (ForceDisable)\n            return false;\n\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n            if (mi.Properties.IsExcludedFromLenovoLighting)\n                return false;\n\n            var isSupported = await WMI.LenovoLightingData.ExistsAsync(lightingID, controlInterface, type).ConfigureAwait(false);\n\n            if (!isSupported)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Control interface not found [feature={GetType().Name}]\");\n                return false;\n            }\n\n            _ = await GetStateAsync().ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Supported [feature={GetType().Name}]\");\n\n            return true;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to check support [feature={GetType().Name}]\", ex);\n\n            return false;\n        }\n    }\n\n    public Task<T[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<T>());\n\n    public async Task<T> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state... [feature={GetType().Name}]\");\n\n        var (stateType, level) = await WMI.LenovoLightingMethod.GetLightingCurrentStatusAsync(lightingID).ConfigureAwait(false);\n        var result = FromInternal(stateType, level);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State is {result} [feature={GetType().Name}]\");\n\n        return result;\n    }\n\n    public async Task SetStateAsync(T state)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state to {state}... [feature={GetType().Name}]\");\n\n        var (stateType, level) = ToInternal(state);\n\n        await WMI.LenovoLightingMethod.SetLightingCurrentStatusAsync(lightingID, stateType, level).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Set state to {state} [feature={GetType().Name}]\");\n    }\n\n    protected abstract T FromInternal(int stateType, int level);\n\n    protected abstract (int stateType, int level) ToInternal(T state);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/AbstractUEFIFeature.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic abstract class AbstractUEFIFeature<T>(string guid, string scopeName, uint scopeAttribute)\n    : IFeature<T> where T : struct, Enum, IComparable\n{\n    public async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            _ = await GetStateAsync().ConfigureAwait(false);\n            return true;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    public Task<T[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<T>());\n\n    public abstract Task<T> GetStateAsync();\n\n    public abstract Task SetStateAsync(T state);\n\n    protected unsafe Task<TS> ReadFromUefiAsync<TS>() where TS : struct => Task.Run(() =>\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Reading from UEFI... [feature={GetType().Name}]\");\n\n        var ptr = Marshal.AllocHGlobal(Marshal.SizeOf<TS>());\n\n        try\n        {\n            if (!TokenManipulator.AddPrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot set UEFI privileges [feature={GetType().Name}]\");\n\n                throw new InvalidOperationException(\"Cannot set privileges UEFI\");\n            }\n\n            var ptrSize = (uint)Marshal.SizeOf<TS>();\n            if (PInvoke.GetFirmwareEnvironmentVariableEx(scopeName, guid, ptr.ToPointer(), ptrSize, null) != 0)\n            {\n                var result = Marshal.PtrToStructure<TS>(ptr);\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Read from UEFI successful [feature={GetType().Name}]\");\n\n                return result;\n            }\n            else\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot read variable {scopeName} from UEFI [feature={GetType().Name}]\");\n\n                throw new InvalidOperationException($\"Cannot read variable {scopeName} from UEFI\");\n            }\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n            TokenManipulator.RemovePrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE);\n        }\n    });\n\n    protected unsafe Task WriteToUefiAsync<TS>(TS structure) where TS : struct => Task.Run(() =>\n    {\n        var ptr = Marshal.AllocHGlobal(Marshal.SizeOf<TS>());\n\n        try\n        {\n            if (!TokenManipulator.AddPrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot set UEFI privileges [feature={GetType().Name}]\");\n\n                throw new InvalidOperationException(\"Cannot set UEFI privileges\");\n            }\n\n            Marshal.StructureToPtr(structure, ptr, false);\n            var ptrSize = (uint)Marshal.SizeOf<TS>();\n            if (!PInvoke.SetFirmwareEnvironmentVariableEx(scopeName, guid, ptr.ToPointer(), ptrSize, scopeAttribute))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot write variable {scopeName} to UEFI [feature={GetType().Name}]\");\n\n                throw new InvalidOperationException($\"Cannot write variable {scopeName} to UEFI\");\n            }\n            else\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"WriteAsync to UEFI successful [feature={GetType().Name}]\");\n            }\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n            TokenManipulator.RemovePrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE);\n        }\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/AbstractWmiFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic abstract class AbstractWmiFeature<T>(Func<Task<int>> getValue, Func<int, Task> setValue, Func<Task<int>>? isSupported = null, int offset = 0)\n    : IFeature<T> where T : struct, Enum, IComparable\n{\n    public async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            if (isSupported is null)\n                return true;\n\n            return await isSupported().ConfigureAwait(false) > 0;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n    public virtual Task<T[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<T>());\n\n    public async Task<T> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state... [feature={GetType().Name}]\");\n\n        var internalResult = await getValue().ConfigureAwait(false);\n        var result = FromInternal(internalResult);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State is {result} [feature={GetType().Name}]\");\n\n        return result;\n    }\n\n    public virtual async Task SetStateAsync(T state)\n    {\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state to {state}... [feature={GetType().Name}]\");\n\n        await setValue(ToInternal(state)).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Set state to {state} [feature={GetType().Name}]\");\n    }\n\n    private int ToInternal(T state) => (int)(object)state + offset;\n\n    private T FromInternal(int state) => (T)(object)(state - offset);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/AlwaysOnUsbFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class AlwaysOnUSBFeature() : AbstractDriverFeature<AlwaysOnUSBState>(Drivers.GetEnergy, Drivers.IOCTL_ENERGY_SETTINGS)\n{\n    protected override uint GetInBufferValue() => 0x2;\n\n    protected override Task<uint[]> ToInternalAsync(AlwaysOnUSBState state)\n    {\n        var result = state switch\n        {\n            AlwaysOnUSBState.Off => new uint[] { 0xB, 0x12 },\n            AlwaysOnUSBState.OnWhenSleeping => [0xA, 0x12],\n            AlwaysOnUSBState.OnAlways => [0xA, 0x13],\n            _ => throw new InvalidOperationException(\"Invalid state\"),\n        };\n        return Task.FromResult(result);\n    }\n\n    protected override Task<AlwaysOnUSBState> FromInternalAsync(uint state)\n    {\n        state = state.ReverseEndianness();\n\n        if (state.GetNthBit(31)) // is on?\n        {\n            if (state.GetNthBit(23))\n                return Task.FromResult(AlwaysOnUSBState.OnAlways);\n\n            return Task.FromResult(AlwaysOnUSBState.OnWhenSleeping);\n        }\n\n        return Task.FromResult(AlwaysOnUSBState.Off);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/BatteryFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class BatteryFeature() : AbstractDriverFeature<BatteryState>(Drivers.GetEnergy, Drivers.IOCTL_ENERGY_BATTERY_CHARGE_MODE)\n{\n    private const string BATTERY_CHARGE_MODE_HIVE = \"HKEY_CURRENT_USER\";\n    private const string BATTERY_CHARGE_MODE_PATH = \"Software\\\\Lenovo\\\\VantageService\\\\AddinData\\\\IdeaNotebookAddin\";\n    private const string BATTERY_CHARGE_MODE_KEY = \"BatteryChargeMode\";\n    private const string BATTERY_CHARGE_MODE_NORMAL = \"Normal\";\n    private const string BATTERY_CHARGE_MODE_RAPID_CHARGE = \"Quick\";\n    private const string BATTERY_CHARGE_MODE_CONSERVATION = \"Storage\";\n\n    protected override uint GetInBufferValue() => 0xFF;\n\n    protected override Task<uint[]> ToInternalAsync(BatteryState state)\n    {\n        var result = state switch\n        {\n            BatteryState.Conservation => LastState == BatteryState.RapidCharge ? new uint[] { 0x8, 0x3 } : [0x3],\n            BatteryState.Normal => LastState == BatteryState.Conservation ? [0x5] : [0x8],\n            BatteryState.RapidCharge => LastState == BatteryState.Conservation ? [0x5, 0x7] : [0x7],\n            _ => throw new InvalidOperationException(\"Invalid state\")\n        };\n        return Task.FromResult(result);\n    }\n\n    protected override Task<BatteryState> FromInternalAsync(uint state)\n    {\n        state = state.ReverseEndianness();\n\n        if (state.GetNthBit(17)) // Is charging?\n            return Task.FromResult(state.GetNthBit(26) ? BatteryState.RapidCharge : BatteryState.Normal);\n\n        if (state.GetNthBit(29))\n            return Task.FromResult(BatteryState.Conservation);\n\n        throw new InvalidOperationException($\"Unknown battery state: {state} [bits={Convert.ToString(state, 2)}]\");\n    }\n\n    public override async Task SetStateAsync(BatteryState state)\n    {\n        await base.SetStateAsync(state).ConfigureAwait(false);\n        SetStateInRegistry(state);\n    }\n\n    public async Task EnsureCorrectBatteryModeIsSetAsync()\n    {\n        var state = GetStateFromRegistry();\n\n        if (!state.HasValue)\n            return;\n\n        if (await GetStateAsync().ConfigureAwait(false) == state.Value)\n            return;\n\n        await SetStateAsync(state.Value).ConfigureAwait(false);\n    }\n\n    private static BatteryState? GetStateFromRegistry()\n    {\n        var batteryModeString = Registry.GetValue(BATTERY_CHARGE_MODE_HIVE, BATTERY_CHARGE_MODE_PATH, BATTERY_CHARGE_MODE_KEY, string.Empty);\n        return batteryModeString switch\n        {\n            BATTERY_CHARGE_MODE_NORMAL => BatteryState.Normal,\n            BATTERY_CHARGE_MODE_RAPID_CHARGE => BatteryState.RapidCharge,\n            BATTERY_CHARGE_MODE_CONSERVATION => BatteryState.Conservation,\n            _ => null\n        };\n    }\n\n    private static void SetStateInRegistry(BatteryState state)\n    {\n        var batteryModeString = state switch\n        {\n            BatteryState.Normal => BATTERY_CHARGE_MODE_NORMAL,\n            BatteryState.RapidCharge => BATTERY_CHARGE_MODE_RAPID_CHARGE,\n            BatteryState.Conservation => BATTERY_CHARGE_MODE_CONSERVATION,\n            _ => null\n        };\n\n        if (batteryModeString is null)\n            return;\n\n        Registry.SetValue(BATTERY_CHARGE_MODE_HIVE, BATTERY_CHARGE_MODE_PATH, BATTERY_CHARGE_MODE_KEY, batteryModeString);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/BatteryNightChargeFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class BatteryNightChargeFeature() : AbstractDriverFeature<BatteryNightChargeState>(Drivers.GetEnergy, Drivers.IOCTL_ENERGY_BATTERY_NIGHT_CHARGE)\n{\n    protected override uint GetInBufferValue() => 0x11;\n\n    protected override Task<uint[]> ToInternalAsync(BatteryNightChargeState state)\n    {\n        uint[] result = state switch\n        {\n            BatteryNightChargeState.On => [0x80000012u],\n            BatteryNightChargeState.Off => [0x12u],\n            _ => throw new InvalidOperationException(\"Invalid state\")\n        };\n        return Task.FromResult(result);\n    }\n\n    protected override Task<BatteryNightChargeState> FromInternalAsync(uint state)\n    {\n        if (state.GetNthBit(0))\n            return Task.FromResult(state.GetNthBit(4) ? BatteryNightChargeState.On : BatteryNightChargeState.Off);\n\n        throw new InvalidOperationException($\"Unknown battery night charge state: {state} [bits={Convert.ToString(state, 2)}]\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/DpiScaleFeature.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing WindowsDisplayAPI.Native.DisplayConfig;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class DpiScaleFeature : IFeature<DpiScale>\n{\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task<DpiScale[]> GetAllStatesAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting all DPI scales...\");\n\n        var display = InternalDisplay.Get();\n        var pds = display?.ToPathDisplaySource();\n        if (pds is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Built in display not found\");\n\n            return Task.FromResult(Array.Empty<DpiScale>());\n        }\n\n        var max = (int)pds.MaximumDPIScale;\n\n        var result = Enum.GetValues<DisplayConfigSourceDPIScale>()\n            .Select(s => (int)s)\n            .Where(s => s <= max)\n            .OrderBy(s => s)\n            .Select(s => new DpiScale(s))\n            .ToArray();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Current DPI scale is {result}\");\n\n        return Task.FromResult(result);\n    }\n\n    public Task<DpiScale> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting current DPI scale...\");\n\n        var display = InternalDisplay.Get();\n        var pds = display?.ToPathDisplaySource();\n        if (pds is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Built in display not found\");\n\n            return Task.FromResult(default(DpiScale));\n        }\n\n        var result = (int)pds.CurrentDPIScale;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Current DPI scale is {result}\");\n\n        return Task.FromResult(new DpiScale(result));\n    }\n\n    public Task SetStateAsync(DpiScale state)\n    {\n        var display = InternalDisplay.Get();\n        var pds = display?.ToPathDisplaySource();\n        if (pds is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Built in display not found\");\n            throw new InvalidOperationException(\"Built in display not found\");\n        }\n\n        if ((int)pds.CurrentDPIScale == state.Scale)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"DPI scale already set to {state.Scale}\");\n            return Task.CompletedTask;\n        }\n\n        if (!Enum.IsDefined(typeof(DisplayConfigSourceDPIScale), (uint)state.Scale))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"DPI scale {state.Scale} not found\");\n            return Task.CompletedTask;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting DPI scale to {state.Scale}\");\n\n        pds.CurrentDPIScale = (DisplayConfigSourceDPIScale)state.Scale;\n        return Task.CompletedTask;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/FlipToStart/FlipToStartCapabilityFeature.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Features.FlipToStart;\n\npublic class FlipToStartCapabilityFeature() : AbstractCapabilityFeature<FlipToStartState>(CapabilityID.FlipToStart);\n\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/FlipToStart/FlipToStartFeature.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Features.FlipToStart;\n\npublic class FlipToStartFeature(FlipToStartCapabilityFeature feature1, FlipToStartUEFIFeature feature2)\n    : AbstractCompositeFeature<FlipToStartState>(feature1, feature2);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/FlipToStart/FlipToStartUEFIFeature.cs",
    "content": "﻿using System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\n\nnamespace LenovoLegionToolkit.Lib.Features.FlipToStart;\n\npublic class FlipToStartUEFIFeature() : AbstractUEFIFeature<FlipToStartState>(\n    \"{D743491E-F484-4952-A87D-8D5DD189B70C}\",\n    \"FBSWIF\",\n    PInvokeExtensions.VARIABLE_ATTRIBUTE_NON_VOLATILE |\n    PInvokeExtensions.VARIABLE_ATTRIBUTE_BOOTSERVICE_ACCESS |\n    PInvokeExtensions.VARIABLE_ATTRIBUTE_RUNTIME_ACCESS)\n{\n    [StructLayout(LayoutKind.Sequential, Pack = 1)]\n    private struct FlipToBootStruct\n    {\n        [MarshalAs(UnmanagedType.U1)]\n        public byte FlipToBootEn;\n        [MarshalAs(UnmanagedType.U1)]\n        public byte Reserved1;\n        [MarshalAs(UnmanagedType.U1)]\n        public byte Reserved2;\n        [MarshalAs(UnmanagedType.U1)]\n        public byte Reserved3;\n    }\n\n    // ReSharper disable once StringLiteralTypo\n\n    public override async Task<FlipToStartState> GetStateAsync()\n    {\n        var result = await ReadFromUefiAsync<FlipToBootStruct>().ConfigureAwait(false);\n        return result.FlipToBootEn == 0 ? FlipToStartState.Off : FlipToStartState.On;\n    }\n\n    public override async Task SetStateAsync(FlipToStartState state)\n    {\n        var structure = new FlipToBootStruct\n        {\n            FlipToBootEn = state == FlipToStartState.On ? (byte)1 : (byte)0,\n            Reserved1 = 0,\n            Reserved2 = 0,\n            Reserved3 = 0\n        };\n        await WriteToUefiAsync(structure).ConfigureAwait(false);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/FnLockFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class FnLockFeature() : AbstractDriverFeature<FnLockState>(Drivers.GetEnergy, Drivers.IOCTL_ENERGY_SETTINGS)\n{\n    protected override uint GetInBufferValue() => 0x2;\n\n    protected override Task<uint[]> ToInternalAsync(FnLockState state)\n    {\n        var lockOn = state switch\n        {\n            FnLockState.On => true,\n            FnLockState.Off => false,\n            _ => throw new InvalidOperationException(\"Invalid state\"),\n        };\n\n        var value = lockOn ? new uint[] { 0xE } : [0xF];\n        return Task.FromResult(value);\n    }\n\n    protected override Task<FnLockState> FromInternalAsync(uint state)\n    {\n        var value = state.GetNthBit(10) ? FnLockState.On : FnLockState.Off;\n        return Task.FromResult(value);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/HDRFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class HDRFeature : IFeature<HDRState>\n{\n    public Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Checking HDR support...\");\n\n            var display = InternalDisplay.Get();\n            if (display is null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Built in display not found\");\n\n                return Task.FromResult(false);\n            }\n\n            var isSupported = display.GetAdvancedColorInfo().AdvancedColorSupported;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"HDR support: {isSupported}\");\n\n            return Task.FromResult(isSupported);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to check HDR support\", ex);\n\n            return Task.FromResult(false);\n        }\n    }\n\n    public Task<bool> IsHdrBlockedAsync()\n    {\n        var display = InternalDisplay.Get() ?? throw new InvalidOperationException(\"Built in display not found\");\n\n        var result = display.GetAdvancedColorInfo().AdvancedColorForceDisabled;\n        return Task.FromResult(result);\n    }\n\n    public Task<HDRState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<HDRState>());\n\n    public Task<HDRState> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting current HDR state...\");\n\n        var display = InternalDisplay.Get() ?? throw new InvalidOperationException(\"Built in display not found\");\n\n        var result = display.GetAdvancedColorInfo().AdvancedColorEnabled ? HDRState.On : HDRState.Off;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"HDR is {result}\");\n\n        return Task.FromResult(result);\n    }\n\n    public async Task SetStateAsync(HDRState state)\n    {\n        var currentState = await GetStateAsync().ConfigureAwait(false);\n\n        if (currentState == state)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"HDR already set to {state}\");\n            return;\n        }\n\n        var display = InternalDisplay.Get() ?? throw new InvalidOperationException(\"Built in display not found\");\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting display HDR to {state}\");\n\n        display.SetAdvancedColorState(state == HDRState.On);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/GSyncFeature.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid;\n\npublic class GSyncFeature()\n    : AbstractWmiFeature<GSyncState>(WMI.LenovoGameZoneData.GetGSyncStatusAsync, WMI.LenovoGameZoneData.SetGSyncStatusAsync, WMI.LenovoGameZoneData.IsSupportGSyncAsync);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/HybridModeFeature.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid;\n\npublic class HybridModeFeature(GSyncFeature gSyncFeature, IGPUModeFeature igpuModeFeature, DGPUNotify dgpuNotify) : IFeature<HybridModeState>\n{\n    private readonly CancellationTokenSource _ensureDGPUEjectedIfNeededCancellationTokenSource = new();\n\n    public async Task<bool> IsSupportedAsync()\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n        return mi.Properties.SupportsGSync || mi.Properties.SupportsIGPUMode;\n    }\n\n    public async Task<HybridModeState[]> GetAllStatesAsync()\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n\n        return (mi.Properties.SupportsGSync, mi.Properties.SupportsIGPUMode) switch\n        {\n            (true, true) => [HybridModeState.On, HybridModeState.OnIGPUOnly, HybridModeState.OnAuto, HybridModeState.Off],\n            (false, true) => [HybridModeState.On, HybridModeState.OnIGPUOnly, HybridModeState.OnAuto],\n            (true, false) => [HybridModeState.On, HybridModeState.Off],\n            _ => []\n        };\n    }\n\n    public async Task<HybridModeState> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state...\");\n\n        var gSyncSupported = await gSyncFeature.IsSupportedAsync().ConfigureAwait(false);\n        var igpuModeSupported = await igpuModeFeature.IsSupportedAsync().ConfigureAwait(false);\n\n        var gSync = GSyncState.Off;\n        var igpuMode = IGPUModeState.Default;\n\n        if (gSyncSupported)\n            gSync = await gSyncFeature.GetStateAsync().ConfigureAwait(false);\n\n        if (igpuModeSupported)\n            igpuMode = await igpuModeFeature.GetStateAsync().ConfigureAwait(false);\n\n        var state = Pack(gSync, igpuMode);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State is {state} [gSync={gSync}, igpuMode={igpuMode}]\");\n\n        return state;\n    }\n\n    public async Task SetStateAsync(HybridModeState state)\n    {\n        await _ensureDGPUEjectedIfNeededCancellationTokenSource.CancelAsync().ConfigureAwait(false);\n\n        var (gSync, igpuMode) = Unpack(state);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state to {state}... [gSync={gSync}, igpuMode={igpuMode}]\");\n\n        var gSyncSupported = await gSyncFeature.IsSupportedAsync().ConfigureAwait(false);\n        var igpuModeSupported = await igpuModeFeature.IsSupportedAsync().ConfigureAwait(false);\n\n        var gSyncChanged = false;\n\n        if (gSyncSupported && await gSyncFeature.GetStateAsync().ConfigureAwait(false) != gSync)\n        {\n            await gSyncFeature.SetStateAsync(gSync).ConfigureAwait(false);\n            gSyncChanged = true;\n        }\n\n        if (igpuModeSupported && await igpuModeFeature.GetStateAsync().ConfigureAwait(false) != igpuMode)\n        {\n            try\n            {\n                await igpuModeFeature.SetStateAsync(igpuMode).ConfigureAwait(false);\n            }\n            catch (IGPUModeChangeException)\n            {\n                if (!gSyncChanged)\n                    throw;\n            }\n            finally\n            {\n                if (!gSyncChanged && igpuMode is IGPUModeState.Default or IGPUModeState.Auto)\n                    await dgpuNotify.NotifyLaterIfNeededAsync().ConfigureAwait(false);\n            }\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State set to {state} [gSync={gSync}, igpuMode={igpuMode}]\");\n    }\n\n    public async Task EnsureDGPUEjectedIfNeededAsync()\n    {\n        if (!await igpuModeFeature.IsSupportedAsync().ConfigureAwait(false) || !await dgpuNotify.IsSupportedAsync().ConfigureAwait(false))\n            return;\n\n        _ = Task.Run(async () =>\n        {\n            try\n            {\n                const int maxRetries = 5;\n                const int delay = 5 * 1000;\n\n                var retry = 1;\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Will make sure that dGPU is ejected. [maxRetries={maxRetries}, delay={delay}ms]\");\n\n                while (retry <= maxRetries)\n                {\n                    await Task.Delay(delay).ConfigureAwait(false);\n\n                    if (_ensureDGPUEjectedIfNeededCancellationTokenSource.IsCancellationRequested)\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Cancelled, aborting...\");\n                        break;\n                    }\n\n                    if (await igpuModeFeature.GetStateAsync().ConfigureAwait(false) != IGPUModeState.IGPUOnly)\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Not in iGPU-only mode, aborting...\");\n                        break;\n                    }\n\n                    if (!await dgpuNotify.IsDGPUAvailableAsync().ConfigureAwait(false))\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"dGPU already unavailable, aborting...\");\n                        break;\n                    }\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Notifying dGPU... [retry={retry}, maxRetries={maxRetries}]\");\n\n                    await dgpuNotify.NotifyAsync(false).ConfigureAwait(false);\n\n                    retry++;\n                }\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Failed to ensure dGPU is ejected\", ex);\n            }\n        });\n    }\n\n    private static (GSyncState, IGPUModeState) Unpack(HybridModeState state) => state switch\n    {\n        HybridModeState.On => (GSyncState.Off, IGPUModeState.Default),\n        HybridModeState.OnIGPUOnly => (GSyncState.Off, IGPUModeState.IGPUOnly),\n        HybridModeState.OnAuto => (GSyncState.Off, IGPUModeState.Auto),\n        HybridModeState.Off => (GSyncState.On, IGPUModeState.Default),\n        _ => throw new InvalidOperationException(\"Invalid state\"),\n    };\n\n    private static HybridModeState Pack(GSyncState state1, IGPUModeState state2) => (state1, state2) switch\n    {\n        (GSyncState.Off, IGPUModeState.Default) => HybridModeState.On,\n        (GSyncState.Off, IGPUModeState.IGPUOnly) => HybridModeState.OnIGPUOnly,\n        (GSyncState.Off, IGPUModeState.Auto) => HybridModeState.OnAuto,\n        (GSyncState.On, _) => HybridModeState.Off,\n        _ => throw new InvalidOperationException(\"Invalid state\"),\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/IGPUModeCapabilityFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid;\n\npublic class IGPUModeCapabilityFeature : IFeature<IGPUModeState>\n{\n    public async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n            return mi is { Features.Source: MachineInformation.FeatureData.SourceType.CapabilityData, Properties.SupportsIGPUMode: true };\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    public Task<IGPUModeState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<IGPUModeState>());\n\n    public async Task<IGPUModeState> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state...\");\n\n        var value = await WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.IGPUMode).ConfigureAwait(false);\n        var result = (IGPUModeState)value;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State is {result}\");\n\n        return result;\n    }\n\n    public async Task SetStateAsync(IGPUModeState state)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state to {state}...\");\n\n        await WMI.LenovoOtherMethod.SetFeatureValueAsync(CapabilityID.IGPUMode, (int)state).ConfigureAwait(false);\n        if (await WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.IGPUModeChangeStatus).ConfigureAwait(false) == 0)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Set state to {state}, but dGPU check failed.\");\n\n            throw new IGPUModeChangeException(state);\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Set state to {state}\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/IGPUModeChangeException.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid;\n\npublic class IGPUModeChangeException(IGPUModeState igpuMode) : Exception\n{\n    public IGPUModeState IGPUMode { get; } = igpuMode;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/IGPUModeFeature.cs",
    "content": "﻿using System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid;\n\npublic class IGPUModeFeature(IGPUModeGamezoneFeature feature1, IGPUModeCapabilityFeature feature2, IGPUModeFeatureFlagsFeature feature3)\n    : AbstractCompositeFeature<IGPUModeState>(feature1, feature2, feature3)\n{\n    public bool ExperimentalGPUWorkingMode { get; set; }\n\n    protected override async Task<IFeature<IGPUModeState>?> ResolveAsync()\n    {\n        if (!ExperimentalGPUWorkingMode)\n            return await feature1.IsSupportedAsync().ConfigureAwait(false) ? feature1 : null;\n\n        if (await feature2.IsSupportedAsync().ConfigureAwait(false))\n            return feature2;\n\n        if (await feature3.IsSupportedAsync().ConfigureAwait(false))\n            return feature3;\n\n        return null;\n\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/IGPUModeFeatureFlagsFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid;\n\npublic class IGPUModeFeatureFlagsFeature : IFeature<IGPUModeState>\n{\n    public async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n            return mi is { Features.Source: MachineInformation.FeatureData.SourceType.Flags, Properties.SupportsIGPUMode: true };\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    public Task<IGPUModeState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<IGPUModeState>());\n\n    public async Task<IGPUModeState> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state...\");\n\n        var flags = await WMI.LenovoOtherMethod.GetDeviceCurrentSupportFeatureAsync().ConfigureAwait(false);\n\n        var result = IGPUModeState.Default;\n\n        if (flags.IsBitSet(0))\n            result = IGPUModeState.IGPUOnly;\n        if (flags.IsBitSet(1))\n            result = IGPUModeState.Auto;\n\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State is {result}\");\n\n        return result;\n    }\n\n    public async Task SetStateAsync(IGPUModeState state)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state to {state}...\");\n\n        var result = await WMI.LenovoOtherMethod.SetDeviceCurrentSupportFeatureAsync(1, (int)state).ConfigureAwait(false);\n        if (result == 0)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Set state to {state}, but dGPU check failed.\");\n\n            throw new IGPUModeChangeException(state);\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Set state to {state}\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/IGPUModeGamezoneFeature.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid;\n\npublic class IGPUModeGamezoneFeature()\n    : AbstractWmiFeature<IGPUModeState>(WMI.LenovoGameZoneData.GetIGPUModeStatusAsync, WMI.LenovoGameZoneData.SetIGPUModeStatusAsync, WMI.LenovoGameZoneData.IsSupportIGPUModeAsync);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/Notify/AbstractDGPUNotify.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\nusing System.Text.RegularExpressions;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Devices.DeviceAndDriverInstallation;\nusing Windows.Win32.Foundation;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\n\npublic abstract partial class AbstractDGPUNotify : IDGPUNotify\n{\n    [GeneratedRegex(\"pci#ven_([0-9A-Fa-f]{4})|dev_([0-9A-Fa-f]{4})\")]\n    private static partial Regex HardwareIdRegex();\n\n    private readonly object _lock = new();\n\n    private CancellationTokenSource? _notifyLaterCancellationTokenSource;\n\n    public event EventHandler<bool>? Notified;\n\n    public abstract Task<bool> IsSupportedAsync();\n\n    public async Task<bool> IsDGPUAvailableAsync()\n    {\n        try\n        {\n            var dgpuHardwareId = await GetDGPUHardwareIdAsync().ConfigureAwait(false);\n            var isAvailable = IsDGPUAvailable(dgpuHardwareId);\n            return isAvailable;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to notify.\", ex);\n            return false;\n        }\n    }\n\n    public async Task NotifyAsync(bool publish = true)\n    {\n        lock (_lock)\n        {\n            _notifyLaterCancellationTokenSource?.Cancel();\n            _notifyLaterCancellationTokenSource = null;\n        }\n\n        try\n        {\n            var dgpuHardwareId = await GetDGPUHardwareIdAsync().ConfigureAwait(false);\n            var isAvailable = IsDGPUAvailable(dgpuHardwareId);\n            await NotifyDGPUStatusAsync(isAvailable).ConfigureAwait(false);\n\n            if (publish)\n                Notified?.Invoke(this, isAvailable);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Notified: {isAvailable}\");\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to notify.\", ex);\n        }\n    }\n\n    public Task NotifyLaterIfNeededAsync()\n    {\n        CancellationToken token;\n\n        lock (_lock)\n        {\n            _notifyLaterCancellationTokenSource?.Cancel();\n            _notifyLaterCancellationTokenSource = new();\n\n            token = _notifyLaterCancellationTokenSource.Token;\n        }\n\n        _ = Task.Delay(TimeSpan.FromSeconds(5), token)\n            .ContinueWith(async t =>\n            {\n                if (!t.IsCompletedSuccessfully)\n                    return;\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Event not received, notifying anyway...\");\n\n                await NotifyAsync(false).ConfigureAwait(false);\n            }, token);\n\n        return Task.CompletedTask;\n    }\n\n    protected abstract Task NotifyDGPUStatusAsync(bool state);\n\n    protected abstract Task<HardwareId> GetDGPUHardwareIdAsync();\n\n    private unsafe bool IsDGPUAvailable(HardwareId dgpuHardwareId)\n    {\n        if (dgpuHardwareId == HardwareId.Empty)\n            return false;\n\n        var guidDisplayDeviceArrival = PInvoke.GUID_DISPLAY_DEVICE_ARRIVAL;\n        var deviceHandle = PInvoke.SetupDiGetClassDevs(guidDisplayDeviceArrival,\n            null,\n            HWND.Null,\n            SETUP_DI_GET_CLASS_DEVS_FLAGS.DIGCF_DEVICEINTERFACE | SETUP_DI_GET_CLASS_DEVS_FLAGS.DIGCF_PRESENT | SETUP_DI_GET_CLASS_DEVS_FLAGS.DIGCF_PROFILE);\n\n        uint index = 0;\n        while (true)\n        {\n            var currentIndex = index;\n            index++;\n\n            var deviceInfoData = new SP_DEVINFO_DATA { cbSize = (uint)Marshal.SizeOf<SP_DEVINFO_DATA>() };\n            var result1 = PInvoke.SetupDiEnumDeviceInfo(deviceHandle, currentIndex, ref deviceInfoData);\n            if (!result1)\n            {\n                if (Marshal.GetLastWin32Error() == PInvokeExtensions.ERROR_NO_MORE_ITEMS)\n                    break;\n\n                PInvokeExtensions.ThrowIfWin32Error(\"SetupDiEnumDeviceInfo\");\n            }\n\n            var deviceInterfaceData = new SP_DEVICE_INTERFACE_DATA { cbSize = (uint)Marshal.SizeOf<SP_DEVICE_INTERFACE_DATA>() };\n            var result2 = PInvoke.SetupDiEnumDeviceInterfaces(deviceHandle, null, guidDisplayDeviceArrival, currentIndex, ref deviceInterfaceData);\n            if (!result2)\n                PInvokeExtensions.ThrowIfWin32Error(\"SetupDiEnumDeviceInterfaces\");\n\n            var requiredSize = 0u;\n            _ = PInvoke.SetupDiGetDeviceInterfaceDetail(deviceHandle, deviceInterfaceData, null, 0, &requiredSize, null);\n\n            string devicePath;\n            var output = IntPtr.Zero;\n            try\n            {\n                output = Marshal.AllocHGlobal((int)requiredSize);\n                var deviceDetailData = (SP_DEVICE_INTERFACE_DETAIL_DATA_W*)output.ToPointer();\n                deviceDetailData->cbSize = (uint)Marshal.SizeOf<SP_DEVICE_INTERFACE_DETAIL_DATA_W>();\n\n                var result3 = PInvoke.SetupDiGetDeviceInterfaceDetail(deviceHandle, deviceInterfaceData, deviceDetailData, requiredSize, null, null);\n                if (!result3)\n                    PInvokeExtensions.ThrowIfWin32Error(\"SetupDiGetDeviceInterfaceDetail\");\n\n                fixed (char* e0Ptr = &deviceDetailData->DevicePath.e0)\n                    devicePath = new string(e0Ptr);\n            }\n            finally\n            {\n                Marshal.FreeHGlobal(output);\n            }\n\n            if (!devicePath.Contains(guidDisplayDeviceArrival.ToString()))\n                continue;\n\n            if (dgpuHardwareId != HardwareIdFromDevicePath(devicePath))\n                continue;\n\n            if (PInvoke.CM_Get_DevNode_Status(out var status, out _, deviceInfoData.DevInst, 0) != 0)\n                continue;\n\n            if (status.HasFlag(CM_DEVNODE_STATUS_FLAGS.DN_HAS_PROBLEM))\n                continue;\n\n            return true;\n        }\n\n        return false;\n    }\n\n    private static HardwareId HardwareIdFromDevicePath(string devicePath)\n    {\n        try\n        {\n            var matches = HardwareIdRegex().Matches(devicePath);\n            if (matches.Count != 2)\n                return default;\n\n            var vendor = matches[0].Groups[1].Value;\n            var device = matches[1].Groups[2].Value;\n\n            return new(vendor, device);\n        }\n        catch\n        {\n            return default;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/Notify/DGPUCapabilityNotify.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\n\npublic class DGPUCapabilityNotify : AbstractDGPUNotify\n{\n    public override async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n            return mi is { Features.Source: MachineInformation.FeatureData.SourceType.CapabilityData, Properties.SupportsIGPUMode: true };\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    protected override Task NotifyDGPUStatusAsync(bool state) => WMI.LenovoOtherMethod.SetFeatureValueAsync(CapabilityID.GPUStatus, state ? 1 : 0);\n\n    protected override async Task<HardwareId> GetDGPUHardwareIdAsync()\n    {\n        try\n        {\n            var value = await WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.GPUDidVid).ConfigureAwait(false);\n            var vendorId = value & 0xFFFF;\n            var deviceId = value >> 16;\n            return new HardwareId($\"{vendorId:X}\", $\"{deviceId:X}\");\n        }\n        catch (Exception)\n        {\n            return HardwareId.Empty;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/Notify/DGPUFeatureFlagsNotify.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\n\npublic class DGPUFeatureFlagsNotify : AbstractDGPUNotify\n{\n    public override async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n            return mi is { Features.Source: MachineInformation.FeatureData.SourceType.Flags, Properties.SupportsIGPUMode: true };\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    protected override Task NotifyDGPUStatusAsync(bool state) => WMI.LenovoOtherMethod.SetDGPUDeviceStatusAsync(state);\n\n    protected override async Task<HardwareId> GetDGPUHardwareIdAsync()\n    {\n        try\n        {\n            return await WMI.LenovoOtherMethod.GetDGPUDeviceDIDVIDAsync().ConfigureAwait(false);\n        }\n        catch (Exception)\n        {\n            return HardwareId.Empty;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/Notify/DGPUGamezoneNotify.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\n\npublic class DGPUGamezoneNotify : AbstractDGPUNotify\n{\n    public override async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n            return mi is { Properties.SupportsIGPUMode: true };\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    protected override Task NotifyDGPUStatusAsync(bool state) => WMI.LenovoGameZoneData.NotifyDGPUStatusAsync(state ? 1 : 0);\n\n    protected override async Task<HardwareId> GetDGPUHardwareIdAsync()\n    {\n        try\n        {\n            return await WMI.LenovoGameZoneData.GetDGPUHWIdAsync().ConfigureAwait(false);\n        }\n        catch (Exception)\n        {\n            return HardwareId.Empty;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/Notify/DGPUNotify.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing NeoSmart.AsyncLock;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\n\npublic class DGPUNotify(DGPUGamezoneNotify gamezoneNotify, DGPUCapabilityNotify capabilityNotify, DGPUFeatureFlagsNotify featureFlagsNotify) : IDGPUNotify\n{\n    private readonly AsyncLock _lock = new();\n\n    private bool _resolved;\n    private IDGPUNotify? _dgpuNotify;\n\n    private DGPUCapabilityNotify CapabilityNotify => capabilityNotify;\n    private DGPUFeatureFlagsNotify FeatureFlagsNotify => featureFlagsNotify;\n    private DGPUGamezoneNotify GamezoneNotify => gamezoneNotify;\n\n    public bool ExperimentalGPUWorkingMode { get; set; }\n\n    public event EventHandler<bool>? Notified\n    {\n        add\n        {\n            CapabilityNotify.Notified += value;\n            FeatureFlagsNotify.Notified += value;\n            GamezoneNotify.Notified += value;\n        }\n        remove\n        {\n            CapabilityNotify.Notified -= value;\n            FeatureFlagsNotify.Notified -= value;\n            GamezoneNotify.Notified -= value;\n        }\n    }\n\n    public async Task<bool> IsSupportedAsync()\n    {\n        var dgpuNotify = await ResolveInternalAsync().ConfigureAwait(false);\n        if (dgpuNotify is null)\n            return false;\n        return await dgpuNotify.IsSupportedAsync().ConfigureAwait(false);\n    }\n\n    public async Task<bool> IsDGPUAvailableAsync()\n    {\n        var dgpuNotify = await ResolveInternalAsync().ConfigureAwait(false) ?? throw new InvalidOperationException($\"No supported feature found [type={GetType().Name}]\");\n        return await dgpuNotify.IsDGPUAvailableAsync().ConfigureAwait(false);\n    }\n\n    public async Task NotifyAsync(bool publish = true)\n    {\n        var dgpuNotify = await ResolveInternalAsync().ConfigureAwait(false) ?? throw new InvalidOperationException($\"No supported feature found [type={GetType().Name}]\");\n        await dgpuNotify.NotifyAsync(publish).ConfigureAwait(false);\n    }\n\n    public async Task NotifyLaterIfNeededAsync()\n    {\n        var dgpuNotify = await ResolveInternalAsync().ConfigureAwait(false) ?? throw new InvalidOperationException($\"No supported feature found [type={GetType().Name}]\");\n        await dgpuNotify.NotifyLaterIfNeededAsync().ConfigureAwait(false);\n    }\n\n    private async Task<IDGPUNotify?> ResolveAsync()\n    {\n        if (!ExperimentalGPUWorkingMode)\n            return await GamezoneNotify.IsSupportedAsync().ConfigureAwait(false) ? GamezoneNotify : null;\n\n        if (await CapabilityNotify.IsSupportedAsync().ConfigureAwait(false))\n            return CapabilityNotify;\n\n        if (await FeatureFlagsNotify.IsSupportedAsync().ConfigureAwait(false))\n            return FeatureFlagsNotify;\n\n        return null;\n    }\n\n    private async Task<IDGPUNotify?> ResolveInternalAsync()\n    {\n        using (await _lock.LockAsync().ConfigureAwait(false))\n        {\n            if (_resolved)\n                return _dgpuNotify;\n\n            _dgpuNotify = await ResolveAsync().ConfigureAwait(false);\n            _resolved = true;\n            return _dgpuNotify;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/Hybrid/Notify/IDGPUNotify.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\n\npublic interface IDGPUNotify\n{\n    public event EventHandler<bool>? Notified;\n\n    Task<bool> IsSupportedAsync();\n    Task<bool> IsDGPUAvailableAsync();\n    Task NotifyAsync(bool publish = true);\n    Task NotifyLaterIfNeededAsync();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/IFeature.cs",
    "content": "﻿using System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic interface IFeature<T> where T : struct\n{\n    Task<bool> IsSupportedAsync();\n    Task<T[]> GetAllStatesAsync();\n    Task<T> GetStateAsync();\n    Task SetStateAsync(T state);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/InstantBoot/InstantBootCapabilityFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features.InstantBoot;\n\npublic class InstantBootCapabilityFeature : IFeature<InstantBootState>\n{\n    private enum State\n    {\n        Off,\n        On\n    }\n\n    private class InstantBootAcFeature() : AbstractCapabilityFeature<State>(CapabilityID.InstantBootAc);\n    private class InstantBootUsbPowerDeliveryFeature() : AbstractCapabilityFeature<State>(CapabilityID.InstantBootUsbPowerDelivery);\n\n    private readonly InstantBootAcFeature _ac = new();\n    private readonly InstantBootUsbPowerDeliveryFeature _usbPowerDelivery = new();\n\n    public async Task<bool> IsSupportedAsync()\n    {\n        return await _ac.IsSupportedAsync().ConfigureAwait(false) && await _usbPowerDelivery.IsSupportedAsync().ConfigureAwait(false);\n    }\n\n    public Task<InstantBootState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<InstantBootState>());\n\n    public async Task<InstantBootState> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state...\");\n\n        var ac = await _ac.GetStateAsync().ConfigureAwait(false);\n        var usbPowerDelivery = await _usbPowerDelivery.GetStateAsync().ConfigureAwait(false);\n\n        var result = (ac, usbPowerDelivery) switch\n        {\n            (State.On, State.On) => InstantBootState.AcAdapterAndUsbPowerDelivery,\n            (State.On, State.Off) => InstantBootState.AcAdapter,\n            (State.Off, State.On) => InstantBootState.UsbPowerDelivery,\n            _ => InstantBootState.Off\n        };\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State is {result}\");\n\n        return result;\n    }\n\n    public async Task SetStateAsync(InstantBootState state)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state to {state}...\");\n\n        var (ac, usbPowerDelivery) = state switch\n        {\n            InstantBootState.AcAdapterAndUsbPowerDelivery => (State.On, State.On),\n            InstantBootState.AcAdapter => (State.On, State.Off),\n            InstantBootState.UsbPowerDelivery => (State.Off, State.On),\n            _ => (State.Off, State.Off)\n        };\n\n        await _ac.SetStateAsync(ac).ConfigureAwait(false);\n        await _usbPowerDelivery.SetStateAsync(usbPowerDelivery).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Set state to {state}\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/InstantBoot/InstantBootFeature.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Features.InstantBoot;\n\npublic class InstantBootFeature(InstantBootCapabilityFeature feature1, InstantBootFeatureFlagsFeature feature2)\n    : AbstractCompositeFeature<InstantBootState>(feature1, feature2);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/InstantBoot/InstantBootFeatureFlagsFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features.InstantBoot;\n\npublic class InstantBootFeatureFlagsFeature : IFeature<InstantBootState>\n{\n    private const int AC_INDEX = 5;\n    private const int USB_POWER_DELIVERY_INDEX = 6;\n\n    public async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n            return mi.Features.Source == MachineInformation.FeatureData.SourceType.Flags && mi.Features[CapabilityID.InstantBootAc] && mi.Features[CapabilityID.InstantBootUsbPowerDelivery];\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    public Task<InstantBootState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<InstantBootState>());\n\n    public async Task<InstantBootState> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting state...\");\n\n        var flags = await WMI.LenovoOtherMethod.GetDeviceCurrentSupportFeatureAsync().ConfigureAwait(false);\n\n        var acAdapter = flags.IsBitSet(AC_INDEX);\n        var usbPowerDelivery = flags.IsBitSet(USB_POWER_DELIVERY_INDEX);\n\n        var result = (acAdapter, usbPowerDelivery) switch\n        {\n            (true, true) => InstantBootState.AcAdapterAndUsbPowerDelivery,\n            (true, false) => InstantBootState.AcAdapter,\n            (false, true) => InstantBootState.UsbPowerDelivery,\n            _ => InstantBootState.Off\n        };\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"State is {result}\");\n\n        return result;\n    }\n\n    public async Task SetStateAsync(InstantBootState state)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting state to {state}...\");\n\n        var (acAdapter, usbPowerDelivery) = state switch\n        {\n            InstantBootState.AcAdapterAndUsbPowerDelivery => (1, 1),\n            InstantBootState.AcAdapter => (1, 0),\n            InstantBootState.UsbPowerDelivery => (0, 1),\n            _ => (0, 0)\n        };\n\n        await WMI.LenovoOtherMethod.SetDeviceCurrentSupportFeatureAsync(AC_INDEX, acAdapter).ConfigureAwait(false);\n        await WMI.LenovoOtherMethod.SetDeviceCurrentSupportFeatureAsync(USB_POWER_DELIVERY_INDEX, usbPowerDelivery).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Set state to {state}\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/MicrophoneFeature.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing NAudio.CoreAudioApi;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class MicrophoneFeature : IFeature<MicrophoneState>\n{\n    private readonly MMDeviceEnumerator _enumerator = new();\n\n    private IEnumerable<AudioEndpointVolume> AudioEndpointVolumes => _enumerator.EnumerateAudioEndPoints(DataFlow.Capture, DeviceState.Active).Select(d => d.AudioEndpointVolume);\n\n    public Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var isSupported = AudioEndpointVolumes.Any();\n            return Task.FromResult(isSupported);\n        }\n        catch\n        {\n            return Task.FromResult(false);\n        }\n    }\n\n    public Task<MicrophoneState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<MicrophoneState>());\n\n    public Task<MicrophoneState> GetStateAsync()\n    {\n        var mute = AudioEndpointVolumes.Aggregate(true, (current, v) => current && v.Mute);\n        var result = mute ? MicrophoneState.Off : MicrophoneState.On;\n        return Task.FromResult(result);\n    }\n\n    public Task SetStateAsync(MicrophoneState state)\n    {\n        var mute = MicrophoneState.Off == state;\n        AudioEndpointVolumes.ForEach(v => v.Mute = mute);\n        return Task.CompletedTask;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/OneLevelWhiteKeyboardBacklightFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class OneLevelWhiteKeyboardBacklightFeature() : AbstractDriverFeature<OneLevelWhiteKeyboardBacklightState>(Drivers.GetEnergy, Drivers.IOCTL_ENERGY_SETTINGS)\n{\n    public override async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var outBuffer = await SendCodeAsync(DriverHandle(), ControlCode, GetInBufferValue()).ConfigureAwait(false);\n            var result = ((int)outBuffer & 16) == 16;\n            return result;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    protected override uint GetInBufferValue() => 0x2;\n\n    protected override Task<uint[]> ToInternalAsync(OneLevelWhiteKeyboardBacklightState state)\n    {\n        var result = state switch\n        {\n            OneLevelWhiteKeyboardBacklightState.Off => new uint[] { 0x9 },\n            OneLevelWhiteKeyboardBacklightState.On => [0x8],\n            _ => throw new InvalidOperationException(\"Invalid state\"),\n        };\n        return Task.FromResult(result);\n    }\n\n    protected override Task<OneLevelWhiteKeyboardBacklightState> FromInternalAsync(uint state)\n    {\n        var isOn = ((int)state & 32) == 32;\n        var result = isOn ? OneLevelWhiteKeyboardBacklightState.On : OneLevelWhiteKeyboardBacklightState.Off;\n        return Task.FromResult(result);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/OverDrive/OverDriveCapabilityFeature.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Features.OverDrive;\n\npublic class OverDriveCapabilityFeature() : AbstractCapabilityFeature<OverDriveState>(CapabilityID.OverDrive);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/OverDrive/OverDriveFeature.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Features.OverDrive;\n\npublic class OverDriveFeature(OverDriveCapabilityFeature feature1, OverDriveGameZoneFeature feature2)\n    : AbstractCompositeFeature<OverDriveState>(feature1, feature2);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/OverDrive/OverDriveGameZoneFeature.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Features.OverDrive;\n\npublic class OverDriveGameZoneFeature()\n    : AbstractWmiFeature<OverDriveState>(WMI.LenovoGameZoneData.GetODStatusAsync, WMI.LenovoGameZoneData.SetODStatusAsync, WMI.LenovoGameZoneData.IsSupportODAsync);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/PanelLogo/PanelLogoBacklightFeature.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Features.PanelLogo;\n\npublic class PanelLogoBacklightFeature(PanelLogoLenovoLightingBacklightFeature feature1, PanelLogoSpectrumBacklightFeature feature2)\n    : AbstractCompositeFeature<PanelLogoBacklightState>(feature1, feature2);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/PanelLogo/PanelLogoLenovoLightingBacklightFeature.cs",
    "content": "﻿using System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features.PanelLogo;\n\npublic class PanelLogoLenovoLightingBacklightFeature() : AbstractLenovoLightingFeature<PanelLogoBacklightState>(3, 1, 0)\n{\n    public override async Task<bool> IsSupportedAsync()\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n        if (mi.Properties.IsExcludedFromPanelLogoLenovoLighting)\n            return false;\n\n        return await base.IsSupportedAsync().ConfigureAwait(false);\n    }\n\n    protected override PanelLogoBacklightState FromInternal(int stateType, int _) => (PanelLogoBacklightState)stateType;\n\n    protected override (int stateType, int level) ToInternal(PanelLogoBacklightState state) => ((int)state, 0);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/PanelLogo/PanelLogoSpectrumBacklightFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\n\nnamespace LenovoLegionToolkit.Lib.Features.PanelLogo;\n\npublic class PanelLogoSpectrumBacklightFeature(SpectrumKeyboardBacklightController controller) : IFeature<PanelLogoBacklightState>\n{\n    public async Task<bool> IsSupportedAsync()\n    {\n        var isSupported = await controller.IsSupportedAsync().ConfigureAwait(false);\n        if (!isSupported)\n            return false;\n\n        var (layout, _, _) = await controller.GetKeyboardLayoutAsync().ConfigureAwait(false);\n        return layout == SpectrumLayout.Full;\n    }\n\n    public Task<PanelLogoBacklightState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<PanelLogoBacklightState>());\n\n    public async Task<PanelLogoBacklightState> GetStateAsync() => await controller.GetLogoStatusAsync().ConfigureAwait(false)\n        ? PanelLogoBacklightState.On\n        : PanelLogoBacklightState.Off;\n\n    public Task SetStateAsync(PanelLogoBacklightState state) => controller.SetLogoStatusAsync(state == PanelLogoBacklightState.On);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/PortsBacklightFeature.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Features;\n\npublic class PortsBacklightFeature() : AbstractLenovoLightingFeature<PortsBacklightState>(5, 1, 0)\n{\n    protected override PortsBacklightState FromInternal(int stateType, int _) => (PortsBacklightState)stateType;\n\n    protected override (int stateType, int level) ToInternal(PortsBacklightState state) => ((int)state, 0);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/PowerModeFeature.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Controllers.GodMode;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class PowerModeUnavailableWithoutACException(PowerModeState powerMode) : Exception\n{\n    public PowerModeState PowerMode { get; } = powerMode;\n}\n\npublic class PowerModeFeature(\n    GodModeController godModeController,\n    WindowsPowerModeController windowsPowerModeController,\n    WindowsPowerPlanController windowsPowerPlanController,\n    ThermalModeListener thermalModeListener,\n    PowerModeListener powerModeListener)\n    : AbstractWmiFeature<PowerModeState>(WMI.LenovoGameZoneData.GetSmartFanModeAsync, WMI.LenovoGameZoneData.SetSmartFanModeAsync, WMI.LenovoGameZoneData.IsSupportSmartFanAsync, 1)\n{\n    public bool AllowAllPowerModesOnBattery { get; set; }\n\n    public override async Task<PowerModeState[]> GetAllStatesAsync()\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n        return mi.Properties.SupportsGodMode\n            ? [PowerModeState.Quiet, PowerModeState.Balance, PowerModeState.Performance, PowerModeState.GodMode]\n            : [PowerModeState.Quiet, PowerModeState.Balance, PowerModeState.Performance];\n    }\n\n    public override async Task SetStateAsync(PowerModeState state)\n    {\n        var allStates = await GetAllStatesAsync().ConfigureAwait(false);\n        if (!allStates.Contains(state))\n            throw new InvalidOperationException($\"Unsupported power mode {state}\");\n\n        if (state is PowerModeState.Performance or PowerModeState.GodMode\n            && !AllowAllPowerModesOnBattery\n            && await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false) is PowerAdapterStatus.Disconnected)\n            throw new PowerModeUnavailableWithoutACException(state);\n\n        var currentState = await GetStateAsync().ConfigureAwait(false);\n\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n\n        if (mi.Properties.HasQuietToPerformanceModeSwitchingBug && currentState == PowerModeState.Quiet && state == PowerModeState.Performance)\n        {\n            thermalModeListener.SuppressNext();\n            await base.SetStateAsync(PowerModeState.Balance).ConfigureAwait(false);\n            await Task.Delay(TimeSpan.FromMilliseconds(500)).ConfigureAwait(false);\n        }\n\n        if (mi.Properties.HasGodModeToOtherModeSwitchingBug && currentState == PowerModeState.GodMode && state != PowerModeState.GodMode)\n        {\n            thermalModeListener.SuppressNext();\n\n            switch (state)\n            {\n                case PowerModeState.Quiet:\n                    await base.SetStateAsync(PowerModeState.Performance).ConfigureAwait(false);\n                    break;\n                case PowerModeState.Balance:\n                    await base.SetStateAsync(PowerModeState.Quiet).ConfigureAwait(false);\n                    break;\n                case PowerModeState.Performance:\n                    await base.SetStateAsync(PowerModeState.Balance).ConfigureAwait(false);\n                    break;\n            }\n\n            await Task.Delay(TimeSpan.FromMilliseconds(500)).ConfigureAwait(false);\n\n        }\n\n        thermalModeListener.SuppressNext();\n        await base.SetStateAsync(state).ConfigureAwait(false);\n\n        await powerModeListener.NotifyAsync(state).ConfigureAwait(false);\n    }\n\n    public async Task EnsureCorrectWindowsPowerSettingsAreSetAsync()\n    {\n        var state = await GetStateAsync().ConfigureAwait(false);\n        await windowsPowerModeController.SetPowerModeAsync(state).ConfigureAwait(false);\n        await windowsPowerPlanController.SetPowerPlanAsync(state, true).ConfigureAwait(false);\n    }\n\n    public async Task EnsureGodModeStateIsAppliedAsync()\n    {\n        var state = await GetStateAsync().ConfigureAwait(false);\n        if (state != PowerModeState.GodMode)\n            return;\n\n        await godModeController.ApplyStateAsync().ConfigureAwait(false);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/RefreshRateFeature.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing WindowsDisplayAPI;\nusing WindowsDisplayAPI.Native.DeviceContext;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class RefreshRateFeature : IFeature<RefreshRate>\n{\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task<RefreshRate[]> GetAllStatesAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting all refresh rates...\");\n\n        var display = InternalDisplay.Get();\n        if (display is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Built in display not found\");\n\n            return Task.FromResult(Array.Empty<RefreshRate>());\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Built in display found: {display}\");\n\n        var currentSettings = display.CurrentSetting;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Current built in display settings: {currentSettings.ToExtendedString()}\");\n\n        var result = display.GetPossibleSettings()\n            .Where(dps => Match(dps, currentSettings))\n            .Select(dps => dps.Frequency)\n            .Distinct()\n            .OrderBy(freq => freq)\n            .Select(freq => new RefreshRate(freq))\n            .ToArray();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Possible refresh rates are {string.Join(\", \", result)}\");\n\n        return Task.FromResult(result);\n    }\n\n    public Task<RefreshRate> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting current refresh rate...\");\n\n        var display = InternalDisplay.Get();\n        if (display is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Built in display not found\");\n\n            return Task.FromResult(default(RefreshRate));\n        }\n\n        var currentSettings = display.CurrentSetting;\n        var result = new RefreshRate(currentSettings.Frequency);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Current refresh rate is {result} [currentSettings={currentSettings.ToExtendedString()}]\");\n\n        return Task.FromResult(result);\n    }\n\n    public Task SetStateAsync(RefreshRate state)\n    {\n        var display = InternalDisplay.Get();\n        if (display is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Built in display not found\");\n            throw new InvalidOperationException(\"Built in display not found\");\n        }\n\n        var currentSettings = display.CurrentSetting;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Current built in display settings: {currentSettings.ToExtendedString()}\");\n\n        if (currentSettings.Frequency == state.Frequency)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Frequency already set to {state.Frequency}\");\n\n            return Task.CompletedTask;\n        }\n\n        var possibleSettings = display.GetPossibleSettings();\n        var newSettings = possibleSettings\n            .Where(dps => Match(dps, currentSettings))\n            .Where(dps => dps.Frequency == state.Frequency)\n            .Select(dps => new DisplaySetting(dps, currentSettings.Position, currentSettings.Orientation, DisplayFixedOutput.Default))\n            .FirstOrDefault();\n\n        if (newSettings is not null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Setting display to {newSettings.ToExtendedString()}...\");\n\n            display.SetSettingsUsingPathInfo(newSettings);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Display set to {newSettings.ToExtendedString()}\");\n        }\n        else\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Could not find matching settings for frequency {state}\");\n        }\n\n        return Task.CompletedTask;\n    }\n\n    private static bool Match(DisplayPossibleSetting dps, DisplayPossibleSetting ds)\n    {\n        if (dps.IsTooSmall())\n            return false;\n\n        var result = true;\n        result &= dps.Resolution == ds.Resolution;\n        result &= dps.ColorDepth == ds.ColorDepth;\n        result &= dps.IsInterlaced == ds.IsInterlaced;\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/ResolutionFeature.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing WindowsDisplayAPI;\nusing WindowsDisplayAPI.Native.DeviceContext;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class ResolutionFeature : IFeature<Resolution>\n{\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task<Resolution[]> GetAllStatesAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting all resolutions...\");\n\n        var display = InternalDisplay.Get();\n        if (display is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Built in display not found\");\n\n            return Task.FromResult(Array.Empty<Resolution>());\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Built in display found: {display}\");\n\n        var currentSettings = display.CurrentSetting;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Current built in display settings: {currentSettings.ToExtendedString()}\");\n\n        var result = display.GetPossibleSettings()\n            .Where(dps => Match(dps, currentSettings))\n            .Select(dps => dps.Resolution)\n            .Select(res => new Resolution(res))\n            .Distinct()\n            .OrderByDescending(res => res)\n            .ToArray();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Possible resolutions are {string.Join(\", \", result)}\");\n\n        return Task.FromResult(result);\n    }\n\n    public Task<Resolution> GetStateAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting current resolution...\");\n\n        var display = InternalDisplay.Get();\n        if (display is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Built in display not found\");\n\n            return Task.FromResult(default(Resolution));\n        }\n\n        var currentSettings = display.CurrentSetting;\n        var result = new Resolution(currentSettings.Resolution);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Current resolution is {result} [currentSettings={currentSettings.ToExtendedString()}]\");\n\n        return Task.FromResult(result);\n    }\n\n    public Task SetStateAsync(Resolution state)\n    {\n        var display = InternalDisplay.Get();\n        if (display is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Built in display not found\");\n            throw new InvalidOperationException(\"Built in display not found\");\n        }\n\n        var currentSettings = display.CurrentSetting;\n\n        if (currentSettings.Resolution == state)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Resolution already set to {state}\");\n\n            return Task.CompletedTask;\n        }\n\n        var possibleSettings = display.GetPossibleSettings();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Current built in display settings: {currentSettings.ToExtendedString()}\");\n\n        var newSettings = possibleSettings\n            .Where(dps => Match(dps, currentSettings))\n            .Where(dps => dps.Resolution == state)\n            .Select(dps => new DisplaySetting(dps, currentSettings.Position, currentSettings.Orientation, DisplayFixedOutput.Default))\n            .FirstOrDefault();\n\n        if (newSettings is not null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Setting display to {newSettings.ToExtendedString()}\");\n\n            display.SetSettingsUsingPathInfo(newSettings);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Display set to {newSettings.ToExtendedString()}\");\n        }\n        else\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Could not find matching settings for resolution {state}\");\n        }\n\n        return Task.CompletedTask;\n    }\n\n    private static bool Match(DisplayPossibleSetting dps, DisplayPossibleSetting ds)\n    {\n        if (dps.IsTooSmall())\n            return false;\n\n        var result = true;\n        result &= dps.Frequency == ds.Frequency;\n        result &= dps.ColorDepth == ds.ColorDepth;\n        result &= dps.IsInterlaced == ds.IsInterlaced;\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/SpeakerFeature.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing NAudio.CoreAudioApi;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class SpeakerFeature : IFeature<SpeakerState>\n{\n    private readonly MMDeviceEnumerator _enumerator = new();\n\n    private IEnumerable<AudioEndpointVolume> AudioEndpointVolumes => _enumerator.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active).Select(d => d.AudioEndpointVolume);\n\n    public Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var isSupported = AudioEndpointVolumes.Any();\n            return Task.FromResult(isSupported);\n        }\n        catch\n        {\n            return Task.FromResult(false);\n        }\n    }\n\n    public Task<SpeakerState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<SpeakerState>());\n\n    public Task<SpeakerState> GetStateAsync()\n    {\n        var mute = AudioEndpointVolumes.Aggregate(true, (current, v) => current && v.Mute);\n        var result = mute ? SpeakerState.Mute : SpeakerState.Unmute;\n        return Task.FromResult(result);\n    }\n\n    public Task SetStateAsync(SpeakerState state)\n    {\n        var mute = SpeakerState.Mute == state;\n        AudioEndpointVolumes.ForEach(v => v.Mute = mute);\n        return Task.CompletedTask;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/TouchpadLockFeature.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class TouchpadLockFeature()\n    : AbstractWmiFeature<TouchpadLockState>(WMI.LenovoGameZoneData.GetTPStatusStatusAsync, WMI.LenovoGameZoneData.SetTPStatusAsync, WMI.LenovoGameZoneData.IsSupportDisableTPAsync);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/WhiteKeyboardBacklight/WhiteKeyboardBacklightFeature.cs",
    "content": "﻿using System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\n\nnamespace LenovoLegionToolkit.Lib.Features.WhiteKeyboardBacklight;\n\npublic class WhiteKeyboardBacklightFeature(WhiteKeyboardLenovoLightingBacklightFeature feature1,\n    WhiteKeyboardDriverBacklightFeature feature2,\n    SpectrumKeyboardBacklightController spectrumController,\n    RGBKeyboardBacklightController rgbController)\n    : AbstractCompositeFeature<WhiteKeyboardBacklightState>(feature1, feature2)\n{\n    protected override async Task<IFeature<WhiteKeyboardBacklightState>?> ResolveAsync()\n    {\n        if (await spectrumController.IsSupportedAsync().ConfigureAwait(false) || await rgbController.IsSupportedAsync().ConfigureAwait(false))\n            return null;\n\n        return await base.ResolveAsync().ConfigureAwait(false);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/WhiteKeyboardBacklight/WhiteKeyboardDriverBacklightFeature.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.Features.WhiteKeyboardBacklight;\n\npublic class WhiteKeyboardDriverBacklightFeature()\n    : AbstractDriverFeature<WhiteKeyboardBacklightState>(Drivers.GetEnergy, Drivers.IOCTL_ENERGY_KEYBOARD)\n{\n    public override async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var outBuffer = await SendCodeAsync(DriverHandle(), ControlCode, 0x1).ConfigureAwait(false);\n            outBuffer >>= 1;\n            return outBuffer == 0x2;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    protected override uint GetInBufferValue() => 0x22;\n\n    protected override Task<uint[]> ToInternalAsync(WhiteKeyboardBacklightState state)\n    {\n        var result = state switch\n        {\n            WhiteKeyboardBacklightState.Off => new uint[] { 0x00023 },\n            WhiteKeyboardBacklightState.Low => [0x10023],\n            WhiteKeyboardBacklightState.High => [0x20023],\n            _ => throw new InvalidOperationException(\"Invalid state\"),\n        };\n        return Task.FromResult(result);\n    }\n\n    protected override Task<WhiteKeyboardBacklightState> FromInternalAsync(uint state)\n    {\n        var result = state switch\n        {\n            0x1 => WhiteKeyboardBacklightState.Off,\n            0x3 => WhiteKeyboardBacklightState.Low,\n            0x5 => WhiteKeyboardBacklightState.High,\n            _ => throw new InvalidOperationException(\"Invalid state\"),\n        };\n        return Task.FromResult(result);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/WhiteKeyboardBacklight/WhiteKeyboardLenovoLightingBacklightFeature.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Features.WhiteKeyboardBacklight;\n\npublic class WhiteKeyboardLenovoLightingBacklightFeature()\n    : AbstractLenovoLightingFeature<WhiteKeyboardBacklightState>(0, 0, 1)\n{\n    protected override WhiteKeyboardBacklightState FromInternal(int _, int level) => (WhiteKeyboardBacklightState)(level - 1);\n\n    protected override (int stateType, int level) ToInternal(WhiteKeyboardBacklightState state) => (0, (int)(state + 1));\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Features/WinKeyFeature.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Features;\n\npublic class WinKeyFeature()\n    : AbstractWmiFeature<WinKeyState>(WMI.LenovoGameZoneData.GetWinKeyStatusAsync, WMI.LenovoGameZoneData.SetWinKeyStatusAsync, WMI.LenovoGameZoneData.IsSupportDisableWinKeyAsync);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/GameDetection/EffectiveGameModeDetector.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.System.Power;\n\nnamespace LenovoLegionToolkit.Lib.GameDetection;\n\ninternal unsafe class EffectiveGameModeDetector\n{\n    private readonly EFFECTIVE_POWER_MODE_CALLBACK _callbackPointer;\n\n    private IntPtr _handle;\n    private bool? _lastState;\n\n    public event EventHandler<bool>? Changed;\n\n    public EffectiveGameModeDetector()\n    {\n        _callbackPointer = Callback;\n    }\n\n    public Task StartAsync()\n    {\n        var result = PInvoke.PowerRegisterForEffectivePowerModeNotifications(PInvoke.EFFECTIVE_POWER_MODE_V2, _callbackPointer, null, out var handle);\n        if (result == 0)\n            _handle = new IntPtr(handle);\n        return Task.CompletedTask;\n    }\n\n    public Task StopAsync()\n    {\n        PInvoke.PowerUnregisterFromEffectivePowerModeNotifications(_handle.ToPointer());\n        _handle = IntPtr.Zero;\n        return Task.CompletedTask;\n    }\n\n    private void Callback(EFFECTIVE_POWER_MODE mode, void* context)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Effective power mode is {mode}.\");\n\n        var state = mode == EFFECTIVE_POWER_MODE.EffectivePowerModeGameMode;\n\n        _lastState ??= state;\n\n        if (_lastState == state)\n            return;\n\n        _lastState = state;\n\n        Changed?.Invoke(this, state);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/GameDetection/GameConfigStoreDetector.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.GameDetection;\n\ninternal class GameConfigStoreDetector\n{\n    private const string GAME_CONFIG_STORE_HIVE = \"HKEY_CURRENT_USER\";\n    private const string GAME_CONFIG_STORE_PATH = @\"System\\GameConfigStore\\Children\";\n    private const string MATCHED_EXE_FULL_PATH_KEY_NAME = \"MatchedExeFullPath\";\n\n    public class GameDetectedEventArgs(HashSet<ProcessInfo> games) : EventArgs\n    {\n        public HashSet<ProcessInfo> Games { get; } = games;\n    }\n\n    public event EventHandler<GameDetectedEventArgs>? GamesDetected;\n\n    private IAsyncDisposable? _listener;\n\n    public Task StartAsync()\n    {\n        if (_listener is not null)\n            return Task.CompletedTask;\n\n        var lastPaths = GetDetectedGamePaths();\n\n        _listener = Registry.ObserveKey(GAME_CONFIG_STORE_HIVE, GAME_CONFIG_STORE_PATH, true, () =>\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Registry changed...\");\n\n            var newPaths = GetDetectedGamePaths();\n\n            if (!newPaths.SetEquals(lastPaths))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Detected games changed.\");\n\n                GamesDetected?.Invoke(this, new(newPaths));\n            }\n\n            lastPaths = newPaths;\n        });\n\n        return Task.CompletedTask;\n    }\n\n    public async Task StopAsync()\n    {\n        if (_listener is not null)\n            await _listener.DisposeAsync().ConfigureAwait(false);\n        _listener = null;\n    }\n\n    public static HashSet<ProcessInfo> GetDetectedGamePaths()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Detecting games...\");\n\n        var result = new HashSet<ProcessInfo>();\n\n        foreach (var subKey in Registry.GetSubKeys(GAME_CONFIG_STORE_HIVE, GAME_CONFIG_STORE_PATH))\n        {\n            var exePath = Registry.GetValue(GAME_CONFIG_STORE_HIVE, subKey, MATCHED_EXE_FULL_PATH_KEY_NAME, string.Empty);\n            if (string.IsNullOrEmpty(exePath))\n                continue;\n\n            result.Add(ProcessInfo.FromPath(exePath));\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n        {\n            Log.Instance.Trace($\"Detected games:\");\n            foreach (var r in result)\n                Log.Instance.Trace($\" - {r}\");\n        }\n\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/GlobalSuppressions.cs",
    "content": "﻿// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Project-level suppressions either have no target or are given\n// a specific target and scoped to a namespace, type, member, etc.\n\nusing System.Diagnostics.CodeAnalysis;\n\n[assembly: SuppressMessage(\"Performance\", \"CA1822:Mark members as static\")]\n[assembly: SuppressMessage(\"Interoperability\", \"CA1416:Validate platform compatibility\")]\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/HttpClientFactory.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\n\nnamespace LenovoLegionToolkit.Lib;\n\npublic class HttpClientFactory\n{\n    private Uri? _url;\n    private string? _username;\n    private string? _password;\n    private bool _allowAllCerts;\n\n    public HttpClientHandler CreateHandler()\n    {\n        var handler = new HttpClientHandler();\n\n        if (_url is not null)\n        {\n            handler.UseProxy = true;\n            handler.Proxy = new WebProxy(_url)\n            {\n                UseDefaultCredentials = false,\n                BypassProxyOnLocal = false,\n            };\n\n            if (_username is not null && _password is not null)\n                handler.DefaultProxyCredentials = new NetworkCredential(_username, _password);\n\n            if (_allowAllCerts)\n                handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;\n        }\n\n        return handler;\n    }\n\n    public HttpClient Create() => new(CreateHandler(), true);\n\n    public void SetProxy(Uri? url, string? username, string? password, bool allowAllCerts)\n    {\n        _url = url;\n        _username = username;\n        _password = password;\n        _allowAllCerts = allowAllCerts;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Integrations/HWiNFOIntegration.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers.Sensors;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Integrations;\n\npublic class HWiNFOIntegration(SensorsController sensorController, IntegrationsSettings settings)\n{\n    private const string CUSTOM_SENSOR_HIVE = \"HKEY_CURRENT_USER\";\n    private const string CUSTOM_SENSOR_PATH = @\"Software\\HWiNFO64\\Sensors\\Custom\";\n    private const string CUSTOM_SENSOR_GROUP_NAME = \"Lenovo Legion Toolkit\";\n    private const string SENSOR_TYPE_FAN = \"Fan\";\n    private const string SENSOR_TYPE_TEMP = \"Temp\";\n    private const string CPU_FAN_SENSOR_NAME = \"CPU Fan\";\n    private const string GPU_FAN_SENSOR_NAME = \"GPU Fan\";\n    private const string BATTERY_TEMP_SENSOR_NAME = \"Battery Temperature\";\n\n    private readonly TimeSpan _refreshInterval = TimeSpan.FromSeconds(1);\n\n    private CancellationTokenSource? _cts;\n    private Task? _refreshTask;\n\n    public async Task StartStopIfNeededAsync()\n    {\n        await StopAsync().ConfigureAwait(false);\n\n        if (!settings.Store.HWiNFO)\n            return;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Starting...\");\n\n        _cts = new();\n        _refreshTask = RefreshLoopAsync(_cts.Token);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Started.\");\n    }\n\n    public async Task StopAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopping...\");\n\n        if (_cts is not null)\n            await _cts.CancelAsync().ConfigureAwait(false);\n\n        if (_refreshTask is not null)\n            await _refreshTask.ConfigureAwait(false);\n\n        ClearValues();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopped.\");\n    }\n\n    private async Task RefreshLoopAsync(CancellationToken token)\n    {\n        try\n        {\n            await SetSensorValuesAsync().ConfigureAwait(false);\n\n            while (true)\n            {\n                await Task.Delay(_refreshInterval, token).ConfigureAwait(false);\n                await SetSensorValuesAsync(false).ConfigureAwait(false);\n            }\n        }\n        catch (OperationCanceledException) { }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to set values.\", ex);\n        }\n    }\n\n    private async Task SetSensorValuesAsync(bool firstRun = true)\n    {\n        var (cpuFanSpeed, gpuFanSpeed) = await sensorController.GetFanSpeedsAsync().ConfigureAwait(false);\n        var batteryTemp = Battery.GetBatteryTemperatureC();\n\n        SetValue(SENSOR_TYPE_FAN, 0, CPU_FAN_SENSOR_NAME, cpuFanSpeed, firstRun);\n        SetValue(SENSOR_TYPE_FAN, 1, GPU_FAN_SENSOR_NAME, gpuFanSpeed, firstRun);\n\n        var batteryTempString = batteryTemp.HasValue\n            ? batteryTemp.Value.ToString(new NumberFormatInfo { NumberDecimalSeparator = \".\" })\n            : string.Empty;\n        SetValue(SENSOR_TYPE_TEMP, 0, BATTERY_TEMP_SENSOR_NAME, batteryTempString, firstRun);\n    }\n\n    private static void SetValue<T>(string type, int index, string name, T value, bool firstRun) where T : notnull\n    {\n        Registry.SetValue(CUSTOM_SENSOR_HIVE,\n            $@\"{CUSTOM_SENSOR_PATH}\\{CUSTOM_SENSOR_GROUP_NAME}\\{type}{index}\",\n            \"Value\",\n            value);\n\n        if (!firstRun)\n            return;\n\n        Registry.SetValue(CUSTOM_SENSOR_HIVE,\n            $@\"{CUSTOM_SENSOR_PATH}\\{CUSTOM_SENSOR_GROUP_NAME}\\{type}{index}\",\n            \"Name\",\n            name);\n    }\n\n    private static void ClearValues()\n    {\n        try\n        {\n            Registry.Delete(CUSTOM_SENSOR_HIVE, $@\"{CUSTOM_SENSOR_PATH}\\{CUSTOM_SENSOR_GROUP_NAME}\");\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to clear values.\", ex);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Interfaces.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib;\n\npublic interface IDisplayName\n{\n    string DisplayName { get; }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/IoCContainer.cs",
    "content": "﻿using System;\nusing Autofac;\n\nnamespace LenovoLegionToolkit.Lib;\n\npublic static class IoCContainer\n{\n    private static readonly object Lock = new();\n\n    private static IContainer? _container;\n\n    public static void Initialize(params Module[] modules)\n    {\n        lock (Lock)\n        {\n            if (_container is not null)\n                throw new InvalidOperationException(\"IoCContainer already initialized\");\n\n            var cb = new ContainerBuilder();\n\n            foreach (var module in modules)\n                cb.RegisterModule(module);\n\n            _container = cb.Build();\n        }\n    }\n\n    public static T Resolve<T>() where T : notnull\n    {\n        lock (Lock)\n        {\n            if (_container is null)\n                throw new InvalidOperationException($\"IoCContainer must be initialized first [type={nameof(T)}]\");\n            return _container.Resolve<T>();\n        }\n    }\n\n    public static T? TryResolve<T>() where T : class\n    {\n        lock (Lock)\n        {\n            if (_container is null)\n                throw new InvalidOperationException($\"IoCContainer must be initialized first [type={nameof(T)}]\");\n            _ = _container.TryResolve(out T? value);\n            return value;\n        }\n    }\n\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/IoCModule.cs",
    "content": "﻿using Autofac;\nusing LenovoLegionToolkit.Lib.AutoListeners;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Controllers.GodMode;\nusing LenovoLegionToolkit.Lib.Controllers.Sensors;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Features.FlipToStart;\nusing LenovoLegionToolkit.Lib.Features.Hybrid;\nusing LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\nusing LenovoLegionToolkit.Lib.Features.InstantBoot;\nusing LenovoLegionToolkit.Lib.Features.OverDrive;\nusing LenovoLegionToolkit.Lib.Features.PanelLogo;\nusing LenovoLegionToolkit.Lib.Features.WhiteKeyboardBacklight;\nusing LenovoLegionToolkit.Lib.Integrations;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.PackageDownloader;\nusing LenovoLegionToolkit.Lib.Services;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib;\n\npublic class IoCModule : Module\n{\n    protected override void Load(ContainerBuilder builder)\n    {\n        builder.Register<HttpClientFactory>();\n\n        builder.Register<FnKeysDisabler>();\n        builder.Register<LegionZoneDisabler>();\n        builder.Register<VantageDisabler>();\n\n        builder.Register<ApplicationSettings>();\n        builder.Register<BalanceModeSettings>();\n        builder.Register<GodModeSettings>();\n        builder.Register<GPUOverclockSettings>();\n        builder.Register<IntegrationsSettings>();\n        builder.Register<PackageDownloaderSettings>();\n        builder.Register<RGBKeyboardSettings>();\n        builder.Register<SpectrumKeyboardSettings>();\n        builder.Register<SunriseSunsetSettings>();\n        builder.Register<UpdateCheckSettings>();\n\n        builder.Register<AlwaysOnUSBFeature>();\n        builder.Register<BatteryFeature>();\n        builder.Register<BatteryNightChargeFeature>();\n        builder.Register<DpiScaleFeature>();\n        builder.Register<FlipToStartFeature>();\n        builder.Register<FlipToStartCapabilityFeature>(true);\n        builder.Register<FlipToStartUEFIFeature>(true);\n        builder.Register<FnLockFeature>();\n        builder.Register<GSyncFeature>();\n        builder.Register<HDRFeature>();\n        builder.Register<HybridModeFeature>();\n        builder.Register<IGPUModeFeature>();\n        builder.Register<IGPUModeCapabilityFeature>(true);\n        builder.Register<IGPUModeFeatureFlagsFeature>(true);\n        builder.Register<IGPUModeGamezoneFeature>(true);\n        builder.Register<InstantBootFeature>();\n        builder.Register<InstantBootFeatureFlagsFeature>(true);\n        builder.Register<InstantBootCapabilityFeature>(true);\n        builder.Register<MicrophoneFeature>();\n        builder.Register<OneLevelWhiteKeyboardBacklightFeature>();\n        builder.Register<OverDriveFeature>();\n        builder.Register<OverDriveGameZoneFeature>(true);\n        builder.Register<OverDriveCapabilityFeature>(true);\n        builder.Register<PanelLogoBacklightFeature>();\n        builder.Register<PanelLogoSpectrumBacklightFeature>(true);\n        builder.Register<PanelLogoLenovoLightingBacklightFeature>(true);\n        builder.Register<PortsBacklightFeature>();\n        builder.Register<PowerModeFeature>();\n        builder.Register<RefreshRateFeature>();\n        builder.Register<ResolutionFeature>();\n        builder.Register<SpeakerFeature>();\n        builder.Register<TouchpadLockFeature>();\n        builder.Register<WhiteKeyboardBacklightFeature>();\n        builder.Register<WhiteKeyboardDriverBacklightFeature>(true);\n        builder.Register<WhiteKeyboardLenovoLightingBacklightFeature>(true);\n        builder.Register<WinKeyFeature>();\n\n        builder.Register<DGPUNotify>();\n        builder.Register<DGPUCapabilityNotify>(true);\n        builder.Register<DGPUFeatureFlagsNotify>(true);\n        builder.Register<DGPUGamezoneNotify>(true);\n\n        builder.Register<DisplayBrightnessListener>().AutoActivateListener();\n        builder.Register<DisplayConfigurationListener>().AutoActivateListener();\n        builder.Register<DriverKeyListener>().AutoActivateListener();\n        builder.Register<LightingChangeListener>().AutoActivateListener();\n        builder.Register<NativeWindowsMessageListener>().AutoActivateListener();\n        builder.Register<PowerModeListener>().AutoActivateListener();\n        builder.Register<PowerStateListener>().AutoActivateListener();\n        builder.Register<RGBKeyboardBacklightListener>().AutoActivateListener();\n        builder.Register<SessionLockUnlockListener>().AutoActivateListener();\n        builder.Register<SpecialKeyListener>().AutoActivateListener();\n        builder.Register<SystemThemeListener>().AutoActivateListener();\n        builder.Register<ThermalModeListener>().AutoActivateListener();\n        builder.Register<WinKeyListener>().AutoActivateListener();\n\n        builder.Register<GameAutoListener>();\n        builder.Register<InstanceStartedEventAutoAutoListener>();\n        builder.Register<InstanceStoppedEventAutoAutoListener>();\n        builder.Register<ProcessAutoListener>();\n        builder.Register<TimeAutoListener>();\n        builder.Register<UserInactivityAutoListener>();\n        builder.Register<WiFiAutoListener>();\n\n        builder.Register<AIController>();\n        builder.Register<DisplayBrightnessController>();\n        builder.Register<GodModeController>();\n        builder.Register<GodModeControllerV1>(true);\n        builder.Register<GodModeControllerV2>(true);\n        builder.Register<GPUController>();\n        builder.Register<GPUOverclockController>();\n        builder.Register<RGBKeyboardBacklightController>();\n        builder.Register<SensorsController>();\n        builder.Register<SensorsControllerV1>(true);\n        builder.Register<SensorsControllerV2>(true);\n        builder.Register<SensorsControllerV3>(true);\n        builder.Register<SmartFnLockController>();\n        builder.Register<SpectrumKeyboardBacklightController>();\n        builder.Register<WindowsPowerModeController>();\n        builder.Register<WindowsPowerPlanController>();\n\n        builder.Register<UpdateChecker>();\n        builder.Register<WarrantyChecker>();\n\n        builder.Register<PackageDownloaderFactory>();\n        builder.Register<PCSupportPackageDownloader>();\n        builder.Register<VantagePackageDownloader>();\n\n        builder.Register<HWiNFOIntegration>();\n\n        builder.Register<SunriseSunset>();\n\n        builder.Register<BatteryDischargeRateMonitorService>();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/LenovoLegionToolkit.Lib.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<TargetFramework>net8.0-windows</TargetFramework>\n\t\t<RuntimeIdentifier>win-x64</RuntimeIdentifier>\n\t\t<Platforms>x64</Platforms>\n\t\t<Nullable>enable</Nullable>\n\t\t<Copyright>© 2024 Bartosz Cichecki</Copyright>\n\t\t<AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n\t\t<NeutralLanguage>en</NeutralLanguage>\n\t\t<UseWindowsForms>true</UseWindowsForms>\n\t</PropertyGroup>\n\t<ItemGroup>\n\t\t<PackageReference Include=\"Autofac\" Version=\"8.2.0\" />\n\t\t<PackageReference Include=\"Ben.Demystifier\" Version=\"0.4.1\" />\n\t\t<PackageReference Include=\"CoordinateSharp\" Version=\"3.1.1.1\" />\n\t\t<PackageReference Include=\"ManagedNativeWifi\" Version=\"2.7.0\" />\n\t\t<PackageReference Include=\"Microsoft.CSharp\" Version=\"4.7.0\" />\n\t\t<PackageReference Include=\"Microsoft.Win32.SystemEvents\" Version=\"9.0.2\" />\n\t\t<PackageReference Include=\"Microsoft.Windows.CsWin32\" Version=\"0.3.183\">\n\t\t  <PrivateAssets>all</PrivateAssets>\n\t\t  <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n\t\t</PackageReference>\n\t\t<PackageReference Include=\"NAudio.Wasapi\" Version=\"2.2.1\" />\n\t\t<PackageReference Include=\"PubSub\" Version=\"4.0.2\" />\n\t\t<PackageReference Include=\"System.Management\" Version=\"9.0.2\" />\n\t\t<PackageReference Include=\"System.ServiceProcess.ServiceController\" Version=\"9.0.2\" />\n\t\t<PackageReference Include=\"NeoSmart.AsyncLock\" Version=\"3.2.1\" />\n\t\t<PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n\t\t<PackageReference Include=\"NvAPIWrapper.Net\" Version=\"0.8.1.101\" />\n\t\t<PackageReference Include=\"Octokit\" Version=\"14.0.0\" />\n\t\t<PackageReference Include=\"TaskScheduler\" Version=\"2.12.1\" />\n\t\t<PackageReference Include=\"WindowsDisplayAPI\" Version=\"1.3.0.13\" />\n\t</ItemGroup>\n\t<ItemGroup>\n\t  <Compile Update=\"Resources\\Resource.Designer.cs\">\n\t    <DesignTime>True</DesignTime>\n\t    <AutoGen>True</AutoGen>\n\t    <DependentUpon>Resource.resx</DependentUpon>\n\t  </Compile>\n\t</ItemGroup>\n\t<ItemGroup>\n\t  <EmbeddedResource Update=\"Resources\\Resource.resx\">\n\t    <Generator>PublicResXFileCodeGenerator</Generator>\n\t    <LastGenOutput>Resource.Designer.cs</LastGenOutput>\n\t  </EmbeddedResource>\n\t</ItemGroup>\n</Project>\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/LenovoLegionToolkit.Lib.csproj.DotSettings",
    "content": "﻿<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namespace:System;assembly=mscorlib\" xmlns:ss=\"urn:shemas-jetbrains-com:settings-storage-xaml\" xmlns:wpf=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">\n\t<s:String x:Key=\"/Default/CodeInspection/Daemon/ConfigureAwaitAnalysisMode/@EntryValue\">Library</s:String></wpf:ResourceDictionary>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/AbstractEventLogListener.cs",
    "content": "﻿using System;\nusing System.Diagnostics.Eventing.Reader;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic abstract class AbstractEventLogListener : IListener<EventArgs>\n{\n    private readonly EventLogWatcher _watcher;\n\n    public AbstractEventLogListener(string path, string query)\n    {\n        var eventLogQuery = new EventLogQuery(path, PathType.LogName, query);\n        _watcher = new EventLogWatcher(eventLogQuery);\n        _watcher.EventRecordWritten += Watcher_EventRecordWritten;\n    }\n\n    public event EventHandler<EventArgs>? Changed;\n\n    public Task StartAsync()\n    {\n        if (!_watcher.Enabled)\n            _watcher.Enabled = true;\n\n        return Task.CompletedTask;\n    }\n\n    public Task StopAsync()\n    {\n        _watcher.Enabled = false;\n        return Task.CompletedTask;\n    }\n\n    protected abstract Task OnChangedAsync();\n\n    private async void Watcher_EventRecordWritten(object? sender, EventRecordWrittenEventArgs e)\n    {\n        try\n        {\n            await OnChangedAsync().ConfigureAwait(false);\n            Changed?.Invoke(this, EventArgs.Empty);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to handle event.  [listener={GetType().Name}]\", ex);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/AbstractWMIListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic abstract class AbstractWMIListener<TEventArgs, TValue, TRawValue>(Func<Action<TRawValue>, IDisposable> listen)\n    : IListener<TEventArgs>\n    where TEventArgs : EventArgs\n{\n    private IDisposable? _disposable;\n\n    public event EventHandler<TEventArgs>? Changed;\n\n    public Task StartAsync()\n    {\n        try\n        {\n            if (_disposable is not null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Already started. [listener={GetType().Name}]\");\n                return Task.CompletedTask;\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Starting... [listener={GetType().Name}]\");\n\n            _disposable = listen(Handler);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't start listener. [listener={GetType().Name}]\", ex);\n        }\n\n        return Task.CompletedTask;\n    }\n\n    public Task StopAsync()\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Stopping... [listener={GetType().Name}]\");\n\n            _disposable?.Dispose();\n            _disposable = null;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't stop listener. [listener={GetType().Name}]\", ex);\n        }\n\n        return Task.CompletedTask;\n    }\n\n    protected abstract TValue GetValue(TRawValue value);\n\n    protected abstract TEventArgs GetEventArgs(TValue value);\n\n    protected abstract Task OnChangedAsync(TValue value);\n\n    protected void RaiseChanged(TValue value) => Changed?.Invoke(this, GetEventArgs(value));\n\n    private async void Handler(TRawValue properties)\n    {\n        try\n        {\n            var value = GetValue(properties);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Event received. [value={value}, listener={GetType().Name}]\");\n\n            await OnChangedAsync(value).ConfigureAwait(false);\n            RaiseChanged(value);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to handle event.  [listener={GetType().Name}]\", ex);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/DisplayBrightnessListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class DisplayBrightnessListener(WindowsPowerPlanController windowsPowerPlanController, ApplicationSettings settings)\n    : AbstractWMIListener<DisplayBrightnessListener.ChangedEventArgs, Brightness, byte>(WMI.WmiMonitorBrightnessEvent.Listen)\n{\n    public class ChangedEventArgs(Brightness brightness) : EventArgs\n    {\n        public Brightness Brightness { get; } = brightness;\n    }\n\n    private readonly ThrottleLastDispatcher _dispatcher = new(TimeSpan.FromSeconds(2), nameof(DisplayBrightnessListener));\n\n    protected override Brightness GetValue(byte value) => new(value);\n\n    protected override ChangedEventArgs GetEventArgs(Brightness value) => new(value);\n\n    protected override async Task OnChangedAsync(Brightness value) => await SynchronizeBrightnessAsync(value).ConfigureAwait(false);\n\n    private async Task SynchronizeBrightnessAsync(Brightness value)\n    {\n        if (!settings.Store.SynchronizeBrightnessToAllPowerPlans)\n            return;\n\n        await _dispatcher.DispatchAsync(() =>\n        {\n            SetBrightnessForAllPowerPlans(value);\n            return Task.CompletedTask;\n        }).ConfigureAwait(false);\n    }\n\n    private void SetBrightnessForAllPowerPlans(Brightness brightness)\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Setting brightness to {brightness.Value}...\");\n\n            var powerPlans = windowsPowerPlanController.GetPowerPlans();\n\n            foreach (var powerPlan in powerPlans)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Modifying power plan {powerPlan.Name}... [powerPlan.Guid={powerPlan.Guid}, brightness={brightness.Value}]\");\n\n                windowsPowerPlanController.SetPowerPlanParameter(powerPlan, brightness);\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Brightness set to {brightness.Value}.\");\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to set brightness to {brightness.Value}.\", ex);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/DisplayConfigurationListener.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class DisplayConfigurationListener : IListener<DisplayConfigurationListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs : EventArgs\n    {\n        public bool? HDR { get; init; }\n    }\n\n    private bool _started;\n\n    public bool? IsHDROn { get; private set; }\n\n    public event EventHandler<ChangedEventArgs>? Changed;\n\n    public Task StartAsync()\n    {\n        if (_started)\n            return Task.CompletedTask;\n\n        IsHDROn = GetHDRStatus();\n\n        SystemEvents.DisplaySettingsChanged += SystemEvents_DisplaySettingsChanged;\n        _started = true;\n\n        return Task.CompletedTask;\n    }\n\n    public Task StopAsync()\n    {\n        SystemEvents.DisplaySettingsChanged -= SystemEvents_DisplaySettingsChanged;\n        _started = false;\n\n        IsHDROn = null;\n\n        return Task.CompletedTask;\n    }\n\n    private void SystemEvents_DisplaySettingsChanged(object? sender, EventArgs e)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Event received.\");\n\n        InternalDisplay.SetNeedsRefresh();\n\n        var previousIsHDROn = IsHDROn;\n        IsHDROn = GetHDRStatus();\n        var changed = previousIsHDROn != IsHDROn;\n\n        Changed?.Invoke(this, new() { HDR = changed ? IsHDROn : null });\n    }\n\n    private static bool? GetHDRStatus()\n    {\n        try\n        {\n            return Displays.Get().FirstOrDefault()?.GetAdvancedColorInfo().AdvancedColorEnabled;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to get HDR status. Assuming unavailable.\", ex);\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/DriverKeyListener.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Features.WhiteKeyboardBacklight;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class DriverKeyListener(\n    FnKeysDisabler fnKeysDisabler,\n    MicrophoneFeature microphoneFeature,\n    TouchpadLockFeature touchpadLockFeature,\n    WhiteKeyboardBacklightFeature whiteKeyboardBacklightFeature)\n    : IListener<DriverKeyListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(DriverKey driverKey) : EventArgs\n    {\n        public DriverKey DriverKey { get; } = driverKey;\n    }\n\n    public event EventHandler<ChangedEventArgs>? Changed;\n\n    private CancellationTokenSource? _cancellationTokenSource;\n    private Task? _listenTask;\n\n    public Task StartAsync()\n    {\n        if (_listenTask is not null)\n            return Task.CompletedTask;\n\n        _cancellationTokenSource = new();\n        _listenTask = Task.Run(() => HandlerAsync(_cancellationTokenSource.Token));\n\n        return Task.CompletedTask;\n    }\n\n    public async Task StopAsync()\n    {\n        if (_cancellationTokenSource is not null)\n            await _cancellationTokenSource.CancelAsync().ConfigureAwait(false);\n\n        _cancellationTokenSource = null;\n\n        if (_listenTask is not null)\n            await _listenTask;\n\n        _listenTask = null;\n    }\n\n    private async Task HandlerAsync(CancellationToken token)\n    {\n        try\n        {\n            var resetEvent = new ManualResetEvent(false);\n            var setHandleResult = BindListener(resetEvent);\n            if (!setHandleResult)\n                PInvokeExtensions.ThrowIfWin32Error(\"DeviceIoControl, setHandleResult\");\n\n            GetValue(out _); // Clear register\n\n            while (true)\n            {\n                WaitHandle.WaitAny([resetEvent, token.WaitHandle]);\n\n                token.ThrowIfCancellationRequested();\n\n                if (await fnKeysDisabler.GetStatusAsync().ConfigureAwait(false) == SoftwareStatus.Enabled)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Ignoring, FnKeys are enabled.\");\n\n                    resetEvent.Reset();\n                    continue;\n                }\n\n                var getValueResult = GetValue(out var value);\n                if (!getValueResult)\n                    PInvokeExtensions.ThrowIfWin32Error(\"DeviceIoControl, getValueResult\");\n\n                var key = (DriverKey)value;\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Event received. [key={key}, value={value}]\");\n\n                await OnChangedAsync(key).ConfigureAwait(false);\n                Changed?.Invoke(this, new(key));\n\n                resetEvent.Reset();\n            }\n        }\n        catch (OperationCanceledException) { }\n        catch (ThreadAbortException) { }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Unknown error.\", ex);\n        }\n    }\n\n    private async Task OnChangedAsync(DriverKey value)\n    {\n        try\n        {\n            if (value.HasFlag(DriverKey.FnF4))\n            {\n                if (await microphoneFeature.IsSupportedAsync().ConfigureAwait(false))\n                {\n                    switch (await microphoneFeature.GetStateAsync().ConfigureAwait(false))\n                    {\n                        case MicrophoneState.On:\n                            await microphoneFeature.SetStateAsync(MicrophoneState.Off).ConfigureAwait(false);\n                            MessagingCenter.Publish(new NotificationMessage(NotificationType.MicrophoneOff));\n                            break;\n                        case MicrophoneState.Off:\n                            await microphoneFeature.SetStateAsync(MicrophoneState.On).ConfigureAwait(false);\n                            MessagingCenter.Publish(new NotificationMessage(NotificationType.MicrophoneOn));\n                            break;\n                    }\n                }\n            }\n\n            if (value.HasFlag(DriverKey.FnF8))\n                AirplaneMode.Open();\n\n            if (value.HasFlag(DriverKey.FnF10))\n            {\n                if (await touchpadLockFeature.IsSupportedAsync().ConfigureAwait(false))\n                {\n                    var status = await touchpadLockFeature.GetStateAsync().ConfigureAwait(false);\n                    MessagingCenter.Publish(status == TouchpadLockState.Off\n                        ? new NotificationMessage(NotificationType.TouchpadOn)\n                        : new NotificationMessage(NotificationType.TouchpadOff));\n                }\n            }\n\n            if (value.HasFlag(DriverKey.FnSpace))\n            {\n                if (await whiteKeyboardBacklightFeature.IsSupportedAsync().ConfigureAwait(false))\n                {\n                    var state = await whiteKeyboardBacklightFeature.GetStateAsync().ConfigureAwait(false);\n                    MessagingCenter.Publish(state == WhiteKeyboardBacklightState.Off\n                        ? new NotificationMessage(NotificationType.WhiteKeyboardBacklightOff, state.GetDisplayName())\n                        : new NotificationMessage(NotificationType.WhiteKeyboardBacklightChanged, state.GetDisplayName()));\n                }\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't handle key press. [value={value}]\", ex);\n        }\n    }\n\n    private static unsafe bool BindListener(WaitHandle waitHandle)\n    {\n        var handle = (uint)waitHandle.SafeWaitHandle.DangerousGetHandle();\n        return PInvoke.DeviceIoControl(Drivers.GetEnergy(),\n            Drivers.IOCTL_KEY_WAIT_HANDLE,\n            &handle,\n            16,\n            null,\n            0,\n            null,\n            null);\n    }\n\n    private static unsafe bool GetValue(out uint value)\n    {\n        uint inBuff = 0;\n        uint outBuff = 0;\n        var result = PInvoke.DeviceIoControl(Drivers.GetEnergy(),\n            Drivers.IOCTL_KEY_VALUE,\n            &inBuff,\n            4,\n            &outBuff,\n            4,\n            null,\n            null);\n        value = outBuff;\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/IListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic interface IListener<TEventArgs> where TEventArgs : EventArgs\n{\n    event EventHandler<TEventArgs>? Changed;\n\n    Task StartAsync();\n\n    Task StopAsync();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/INotifyingListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic interface INotifyingListener<TEventArgs, in TValue> : IListener<TEventArgs> where TEventArgs : EventArgs\n{\n    Task NotifyAsync(TValue value);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/LightingChangeListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Features.PanelLogo;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class LightingChangeListener(\n    PanelLogoBacklightFeature panelLogoBacklightFeature,\n    PortsBacklightFeature portsBacklightFeature,\n    FnKeysDisabler fnKeysDisabler)\n    : AbstractWMIListener<LightingChangeListener.ChangedEventArgs, LightingChangeState, int>(WMI.LenovoLightingEvent\n        .Listen)\n{\n    public class ChangedEventArgs(LightingChangeState state) : EventArgs\n    {\n        public LightingChangeState State { get; } = state;\n    }\n\n    protected override LightingChangeState GetValue(int value)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Event received. [value={value}]\");\n\n        var result = (LightingChangeState)value;\n        return result;\n    }\n\n    protected override ChangedEventArgs GetEventArgs(LightingChangeState value) => new(value);\n\n    protected override async Task OnChangedAsync(LightingChangeState value)\n    {\n        try\n        {\n            if (await fnKeysDisabler.GetStatusAsync().ConfigureAwait(false) == SoftwareStatus.Enabled)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Ignoring, FnKeys are enabled.\");\n\n                return;\n            }\n\n            switch (value)\n            {\n                case LightingChangeState.Panel when await panelLogoBacklightFeature.IsSupportedAsync().ConfigureAwait(false):\n                    {\n                        var type = await panelLogoBacklightFeature.GetStateAsync().ConfigureAwait(false) == PanelLogoBacklightState.On\n                            ? NotificationType.PanelLogoLightingOn\n                            : NotificationType.PanelLogoLightingOff;\n\n                        MessagingCenter.Publish(new NotificationMessage(type));\n                        break;\n                    }\n                case LightingChangeState.Ports when await portsBacklightFeature.IsSupportedAsync().ConfigureAwait(false):\n                    {\n                        var type = await portsBacklightFeature.GetStateAsync().ConfigureAwait(false) == PortsBacklightState.On\n                            ? NotificationType.PortLightingOn\n                            : NotificationType.PortLightingOff;\n\n                        MessagingCenter.Publish(new NotificationMessage(type));\n                        break;\n                    }\n            }\n        }\n        catch { /* Ignored. */ }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/NativeWindowsMessageListener.cs",
    "content": "﻿using System;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.System.Power;\nusing Windows.Win32.UI.Input.KeyboardAndMouse;\nusing Windows.Win32.UI.WindowsAndMessaging;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class NativeWindowsMessageListener : NativeWindow, IListener<NativeWindowsMessageListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(NativeWindowsMessage message, object? data = null) : EventArgs\n    {\n        public NativeWindowsMessage Message { get; } = message;\n        public object? Data { get; } = data;\n    }\n\n    private readonly IMainThreadDispatcher _mainThreadDispatcher;\n    private readonly DGPUNotify _dgpuNotify;\n    private readonly SmartFnLockController _smartFnLockController;\n    private readonly PowerModeFeature _powerModeFeature;\n\n    private readonly HOOKPROC _kbProc;\n\n    private readonly TaskCompletionSource _isMonitorOnTaskCompletionSource = new();\n    private readonly TaskCompletionSource _isLidOpenTaskCompletionSource = new();\n\n    private HDEVNOTIFY _deviceNotificationHandle;\n    private HPOWERNOTIFY _consoleDisplayStateNotificationHandle;\n    private HPOWERNOTIFY _lidSwitchStateChangeNotificationHandle;\n    private HPOWERNOTIFY _powerSavingStateChangeNotificationHandle;\n    private HHOOK _kbHook;\n\n    public bool IsMonitorOn { get; private set; }\n    public bool IsLidOpen { get; private set; }\n\n    public event EventHandler<ChangedEventArgs>? Changed;\n\n    public NativeWindowsMessageListener(IMainThreadDispatcher mainThreadDispatcher, DGPUNotify dgpuNotify, SmartFnLockController smartFnLockController, PowerModeFeature powerModeFeature)\n    {\n        _mainThreadDispatcher = mainThreadDispatcher;\n        _dgpuNotify = dgpuNotify;\n        _smartFnLockController = smartFnLockController;\n        _powerModeFeature = powerModeFeature;\n\n        _kbProc = LowLevelKeyboardProc;\n    }\n\n    public async Task TurnOffMonitorAsync()\n    {\n        await Task.Delay(TimeSpan.FromSeconds(1)).ConfigureAwait(false);\n        await _mainThreadDispatcher.DispatchAsync(() =>\n        {\n            PInvoke.SendMessage(new HWND(Handle), PInvoke.WM_SYSCOMMAND, new WPARAM(PInvoke.SC_MONITORPOWER), new LPARAM(2));\n            return Task.CompletedTask;\n        }).ConfigureAwait(false);\n    }\n\n    public Task StartAsync() => _mainThreadDispatcher.DispatchAsync(() =>\n    {\n        CreateHandle(new CreateParams\n        {\n            Caption = \"LenovoLegionToolkit_MessageWindow\",\n            Parent = new IntPtr(-3)\n        });\n\n        _kbHook = PInvoke.SetWindowsHookEx(WINDOWS_HOOK_ID.WH_KEYBOARD_LL, _kbProc, HINSTANCE.Null, 0);\n\n        _deviceNotificationHandle = RegisterDeviceNotification(Handle);\n        _consoleDisplayStateNotificationHandle = RegisterPowerNotification(PInvoke.GUID_CONSOLE_DISPLAY_STATE);\n        _lidSwitchStateChangeNotificationHandle = RegisterPowerNotification(PInvoke.GUID_LIDSWITCH_STATE_CHANGE);\n        _powerSavingStateChangeNotificationHandle = RegisterPowerNotification(PInvoke.GUID_POWER_SAVING_STATUS);\n\n        return WaitForInit();\n    });\n\n    public Task StopAsync() => _mainThreadDispatcher.DispatchAsync(() =>\n    {\n        PInvoke.UnhookWindowsHookEx(_kbHook);\n\n        PInvoke.UnregisterDeviceNotification(_deviceNotificationHandle);\n        PInvoke.UnregisterPowerSettingNotification(_consoleDisplayStateNotificationHandle);\n        PInvoke.UnregisterPowerSettingNotification(_lidSwitchStateChangeNotificationHandle);\n        PInvoke.UnregisterPowerSettingNotification(_powerSavingStateChangeNotificationHandle);\n\n        _kbHook = default;\n        _deviceNotificationHandle = default;\n        _consoleDisplayStateNotificationHandle = default;\n\n        ReleaseHandle();\n\n        return Task.CompletedTask;\n    });\n\n    protected override unsafe void WndProc(ref Message m)\n    {\n        if (m.Msg == PInvoke.WM_DEVICECHANGE && m.LParam != IntPtr.Zero)\n        {\n            ref var devBroadcastHdr = ref Unsafe.AsRef<DEV_BROADCAST_HDR>((void*)m.LParam);\n            if (devBroadcastHdr.dbch_devicetype == DEV_BROADCAST_HDR_DEVICE_TYPE.DBT_DEVTYP_DEVICEINTERFACE)\n            {\n                ref var devBroadcastDeviceInterface = ref Unsafe.AsRef<DEV_BROADCAST_DEVICEINTERFACE_W>((void*)m.LParam);\n                var length = ((int)devBroadcastDeviceInterface.dbcc_size - sizeof(DEV_BROADCAST_DEVICEINTERFACE_W)) / sizeof(char);\n                var name = devBroadcastDeviceInterface.dbcc_name.AsSpan(length).ToString();\n\n                var state = (uint)m.WParam.ToInt32();\n                switch (state)\n                {\n                    case PInvoke.DBT_DEVICEARRIVAL:\n                        {\n                            if (Log.Instance.IsTraceEnabled)\n                                Log.Instance.Trace($\"Event received: Device Arrival [name={name}]\");\n\n                            OnDeviceConnected(name);\n                            break;\n                        }\n                    case PInvoke.DBT_DEVICEREMOVECOMPLETE:\n                        {\n                            if (Log.Instance.IsTraceEnabled)\n                                Log.Instance.Trace($\"Event received: Device Removal Complete [name={name}]\");\n\n                            OnDeviceDisconnected(name);\n                            break;\n                        }\n                }\n\n                if (devBroadcastDeviceInterface.dbcc_classguid == PInvoke.GUID_DISPLAY_DEVICE_ARRIVAL)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Event received: Display Device Arrival\");\n\n                    OnDisplayDeviceArrival();\n                }\n\n                if (devBroadcastDeviceInterface.dbcc_classguid == PInvoke.GUID_DEVINTERFACE_MONITOR)\n                {\n                    var id = InternalDisplay.Get();\n                    var isExternal = !name.Equals(id?.DevicePath, StringComparison.Ordinal);\n\n                    switch (state)\n                    {\n                        case PInvoke.DBT_DEVICEARRIVAL:\n                            {\n                                if (Log.Instance.IsTraceEnabled)\n                                    Log.Instance.Trace($\"Event received: Monitor Connected\");\n\n                                OnMonitorConnected(isExternal);\n                                break;\n                            }\n                        case PInvoke.DBT_DEVICEREMOVECOMPLETE:\n                            {\n                                if (Log.Instance.IsTraceEnabled)\n                                    Log.Instance.Trace($\"Event received: Monitor Disconnected\");\n\n                                OnMonitorDisconnected(isExternal);\n                                break;\n                            }\n                    }\n                }\n            }\n        }\n\n        if (m.Msg == PInvoke.WM_POWERBROADCAST && m.WParam == (IntPtr)PInvoke.PBT_POWERSETTINGCHANGE && m.LParam != IntPtr.Zero)\n        {\n            ref var str = ref Unsafe.AsRef<POWERBROADCAST_SETTING>((void*)m.LParam);\n\n            if (str.PowerSetting == PInvoke.GUID_CONSOLE_DISPLAY_STATE)\n            {\n                var state = (PInvokeExtensions.CONSOLE_DISPLAY_STATE)str.Data[0];\n                switch (state)\n                {\n                    case PInvokeExtensions.CONSOLE_DISPLAY_STATE.On:\n                        {\n                            if (Log.Instance.IsTraceEnabled)\n                                Log.Instance.Trace($\"Event received: Monitor On\");\n\n                            OnMonitorOn();\n                            break;\n                        }\n                    case PInvokeExtensions.CONSOLE_DISPLAY_STATE.Off:\n                        {\n                            if (Log.Instance.IsTraceEnabled)\n                                Log.Instance.Trace($\"Event received: Monitor Off\");\n\n                            OnMonitorOff();\n                            break;\n                        }\n                }\n            }\n\n            if (str.PowerSetting == PInvoke.GUID_LIDSWITCH_STATE_CHANGE)\n            {\n                var isOpened = str.Data[0] != 0;\n                if (isOpened)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Event received: Lid Opened\");\n\n                    OnLidOpened();\n                }\n                else\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Event received: Lid Closed\");\n\n                    OnLidClosed();\n                }\n            }\n\n            if (str.PowerSetting == PInvoke.GUID_POWER_SAVING_STATUS && str.Data[0] == 0)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Event received: Battery Saver enabled\");\n\n                OnBatterySaverEnabled();\n            }\n        }\n\n        base.WndProc(ref m);\n    }\n\n    private async Task WaitForInit()\n    {\n        var delayTask = Task.Delay(TimeSpan.FromSeconds(3));\n        var task = Task.WhenAll(\n            _isMonitorOnTaskCompletionSource.Task,\n            _isLidOpenTaskCompletionSource.Task\n        );\n\n        var completed = await Task.WhenAny(task, delayTask).ConfigureAwait(false);\n\n        if (completed == delayTask)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Delay expired, state might be inconsistent! [IsMonitorOn={IsMonitorOn}, IsLidOpen={IsLidOpen}]\");\n        }\n    }\n\n    private void OnMonitorOn()\n    {\n        IsMonitorOn = true;\n        _isMonitorOnTaskCompletionSource.TrySetResult();\n\n        RaiseChanged(NativeWindowsMessage.MonitorOn);\n    }\n\n    private void OnMonitorOff()\n    {\n        IsMonitorOn = false;\n        _isMonitorOnTaskCompletionSource.TrySetResult();\n\n        RaiseChanged(NativeWindowsMessage.MonitorOff);\n    }\n\n    private void OnLidOpened()\n    {\n        IsLidOpen = true;\n        _isLidOpenTaskCompletionSource.TrySetResult();\n\n        RaiseChanged(NativeWindowsMessage.LidOpened);\n    }\n\n    private void OnLidClosed()\n    {\n        IsLidOpen = false;\n        _isLidOpenTaskCompletionSource.TrySetResult();\n\n        RaiseChanged(NativeWindowsMessage.LidClosed);\n    }\n\n    private void OnBatterySaverEnabled()\n    {\n        Task.Run(_powerModeFeature.EnsureCorrectWindowsPowerSettingsAreSetAsync);\n\n        RaiseChanged(NativeWindowsMessage.BatterySaverEnabled);\n    }\n\n    private void OnDeviceConnected(string name)\n    {\n        RaiseChanged(NativeWindowsMessage.DeviceConnected, ConvertDeviceNameToDeviceInstanceId(name));\n    }\n\n    private void OnDeviceDisconnected(string name)\n    {\n        RaiseChanged(NativeWindowsMessage.DeviceDisconnected, ConvertDeviceNameToDeviceInstanceId(name));\n    }\n\n    private void OnMonitorConnected(bool isExternal)\n    {\n        RaiseChanged(NativeWindowsMessage.MonitorConnected);\n\n        if (isExternal)\n            RaiseChanged(NativeWindowsMessage.ExternalMonitorConnected);\n    }\n\n    private void OnMonitorDisconnected(bool isExternal)\n    {\n        RaiseChanged(NativeWindowsMessage.MonitorDisconnected);\n\n        if (isExternal)\n            RaiseChanged(NativeWindowsMessage.ExternalMonitorDisconnected);\n    }\n\n    private void OnDisplayDeviceArrival()\n    {\n        Task.Run(async () =>\n        {\n            if (await _dgpuNotify.IsSupportedAsync().ConfigureAwait(false))\n                await _dgpuNotify.NotifyAsync().ConfigureAwait(false);\n        });\n\n        RaiseChanged(NativeWindowsMessage.OnDisplayDeviceArrival);\n    }\n\n    private void RaiseChanged(NativeWindowsMessage message, object? data = null) => Changed?.Invoke(this, new ChangedEventArgs(message, data));\n\n    private unsafe LRESULT LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)\n    {\n        if (nCode != PInvoke.HC_ACTION)\n            return PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam);\n\n        ref var kbStruct = ref Unsafe.AsRef<KBDLLHOOKSTRUCT>((void*)lParam.Value);\n\n        _smartFnLockController.OnKeyboardEvent(wParam.Value, kbStruct);\n\n        if (wParam.Value != PInvoke.WM_KEYUP)\n            return PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam);\n\n        if (kbStruct.vkCode == (ulong)VIRTUAL_KEY.VK_CAPITAL)\n        {\n            var isOn = (PInvoke.GetKeyState((int)VIRTUAL_KEY.VK_CAPITAL) & 0x1) != 0;\n            var type = isOn ? NotificationType.CapsLockOn : NotificationType.CapsLockOff;\n            MessagingCenter.Publish(new NotificationMessage(type));\n        }\n\n        if (kbStruct.vkCode == (ulong)VIRTUAL_KEY.VK_NUMLOCK)\n        {\n            var isOn = (PInvoke.GetKeyState((int)VIRTUAL_KEY.VK_NUMLOCK) & 0x1) != 0;\n            var type = isOn ? NotificationType.NumLockOn : NotificationType.NumLockOff;\n            MessagingCenter.Publish(new NotificationMessage(type));\n        }\n\n        return PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam);\n    }\n\n    private static unsafe HDEVNOTIFY RegisterDeviceNotification(IntPtr handle)\n    {\n        var ptr = IntPtr.Zero;\n        try\n        {\n            var str = new DEV_BROADCAST_DEVICEINTERFACE_W();\n            str.dbcc_size = (uint)Marshal.SizeOf(str);\n            str.dbcc_devicetype = (uint)DEV_BROADCAST_HDR_DEVICE_TYPE.DBT_DEVTYP_DEVICEINTERFACE;\n            ptr = Marshal.AllocHGlobal(Marshal.SizeOf(str));\n            Marshal.StructureToPtr(str, ptr, true);\n            return PInvoke.RegisterDeviceNotification(new HANDLE(handle),\n                ptr.ToPointer(),\n                REGISTER_NOTIFICATION_FLAGS.DEVICE_NOTIFY_WINDOW_HANDLE | REGISTER_NOTIFICATION_FLAGS.DEVICE_NOTIFY_ALL_INTERFACE_CLASSES);\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n        }\n    }\n\n    private unsafe HPOWERNOTIFY RegisterPowerNotification(Guid guid)\n    {\n        return PInvoke.RegisterPowerSettingNotification(new HANDLE(Handle), &guid, 0);\n    }\n\n    private static string? ConvertDeviceNameToDeviceInstanceId(string name)\n    {\n        var parts = name.Split('#');\n        if (parts.Length < 3)\n            return null;\n\n        var part1 = parts[0].TrimStart('\\\\', '?');\n        var part2 = parts[1].Replace('#', '\\\\');\n        var part3 = parts[2];\n        return $@\"{part1}\\{part2}\\{part3}\".ToUpperInvariant();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/PowerModeListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Controllers.GodMode;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class PowerModeListener(\n    GodModeController godModeController,\n    WindowsPowerModeController windowsPowerModeController,\n    WindowsPowerPlanController windowsPowerPlanController)\n    : AbstractWMIListener<PowerModeListener.ChangedEventArgs, PowerModeState, int>(WMI.LenovoGameZoneSmartFanModeEvent.Listen), INotifyingListener<PowerModeListener.ChangedEventArgs, PowerModeState>\n{\n    public class ChangedEventArgs(PowerModeState state) : EventArgs\n    {\n        public PowerModeState State { get; } = state;\n    }\n\n    protected override PowerModeState GetValue(int value)\n    {\n        var result = (PowerModeState)(value - 1);\n        return result;\n    }\n\n    protected override ChangedEventArgs GetEventArgs(PowerModeState value) => new(value);\n\n    protected override async Task OnChangedAsync(PowerModeState value)\n    {\n        await ChangeDependenciesAsync(value).ConfigureAwait(false);\n        PublishNotification(value);\n    }\n\n    public async Task NotifyAsync(PowerModeState value)\n    {\n        await ChangeDependenciesAsync(value).ConfigureAwait(false);\n        RaiseChanged(value);\n    }\n\n    private async Task ChangeDependenciesAsync(PowerModeState value)\n    {\n        if (value is PowerModeState.GodMode)\n            await godModeController.ApplyStateAsync().ConfigureAwait(false);\n\n        await windowsPowerModeController.SetPowerModeAsync(value).ConfigureAwait(false);\n        await windowsPowerPlanController.SetPowerPlanAsync(value).ConfigureAwait(false);\n    }\n\n    private static void PublishNotification(PowerModeState value)\n    {\n        switch (value)\n        {\n            case PowerModeState.Quiet:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.PowerModeQuiet, value.GetDisplayName()));\n                break;\n            case PowerModeState.Balance:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.PowerModeBalance, value.GetDisplayName()));\n                break;\n            case PowerModeState.Performance:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.PowerModePerformance, value.GetDisplayName()));\n                break;\n            case PowerModeState.GodMode:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.PowerModeGodMode, value.GetDisplayName()));\n                break;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/PowerStateListener.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.System.Power;\nusing Windows.Win32.UI.WindowsAndMessaging;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class PowerStateListener : IListener<PowerStateListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(PowerStateEvent powerStateEvent, bool powerAdapterStateChanged) : EventArgs\n    {\n        public PowerStateEvent PowerStateEvent { get; } = powerStateEvent;\n        public bool PowerAdapterStateChanged { get; } = powerAdapterStateChanged;\n    }\n\n    private readonly SafeHandle _recipientHandle;\n    // ReSharper disable once PrivateFieldCanBeConvertedToLocalVariable\n    private readonly PDEVICE_NOTIFY_CALLBACK_ROUTINE _callback;\n\n    private readonly PowerModeFeature _powerModeFeature;\n    private readonly BatteryFeature _batteryFeature;\n    private readonly DGPUNotify _dgpuNotify;\n    private readonly RGBKeyboardBacklightController _rgbController;\n\n    private bool _started;\n    private HPOWERNOTIFY _handle;\n    private PowerAdapterStatus? _lastPowerAdapterState;\n\n    public event EventHandler<ChangedEventArgs>? Changed;\n\n    public unsafe PowerStateListener(PowerModeFeature powerModeFeature, BatteryFeature batteryFeature, DGPUNotify dgpuNotify, RGBKeyboardBacklightController rgbController)\n    {\n        _powerModeFeature = powerModeFeature;\n        _batteryFeature = batteryFeature;\n        _dgpuNotify = dgpuNotify;\n        _rgbController = rgbController;\n\n        _callback = Callback;\n        _recipientHandle = new StructSafeHandle<DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS>(new DEVICE_NOTIFY_SUBSCRIBE_PARAMETERS\n        {\n            Callback = _callback,\n            Context = null,\n        });\n    }\n\n    public async Task StartAsync()\n    {\n        if (_started)\n            return;\n\n        _lastPowerAdapterState = await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false);\n\n        SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;\n        RegisterSuspendResumeNotification();\n\n        _started = true;\n    }\n\n    public Task StopAsync()\n    {\n        SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged;\n        UnRegisterSuspendResumeNotification();\n\n        _started = false;\n\n        return Task.CompletedTask;\n    }\n\n    private async void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Event received: {e.Mode}\");\n\n        var powerMode = e.Mode switch\n        {\n            PowerModes.StatusChange => PowerStateEvent.StatusChange,\n            PowerModes.Resume => PowerStateEvent.Resume,\n            PowerModes.Suspend => PowerStateEvent.Suspend,\n            _ => PowerStateEvent.Unknown\n        };\n\n        if (powerMode is PowerStateEvent.Unknown)\n            return;\n\n        await HandleAsync(powerMode).ConfigureAwait(false);\n    }\n\n    private unsafe uint Callback(void* context, uint type, void* setting)\n    {\n        _ = Task.Run(() => CallbackAsync(type));\n        return (uint)WIN32_ERROR.ERROR_SUCCESS;\n    }\n\n    private async Task CallbackAsync(uint type)\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n        if (!mi.Properties.SupportsAlwaysOnAc.status)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Ignoring, AO AC not enabled...\");\n\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Event value: {type}\");\n\n        var powerMode = type switch\n        {\n            PInvoke.PBT_APMRESUMEAUTOMATIC => PowerStateEvent.Resume,\n            _ => PowerStateEvent.Unknown\n        };\n\n        if (powerMode is not PowerStateEvent.Resume)\n            return;\n\n        await HandleAsync(powerMode).ConfigureAwait(false);\n    }\n\n    private async Task HandleAsync(PowerStateEvent powerStateEvent)\n    {\n        var powerAdapterState = await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Handle {powerStateEvent}. [newState={powerAdapterState}]\");\n\n        if (powerStateEvent is PowerStateEvent.Resume)\n        {\n            _ = Task.Run(async () =>\n            {\n                if (await _batteryFeature.IsSupportedAsync().ConfigureAwait(false))\n                    await _batteryFeature.EnsureCorrectBatteryModeIsSetAsync().ConfigureAwait(false);\n\n                if (await _rgbController.IsSupportedAsync().ConfigureAwait(false))\n                    await _rgbController.SetLightControlOwnerAsync(true, true).ConfigureAwait(false);\n\n                if (await _powerModeFeature.IsSupportedAsync().ConfigureAwait(false))\n                {\n                    await _powerModeFeature.EnsureCorrectWindowsPowerSettingsAreSetAsync().ConfigureAwait(false);\n                    await _powerModeFeature.EnsureGodModeStateIsAppliedAsync().ConfigureAwait(false);\n                }\n\n                if (await _dgpuNotify.IsSupportedAsync().ConfigureAwait(false))\n                {\n                    await Task.Delay(TimeSpan.FromSeconds(5)).ConfigureAwait(false);\n                    await _dgpuNotify.NotifyAsync().ConfigureAwait(false);\n                }\n            });\n        }\n\n        if (powerStateEvent is PowerStateEvent.StatusChange && powerAdapterState is PowerAdapterStatus.Connected)\n        {\n            _ = Task.Run(async () =>\n            {\n                if (await _powerModeFeature.IsSupportedAsync().ConfigureAwait(false))\n                    await _powerModeFeature.EnsureGodModeStateIsAppliedAsync().ConfigureAwait(false);\n\n                if (await _dgpuNotify.IsSupportedAsync().ConfigureAwait(false))\n                {\n                    await Task.Delay(TimeSpan.FromSeconds(5)).ConfigureAwait(false);\n                    await _dgpuNotify.NotifyAsync().ConfigureAwait(false);\n                }\n            });\n        }\n\n        var powerAdapterStateChanged = powerAdapterState != _lastPowerAdapterState;\n        _lastPowerAdapterState = powerAdapterState;\n\n        if (powerStateEvent is PowerStateEvent.Suspend or PowerStateEvent.Unknown)\n            return;\n\n        if (powerAdapterStateChanged)\n            Notify(powerAdapterState);\n\n        Changed?.Invoke(this, new(powerStateEvent, powerAdapterStateChanged));\n    }\n\n    private unsafe void RegisterSuspendResumeNotification()\n    {\n        _handle = PInvoke.PowerRegisterSuspendResumeNotification(REGISTER_NOTIFICATION_FLAGS.DEVICE_NOTIFY_CALLBACK, _recipientHandle, out var handle) == WIN32_ERROR.ERROR_SUCCESS\n            ? new HPOWERNOTIFY(new IntPtr(handle))\n            : HPOWERNOTIFY.Null;\n    }\n\n    private void UnRegisterSuspendResumeNotification()\n    {\n        PInvoke.PowerUnregisterSuspendResumeNotification(_handle);\n        _handle = HPOWERNOTIFY.Null;\n    }\n\n    private static void Notify(PowerAdapterStatus newState)\n    {\n        switch (newState)\n        {\n            case PowerAdapterStatus.Connected:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.ACAdapterConnected));\n                break;\n            case PowerAdapterStatus.ConnectedLowWattage:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.ACAdapterConnectedLowWattage));\n                break;\n            case PowerAdapterStatus.Disconnected:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.ACAdapterDisconnected));\n                break;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/RGBKeyboardBacklightListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class RGBKeyboardBacklightListener(RGBKeyboardBacklightController controller)\n    : AbstractWMIListener<EventArgs, RGBKeyboardBacklightChanged, int>(WMI.LenovoGameZoneLightProfileChangeEvent.Listen)\n{\n    protected override RGBKeyboardBacklightChanged GetValue(int value) => default;\n\n    protected override EventArgs GetEventArgs(RGBKeyboardBacklightChanged value) => EventArgs.Empty;\n\n    protected override async Task OnChangedAsync(RGBKeyboardBacklightChanged value)\n    {\n        try\n        {\n            if (!await controller.IsSupportedAsync().ConfigureAwait(false))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Not supported.\");\n\n                return;\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Taking ownership...\");\n\n            await controller.SetLightControlOwnerAsync(true).ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Setting next preset set...\");\n\n            var preset = await controller.SetNextPresetAsync().ConfigureAwait(false);\n\n            MessagingCenter.Publish(preset == RGBKeyboardBacklightPreset.Off\n                ? new NotificationMessage(NotificationType.RGBKeyboardBacklightOff, preset.GetDisplayName())\n                : new NotificationMessage(NotificationType.RGBKeyboardBacklightChanged, preset.GetDisplayName()));\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Next preset set\");\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to set next keyboard backlight preset.\", ex);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/SessionLockUnlockListener.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.System.RemoteDesktop;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class SessionLockUnlockListener : IListener<SessionLockUnlockListener.ChangedEventArgs>\n{\n    public class ChangedEventArgs(bool locked) : EventArgs\n    {\n        public bool Locked { get; } = locked;\n    }\n\n    public event EventHandler<ChangedEventArgs>? Changed;\n\n    public bool? IsLocked { get; private set; }\n\n    public Task StartAsync()\n    {\n        SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;\n        return Task.CompletedTask;\n    }\n\n    public Task StopAsync()\n    {\n        SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch;\n        return Task.CompletedTask;\n    }\n\n    private void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)\n    {\n        if (e.Reason != SessionSwitchReason.SessionLock && e.Reason != SessionSwitchReason.SessionUnlock)\n            return;\n\n        var flags = GetActiveConsoleSessionFlags();\n        if (flags == PInvoke.WTS_SESSIONSTATE_UNKNOWN)\n        {\n            IsLocked = null;\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Unknown error occured when getting active console session flags.\");\n            return;\n        }\n        var locked = (flags == PInvoke.WTS_SESSIONSTATE_LOCK);\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Session lock unlock state switched. [locked={locked}]\");\n        IsLocked = locked;\n        Changed?.Invoke(this, new(locked));\n    }\n\n    private static unsafe uint GetActiveConsoleSessionFlags()\n    {\n        const WTS_INFO_CLASS infoClass = WTS_INFO_CLASS.WTSSessionInfoEx;\n\n        var sessionFlags = PInvoke.WTS_SESSIONSTATE_UNKNOWN;\n        var dwSessionId = PInvoke.WTSGetActiveConsoleSessionId();\n\n        if (!PInvoke.WTSQuerySessionInformation(HANDLE.WTS_CURRENT_SERVER_HANDLE, dwSessionId, infoClass, out var ppBuffer, out var pBytesReturned))\n            return sessionFlags;\n\n        if (pBytesReturned > 0)\n        {\n            var info = Marshal.PtrToStructure<WTSINFOEXW>((IntPtr)ppBuffer.Value);\n            if (info.Level == 1)\n                sessionFlags = (uint)info.Data.WTSInfoExLevel1.SessionFlags;\n        }\n\n        PInvoke.WTSFreeMemory(ppBuffer);\n        return sessionFlags;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/SpecialKeyListener.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class SpecialKeyListener(\n    ApplicationSettings settings,\n    FnKeysDisabler fnKeysDisabler,\n    RefreshRateFeature feature,\n    MicrophoneFeature microphoneFeature)\n    : AbstractWMIListener<SpecialKeyListener.ChangedEventArgs, SpecialKey, int>(WMI.LenovoUtilityEvent.Listen)\n{\n    public class ChangedEventArgs(SpecialKey specialKey) : EventArgs\n    {\n        public SpecialKey SpecialKey { get; } = specialKey;\n    }\n\n    private readonly ThrottleFirstDispatcher _refreshRateDispatcher = new(TimeSpan.FromSeconds(2), nameof(SpecialKeyListener));\n\n    protected override SpecialKey GetValue(int value)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Event received. [value={value}]\");\n\n        var result = (SpecialKey)value;\n        return result;\n    }\n\n    protected override ChangedEventArgs GetEventArgs(SpecialKey value) => new(value);\n\n    protected override async Task OnChangedAsync(SpecialKey value)\n    {\n        try\n        {\n            if (await fnKeysDisabler.GetStatusAsync().ConfigureAwait(false) == SoftwareStatus.Enabled)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Ignoring, FnKeys are enabled.\");\n                return;\n            }\n\n            switch (value)\n            {\n                case SpecialKey.CameraOn or SpecialKey.CameraOff:\n                    NotifyCameraState(value);\n                    break;\n                case SpecialKey.FnLockOn or SpecialKey.FnLockOff:\n                    NotifyFnLockState(value);\n                    break;\n                case SpecialKey.FnR or SpecialKey.FnR2:\n                    await ToggleRefreshRateAsync().ConfigureAwait(false);\n                    break;\n                case SpecialKey.FnPrtSc or SpecialKey.FnPrtSc2:\n                    OpenSnippingTool();\n                    break;\n                case SpecialKey.SpectrumBacklightOff:\n                    NotifySpectrumBacklight(SpectrumKeyboardBacklightBrightness.Off);\n                    break;\n                case SpecialKey.SpectrumBacklight1:\n                    NotifySpectrumBacklight(SpectrumKeyboardBacklightBrightness.Low);\n                    break;\n                case SpecialKey.SpectrumBacklight2:\n                    NotifySpectrumBacklight(SpectrumKeyboardBacklightBrightness.Medium);\n                    break;\n                case SpecialKey.SpectrumBacklight3:\n                    NotifySpectrumBacklight(SpectrumKeyboardBacklightBrightness.High);\n                    break;\n                case SpecialKey.SpectrumPreset1:\n                    NotifySpectrumPreset(1);\n                    break;\n                case SpecialKey.SpectrumPreset2:\n                    NotifySpectrumPreset(2);\n                    break;\n                case SpecialKey.SpectrumPreset3:\n                    NotifySpectrumPreset(3);\n                    break;\n                case SpecialKey.SpectrumPreset4:\n                    NotifySpectrumPreset(4);\n                    break;\n                case SpecialKey.SpectrumPreset5:\n                    NotifySpectrumPreset(5);\n                    break;\n                case SpecialKey.SpectrumPreset6:\n                    NotifySpectrumPreset(6);\n                    break;\n                case SpecialKey.FnF4:\n                    await ToggleMicrophoneAsync().ConfigureAwait(false);\n                    break;\n                case SpecialKey.FnF8:\n                    OpenAirplaneModeSettings();\n                    break;\n                case SpecialKey.WhiteBacklightOff:\n                    NotifyWhiteBacklight(WhiteKeyboardBacklightState.Off);\n                    break;\n                case SpecialKey.WhiteBacklight1:\n                    NotifyWhiteBacklight(WhiteKeyboardBacklightState.Low);\n                    break;\n                case SpecialKey.WhiteBacklight2:\n                    NotifyWhiteBacklight(WhiteKeyboardBacklightState.High);\n                    break;\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to handle key. [key={value}, value={(int)value}]\", ex);\n        }\n    }\n\n    private static void NotifyCameraState(SpecialKey value)\n    {\n        switch (value)\n        {\n            case SpecialKey.CameraOn:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.CameraOn));\n                break;\n            case SpecialKey.CameraOff:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.CameraOff));\n                break;\n        }\n    }\n\n    private static void NotifyFnLockState(SpecialKey value)\n    {\n        switch (value)\n        {\n            case SpecialKey.FnLockOn:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.FnLockOn));\n                break;\n            case SpecialKey.FnLockOff:\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.FnLockOff));\n                break;\n        }\n    }\n\n    private Task ToggleRefreshRateAsync() => _refreshRateDispatcher.DispatchAsync(async () =>\n    {\n        try\n        {\n            if (!await feature.IsSupportedAsync().ConfigureAwait(false))\n                return;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Switch refresh rate after Fn+R...\");\n\n            var all = await feature.GetAllStatesAsync().ConfigureAwait(false);\n            var current = await feature.GetStateAsync().ConfigureAwait(false);\n            var excluded = settings.Store.ExcludedRefreshRates;\n\n            var filtered = all.Except(excluded).ToArray();\n\n            if (Log.Instance.IsTraceEnabled)\n            {\n                Log.Instance.Trace($\"Refresh rates: [all={string.Join(\", \", all.Select(r => r.Frequency))}]\");\n                Log.Instance.Trace($\" - All: {string.Join(\", \", all.Select(r => r.Frequency))}\");\n                Log.Instance.Trace($\" - Excluded: {string.Join(\", \", excluded.Select(r => r.Frequency))}\");\n                Log.Instance.Trace($\" - Filtered: {string.Join(\", \", filtered.Select(r => r.Frequency))}\");\n            }\n\n            if (filtered.Length < 2)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Can't switch refresh rate after Fn+R when there is less than 2 available.\");\n                return;\n            }\n\n            var currentIndex = Array.IndexOf(filtered, current);\n            var newIndex = currentIndex + 1;\n            if (newIndex >= filtered.Length)\n                newIndex = 0;\n\n            var next = filtered[newIndex];\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Switching refresh rate after Fn+R to {next}...\");\n\n            await feature.SetStateAsync(next).ConfigureAwait(false);\n\n            _ = Task.Delay(TimeSpan.FromSeconds(1)).ContinueWith(_ =>\n            {\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.RefreshRate, next.DisplayName));\n            });\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Switched refresh rate after Fn+R to {next}.\");\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to switch refresh rate after Fn+R.\", ex);\n        }\n    });\n\n    private static void OpenSnippingTool()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Starting snipping tool..\");\n\n        Process.Start(\"explorer\", \"ms-screenclip:\");\n    }\n\n    private static void NotifySpectrumBacklight(SpectrumKeyboardBacklightBrightness value)\n    {\n        var type = value is SpectrumKeyboardBacklightBrightness.Off\n            ? NotificationType.SpectrumBacklightOff\n            : NotificationType.SpectrumBacklightChanged;\n        MessagingCenter.Publish(new NotificationMessage(type, value));\n    }\n\n    private static void NotifySpectrumPreset(int value) => MessagingCenter.Publish(new NotificationMessage(NotificationType.SpectrumBacklightPresetChanged, value));\n\n    private async Task ToggleMicrophoneAsync()\n    {\n\n        if (!await microphoneFeature.IsSupportedAsync().ConfigureAwait(false))\n            return;\n\n        switch (await microphoneFeature.GetStateAsync().ConfigureAwait(false))\n        {\n            case MicrophoneState.On:\n                await microphoneFeature.SetStateAsync(MicrophoneState.Off).ConfigureAwait(false);\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.MicrophoneOff));\n                break;\n            case MicrophoneState.Off:\n                await microphoneFeature.SetStateAsync(MicrophoneState.On).ConfigureAwait(false);\n                MessagingCenter.Publish(new NotificationMessage(NotificationType.MicrophoneOn));\n                break;\n        }\n    }\n\n    private static void OpenAirplaneModeSettings() => AirplaneMode.Open();\n\n    private static void NotifyWhiteBacklight(WhiteKeyboardBacklightState value)\n    {\n        var type = value is WhiteKeyboardBacklightState.Off\n            ? NotificationType.WhiteKeyboardBacklightOff\n            : NotificationType.WhiteKeyboardBacklightChanged;\n        MessagingCenter.Publish(new NotificationMessage(type, value));\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/SystemThemeListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class SystemThemeListener : IListener<EventArgs>\n{\n    public event EventHandler<EventArgs>? Changed;\n\n    private IDisposable? _darkModeListener;\n    private IDisposable? _colorizationColorListener;\n\n    private RGBColor? _currentRegColor;\n\n    private bool _started;\n\n    public Task StartAsync()\n    {\n        if (_started)\n            return Task.CompletedTask;\n\n        _darkModeListener = SystemTheme.GetDarkModeListener(OnDarkModeChanged);\n        _colorizationColorListener = SystemTheme.GetColorizationColorListener(OnColorizationColorChanged);\n\n        _started = true;\n\n        return Task.CompletedTask;\n    }\n\n    private void OnDarkModeChanged()\n    {\n        Changed?.Invoke(this, EventArgs.Empty);\n    }\n\n    private void OnColorizationColorChanged()\n    {\n        try\n        {\n            var color = SystemTheme.GetColorizationColor();\n\n            // Ignore alpha channel transition events\n            if (color.Equals(_currentRegColor))\n                return;\n\n            _currentRegColor = color;\n\n            Changed?.Invoke(this, EventArgs.Empty);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to notify on accent color change.\", ex);\n        }\n    }\n\n    public Task StopAsync()\n    {\n        _darkModeListener?.Dispose();\n        _colorizationColorListener?.Dispose();\n\n        _started = false;\n\n        return Task.CompletedTask;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/ThermalModeListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class ThermalModeListener(\n    WindowsPowerModeController windowsPowerModeController,\n    WindowsPowerPlanController windowsPowerPlanController)\n    : AbstractWMIListener<ThermalModeListener.ChangedEventArgs, ThermalModeState, int>(WMI.LenovoGameZoneThermalModeEvent.Listen)\n{\n    public class ChangedEventArgs(ThermalModeState state) : EventArgs\n    {\n        public ThermalModeState State { get; } = state;\n    }\n\n    private readonly ThreadSafeCounter _suppressCounter = new();\n\n    protected override ThermalModeState GetValue(int value)\n    {\n        var state = (ThermalModeState)value;\n\n        if (!Enum.IsDefined(state))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Unknown value received: {value}\");\n\n            state = ThermalModeState.Unknown;\n        }\n\n        return state;\n    }\n\n    protected override ChangedEventArgs GetEventArgs(ThermalModeState value) => new(value);\n\n    protected override async Task OnChangedAsync(ThermalModeState state)\n    {\n        if (!_suppressCounter.Decrement())\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Suppressed.\");\n            return;\n        }\n\n        if (state == ThermalModeState.Unknown)\n            return;\n\n        var powerModeState = state switch\n        {\n            ThermalModeState.Quiet => PowerModeState.Quiet,\n            ThermalModeState.Balance => PowerModeState.Balance,\n            ThermalModeState.Performance => PowerModeState.Performance,\n            ThermalModeState.GodMode => PowerModeState.GodMode,\n            _ => throw new ArgumentOutOfRangeException(nameof(state), state, null)\n        };\n\n        await windowsPowerModeController.SetPowerModeAsync(powerModeState).ConfigureAwait(false);\n        await windowsPowerPlanController.SetPowerPlanAsync(powerModeState).ConfigureAwait(false);\n    }\n\n    public void SuppressNext()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Suppressing next...\");\n\n        _suppressCounter.Increment();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Listeners/WinKeyListener.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.Listeners;\n\npublic class WinKeyListener()\n    : AbstractWMIListener<EventArgs, WinKeyChanged, int>(WMI.LenovoGameZoneKeyLockStatusEvent.Listen)\n{\n    protected override WinKeyChanged GetValue(int value) => default;\n\n    protected override EventArgs GetEventArgs(WinKeyChanged value) => EventArgs.Empty;\n\n    protected override Task OnChangedAsync(WinKeyChanged value) => Task.CompletedTask;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Messaging/Messages/FeatureStateMessage.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Messaging.Messages;\n\npublic readonly struct FeatureStateMessage<T>(T state) : IMessage\n{\n    public T State { get; } = state;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Messaging/Messages/IMessage.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Messaging.Messages;\n\npublic interface IMessage;\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Messaging/Messages/NotificationMessage.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Messaging.Messages;\n\npublic readonly struct NotificationMessage(NotificationType type, params object[] args) : IMessage\n{\n    public NotificationType Type { get; } = type;\n\n    public object[] Args { get; } = args;\n\n    public override string ToString() => $@\"{nameof(Type)}: {Type}, {nameof(Args)}: [{string.Join(\", \", Args)}]\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Messaging/Messages/RGBKeyboardBacklightChangedMessage.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Messaging.Messages;\n\npublic class RGBKeyboardBacklightChangedMessage : IMessage;\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Messaging/Messages/SpectrumBacklightChangedMessage.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Messaging.Messages;\n\npublic class SpectrumBacklightChangedMessage : IMessage;\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Messaging/MessagingCenter.cs",
    "content": "﻿using System;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing PubSub;\n\nnamespace LenovoLegionToolkit.Lib.Messaging;\n\npublic static class MessagingCenter\n{\n    public static void Publish<T>(T data) where T : IMessage => Hub.Default.Publish(data);\n\n    public static void Subscribe<T>(object subscriber, Action<T> handler) where T : IMessage => Hub.Default.Subscribe(subscriber, handler);\n\n    public static void Subscribe<T>(object subscriber, Action handler) where T : IMessage => Hub.Default.Subscribe<T>(subscriber, _ => handler());\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Native.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Runtime.InteropServices;\n\nnamespace LenovoLegionToolkit.Lib;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable PrivateFieldCanBeConvertedToLocalVariable\n// ReSharper disable CollectionNeverQueried.Local\n\n#region Battery\n\n[StructLayout(LayoutKind.Sequential)]\ninternal readonly struct LENOVO_BATTERY_INFORMATION\n{\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 13)]\n    private readonly byte[] Bytes1;\n    public readonly ushort Temperature;\n    public readonly ushort ManufactureDate;\n    public readonly ushort FirstUseDate;\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)]\n    private readonly byte[] Bytes2;\n}\n\n#endregion\n\n#region RGB Keyboard\n\n[StructLayout(LayoutKind.Sequential, Pack = 1)]\ninternal struct LENOVO_RGB_KEYBOARD_STATE\n{\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]\n    public byte[] Header;\n    public byte Effect;\n    public byte Speed;\n    public byte Brightness;\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]\n    public byte[] Zone1Rgb;\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]\n    public byte[] Zone2Rgb;\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]\n    public byte[] Zone3Rgb;\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]\n    public byte[] Zone4Rgb;\n    public byte Padding;\n    public byte WaveLTR;\n    public byte WaveRTL;\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 13)]\n    public byte[] Unused;\n}\n\n#endregion\n\n#region Spectrum Keyboard\n\ninternal enum LENOVO_SPECTRUM_OPERATION_TYPE : byte\n{\n    Compatibility = 0xD1,\n    KeyCount = 0xC4,\n    KeyPage = 0xC5,\n    ProfileChange = 0xC8,\n    ProfileDefault = 0xC9,\n    Profile = 0xCA,\n    EffectChange = 0xCB,\n    Effect = 0xCC,\n    GetBrightness = 0xCD,\n    Brightness = 0xCE,\n    AuroraStartStop = 0xD0,\n    AuroraSendBitmap = 0xA1,\n    GetLogoStatus = 0xA5,\n    LogoStatus = 0xA6\n}\n\ninternal enum LENOVO_SPECTRUM_EFFECT_TYPE : byte\n{\n    ScrewRainbow = 1,\n    RainbowWave = 2,\n    ColorChange = 3,\n    ColorPulse = 4,\n    ColorWave = 5,\n    Smooth = 6,\n    Rain = 7,\n    Ripple = 8,\n    AudioBounceLighting = 9,\n    AudioRippleLighting = 10,\n    Always = 11,\n    TypeLighting = 12,\n    LegionAuraSync = 13,\n}\n\ninternal enum LENOVO_SPECTRUM_COLOR_MODE : byte\n{\n    None = 0,\n    RandomColor = 1,\n    ColorList = 2\n}\n\ninternal enum LENOVO_SPECTRUM_SPEED : byte\n{\n    None = 0,\n    Speed1 = 1,\n    Speed2 = 2,\n    Speed3 = 3\n}\n\ninternal enum LENOVO_SPECTRUM_CLOCKWISE_DIRECTION : byte\n{\n    None = 0,\n    Clockwise = 1,\n    CounterClockwise = 2\n}\n\ninternal enum LENOVO_SPECTRUM_DIRECTION : byte\n{\n    None = 0,\n    BottomToTop = 1,\n    TopToBottom = 2,\n    RightToLeft = 3,\n    LeftToRight = 4\n}\n\n[StructLayout(LayoutKind.Sequential)]\ninternal readonly struct LENOVO_SPECTRUM_COLOR(byte r, byte g, byte b)\n{\n    public readonly byte R = r;\n    public readonly byte G = g;\n    public readonly byte B = b;\n}\n\n[StructLayout(LayoutKind.Sequential, Pack = 1)]\ninternal struct LENOVO_SPECTRUM_KEY_STATE\n{\n    public readonly ushort KeyCode;\n    public LENOVO_SPECTRUM_COLOR Color;\n}\n\n[StructLayout(LayoutKind.Sequential, Pack = 1)]\ninternal readonly struct LENOVO_SPECTRUM_KEY_PAGE_ITEM\n{\n    private readonly byte Index;\n    public readonly ushort KeyCode;\n}\n\n[StructLayout(LayoutKind.Sequential)]\ninternal readonly struct LENOVO_SPECTRUM_HEADER(LENOVO_SPECTRUM_OPERATION_TYPE type, int size)\n{\n    public readonly byte Head = 7;\n    public readonly LENOVO_SPECTRUM_OPERATION_TYPE Type = type;\n    public readonly byte Size = (byte)(size % 256);\n    public readonly byte Tail = 3;\n}\n\n[StructLayout(LayoutKind.Sequential)]\ninternal readonly struct LENOVO_SPECTRUM_EFFECT_HEADER(\n    LENOVO_SPECTRUM_EFFECT_TYPE effectType,\n    LENOVO_SPECTRUM_SPEED speed,\n    LENOVO_SPECTRUM_DIRECTION direction,\n    LENOVO_SPECTRUM_CLOCKWISE_DIRECTION clockwiseDirection,\n    LENOVO_SPECTRUM_COLOR_MODE colorMode)\n{\n    public readonly byte Head = 0x6;\n    public readonly byte Unknown1 = 0x1;\n    public readonly LENOVO_SPECTRUM_EFFECT_TYPE EffectType = effectType;\n    public readonly byte Unknown2 = 0x2;\n    public readonly LENOVO_SPECTRUM_SPEED Speed = speed;\n    public readonly byte Unknown3 = 0x3;\n    public readonly LENOVO_SPECTRUM_CLOCKWISE_DIRECTION ClockwiseDirection = clockwiseDirection;\n    public readonly byte Unknown5 = 0x4;\n    public readonly LENOVO_SPECTRUM_DIRECTION Direction = direction;\n    public readonly byte Unknown6 = 0x5;\n    public readonly LENOVO_SPECTRUM_COLOR_MODE ColorMode = colorMode;\n    public readonly byte Unknown7 = 0x6;\n    public readonly byte Tail = 0x0;\n}\n\n[StructLayout(LayoutKind.Sequential, Pack = 1)]\ninternal readonly struct LENOVO_SPECTRUM_EFFECT(\n    LENOVO_SPECTRUM_EFFECT_HEADER effectHeader,\n    int effectNo,\n    LENOVO_SPECTRUM_COLOR[] colors,\n    ushort[] keyCodes)\n{\n    public readonly byte EffectNo = (byte)effectNo;\n    public readonly LENOVO_SPECTRUM_EFFECT_HEADER EffectHeader = effectHeader;\n    public readonly byte NumberOfColors = (byte)colors.Length;\n    public readonly LENOVO_SPECTRUM_COLOR[] Colors = colors;\n    public readonly byte NumberOfKeys = (byte)keyCodes.Length;\n    public readonly ushort[] KeyCodes = keyCodes;\n}\n\n[StructLayout(LayoutKind.Sequential, Pack = 1)]\ninternal readonly struct LENOVO_SPECTRUM_AURORA_ITEM(ushort keyCode, LENOVO_SPECTRUM_COLOR color)\n{\n    public readonly ushort KeyCode = keyCode;\n    public readonly LENOVO_SPECTRUM_COLOR Color = color;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_COMPATIBILITY_REQUEST()\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.Compatibility, 0xC0);\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_COMPATIBILITY_RESPONSE\n{\n    private readonly byte ReportId;\n    private readonly LENOVO_SPECTRUM_OPERATION_TYPE Type;\n    private readonly byte Length;\n    private readonly byte Unknown1;\n    private readonly byte Compatibility;\n\n    public bool IsCompatible => Compatibility == 0;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_KEY_COUNT_REQUEST()\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.KeyCount, 0xC0);\n    private readonly byte Parameter = 7;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_KEY_COUNT_RESPONSE\n{\n    private readonly byte ReportId;\n    private readonly LENOVO_SPECTRUM_OPERATION_TYPE Type;\n    private readonly byte Length;\n    private readonly byte Unknown1;\n    private readonly byte Parameter;\n    public readonly byte Indexes;\n    public readonly byte KeysPerIndex;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_KEY_PAGE_REQUEST(byte index, bool secondary = false)\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.KeyPage, 0xC0);\n    private readonly byte Parameter = secondary ? (byte)8 : (byte)7;\n    private readonly byte Index = index;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_KEY_PAGE_RESPONSE\n{\n    private readonly byte ReportId;\n    private readonly LENOVO_SPECTRUM_OPERATION_TYPE Type;\n    private readonly byte Length;\n    private readonly byte Unknown1;\n    private readonly byte Parameter;\n    private readonly byte Index;\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]\n    public readonly LENOVO_SPECTRUM_KEY_PAGE_ITEM[] Items;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_BRIGHTNESS_REQUEST()\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.GetBrightness, 0xC0);\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_BRIGHTNESS_RESPONSE\n{\n    private readonly byte ReportId;\n    private readonly LENOVO_SPECTRUM_OPERATION_TYPE Type;\n    private readonly byte Length;\n    private readonly byte Unknown1;\n    public readonly byte Brightness;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_SET_BRIGHTNESS_REQUEST(byte brightness)\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.Brightness, 0xC0);\n    private readonly byte Brightness = brightness;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_LOGO_STATUS()\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.GetLogoStatus, 0xC0);\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_LOGO_STATUS_RESPONSE\n{\n    private readonly byte ReportId;\n    private readonly LENOVO_SPECTRUM_OPERATION_TYPE Type;\n    private readonly byte Length;\n    private readonly byte Unknown1;\n    private readonly byte Status;\n\n    public bool IsOn => Status == 1;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_SET_LOGO_STATUS_REQUEST(bool isOn)\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.LogoStatus, 0xC0);\n    private readonly byte Status = (byte)(isOn ? 1 : 0);\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_PROFILE_REQUEST()\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.Profile, 0xC0);\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_PROFILE_RESPONSE\n{\n    private readonly byte ReportId;\n    private readonly LENOVO_SPECTRUM_OPERATION_TYPE Type;\n    private readonly byte Length;\n    private readonly byte Unknown1;\n    public readonly byte Profile;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_SET_PROFILE_REQUEST(byte profile)\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.ProfileChange, 0xC0);\n    private readonly byte Profile = profile;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_SET_PROFILE_DEFAULT_REQUEST(byte profile)\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.ProfileDefault, 0xC0);\n    private readonly byte Profile = profile;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_GET_EFFECT_REQUEST(byte profile)\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.Effect, 0xC0);\n    private readonly byte Profile = profile;\n}\n\ninternal readonly struct LENOVO_SPECTRUM_EFFECT_DESCRIPTION(\n    LENOVO_SPECTRUM_HEADER header,\n    byte profile,\n    LENOVO_SPECTRUM_EFFECT[] effects)\n{\n    public readonly byte Profile = profile;\n    private readonly byte Unknown1 = 1;\n    private readonly byte Unknown2 = 1;\n    public readonly LENOVO_SPECTRUM_EFFECT[] Effects = effects;\n\n    public static LENOVO_SPECTRUM_EFFECT_DESCRIPTION FromBytes(byte[] bytes)\n    {\n        using var ms = new MemoryStream(bytes);\n        using var br = new BinaryReader(ms);\n\n        _ = br.ReadByte();\n        var type = (LENOVO_SPECTRUM_OPERATION_TYPE)br.ReadByte();\n        var size = br.ReadByte();\n        _ = br.ReadByte();\n\n        var header = new LENOVO_SPECTRUM_HEADER(type, size);\n\n        var profile = br.ReadByte();\n        _ = br.ReadByte();\n        _ = br.ReadByte();\n\n        var effects = new List<LENOVO_SPECTRUM_EFFECT>();\n\n        var lastEffectNo = 1;\n        while (true)\n        {\n            var effectNo = br.ReadByte();\n\n            if (effectNo < lastEffectNo)\n                break;\n\n            lastEffectNo = effectNo;\n\n            _ = br.ReadByte();\n            _ = br.ReadByte();\n            var effectType = (LENOVO_SPECTRUM_EFFECT_TYPE)br.ReadByte();\n            _ = br.ReadByte();\n            var speed = (LENOVO_SPECTRUM_SPEED)br.ReadByte();\n            _ = br.ReadByte();\n            var clockwiseDirection = (LENOVO_SPECTRUM_CLOCKWISE_DIRECTION)br.ReadByte();\n            _ = br.ReadByte();\n            var direction = (LENOVO_SPECTRUM_DIRECTION)br.ReadByte();\n            _ = br.ReadByte();\n            var colorMode = (LENOVO_SPECTRUM_COLOR_MODE)br.ReadByte();\n            _ = br.ReadByte();\n            _ = br.ReadByte();\n\n            var effectHeader = new LENOVO_SPECTRUM_EFFECT_HEADER(effectType, speed, direction, clockwiseDirection, colorMode);\n            var colors = new List<LENOVO_SPECTRUM_COLOR>();\n            var keyCodes = new List<ushort>();\n\n            var noOfColors = br.ReadByte();\n            for (var i = 0; i < noOfColors; i++)\n            {\n                var r = br.ReadByte();\n                var g = br.ReadByte();\n                var b = br.ReadByte();\n                colors.Add(new(r, g, b));\n            }\n\n            var noOfKeys = br.ReadByte();\n            for (var i = 0; i < noOfKeys; i++)\n            {\n                var keyCode = br.ReadUInt16();\n                keyCodes.Add(keyCode);\n            }\n\n            effects.Add(new(effectHeader, effectNo, [.. colors], [.. keyCodes]));\n        }\n\n        return new(header, profile, [.. effects]);\n    }\n\n    public byte[] ToBytes()\n    {\n        using var ms = new MemoryStream(new byte[960]);\n        using var bf = new BinaryWriter(ms);\n\n        bf.Write(header.Head);\n        bf.Write((byte)header.Type);\n        bf.Write(header.Size);\n        bf.Write(header.Tail);\n\n        bf.Write(Profile);\n        bf.Write(Unknown1);\n        bf.Write(Unknown2);\n\n        foreach (var effect in Effects)\n        {\n            bf.Write(effect.EffectNo);\n\n            bf.Write(effect.EffectHeader.Head);\n            bf.Write(effect.EffectHeader.Unknown1);\n            bf.Write((byte)effect.EffectHeader.EffectType);\n            bf.Write(effect.EffectHeader.Unknown2);\n            bf.Write((byte)effect.EffectHeader.Speed);\n            bf.Write(effect.EffectHeader.Unknown3);\n            bf.Write((byte)effect.EffectHeader.ClockwiseDirection);\n            bf.Write(effect.EffectHeader.Unknown5);\n            bf.Write((byte)effect.EffectHeader.Direction);\n            bf.Write(effect.EffectHeader.Unknown6);\n            bf.Write((byte)effect.EffectHeader.ColorMode);\n            bf.Write(effect.EffectHeader.Unknown7);\n            bf.Write(effect.EffectHeader.Tail);\n\n            bf.Write(effect.NumberOfColors);\n            foreach (var color in effect.Colors)\n            {\n                bf.Write(color.R);\n                bf.Write(color.G);\n                bf.Write(color.B);\n            }\n\n            bf.Write(effect.NumberOfKeys);\n            foreach (var keyCode in effect.KeyCodes)\n            {\n                bf.Write(keyCode);\n            }\n        }\n\n        var position = ms.Position;\n        bf.Seek(2, SeekOrigin.Begin);\n        bf.Write((byte)(position % 255));\n\n        return ms.ToArray();\n    }\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_AURORA_START_STOP_REQUEST(bool start, byte profile)\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.AuroraStartStop, 0xC0);\n    private readonly byte StartStop = start ? (byte)1 : (byte)2;\n    private readonly byte Profile = profile;\n}\n\ninternal readonly struct LENOVO_SPECTRUM_AURORA_SEND_BITMAP_REQUEST(LENOVO_SPECTRUM_AURORA_ITEM[] items)\n{\n    private readonly LENOVO_SPECTRUM_HEADER Header = new(LENOVO_SPECTRUM_OPERATION_TYPE.AuroraSendBitmap, 0xC0);\n\n    public byte[] ToBytes()\n    {\n        using var ms = new MemoryStream(new byte[960]);\n        using var bf = new BinaryWriter(ms);\n\n        bf.Write(Header.Head);\n        bf.Write((byte)Header.Type);\n        bf.Write(Header.Size);\n        bf.Write(Header.Tail);\n\n        foreach (var item in items)\n        {\n            bf.Write(item.KeyCode);\n            bf.Write(item.Color.R);\n            bf.Write(item.Color.G);\n            bf.Write(item.Color.B);\n        }\n\n        return ms.ToArray();\n    }\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal readonly struct LENOVO_SPECTRUM_STATE_RESPONSE\n{\n    private readonly byte ReportId;\n    private readonly LENOVO_SPECTRUM_OPERATION_TYPE Type;\n    private readonly byte Length;\n    private readonly byte Unknown1;\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 190)]\n    public readonly LENOVO_SPECTRUM_KEY_STATE[] Data;\n}\n\n#endregion\n\n#region Boot Logo\n\n[Flags]\npublic enum BootLogoFormat : byte\n{\n    Jpeg = 0x1,\n    Bmp = 0x10,\n    Png = 0x20,\n}\n\n[StructLayout(LayoutKind.Sequential, Pack = 1)]\npublic struct BootLogoInfo\n{\n    public byte Enabled;\n    public readonly int SupportedWidth;\n    public readonly int SupportedHeight;\n    public readonly BootLogoFormat SupportedFormat;\n}\n\n[StructLayout(LayoutKind.Sequential, Pack = 1)]\npublic struct BootLogoChecksum\n{\n    private readonly int Unused1;\n    public uint Crc;\n    private readonly int Unused2;\n    private readonly int Unused3;\n    private readonly int Unused4;\n    private readonly int Unused5;\n    private readonly int Unused6;\n    private readonly int Unused7;\n    private readonly int Unused8;\n    private readonly int Unused9;\n}\n\n#endregion\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/NativeMethods.json",
    "content": "﻿{\n  \"public\": true\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/NativeMethods.txt",
    "content": "﻿HWND_BROADCAST\n\nWM_CLOSE\nWM_COMMAND\nWM_DESTROY\nWM_DEVICECHANGE\nWM_KEYDOWN\nWM_KEYUP\nWM_SYSKEYDOWN\nWM_SYSKEYUP\nWM_LBUTTONUP\nWM_POWERBROADCAST\nWM_SETTINGCHANGE\nWM_SYSCOMMAND\nWM_RBUTTONUP\nWM_USER\n\nWM_LBUTTONDOWN\nWM_LBUTTONUP\nWM_RBUTTONDOWN\nWM_RBUTTONUP\nWM_MBUTTONDOWN\nWM_MBUTTONUP\nWM_XBUTTONDOWN\nWM_XBUTTONUP\nWM_MOUSEWHEEL\nWM_MOUSEHWHEEL\nWM_MOUSEMOVE\n\nNIN_POPUPCLOSE\nNIN_POPUPOPEN\n\nVIRTUAL_KEY\n\nSC_MONITORPOWER\n\nDEVICE_NOTIFY_SUBSCRIBE_PARAMETERS\n\nPOWERBROADCAST_SETTING\nPBT_POWERSETTINGCHANGE\nPBT_APMRESUMEAUTOMATIC\n\nHC_ACTION\n\nFILE_ACCESS_RIGHTS\n\nKBDLLHOOKSTRUCT\nMSLLHOOKSTRUCT\n\nBATTERY_INFORMATION\nBATTERY_QUERY_INFORMATION \nBATTERY_STATUS\nBATTERY_WAIT_STATUS\n\nDEV_BROADCAST_DEVICEINTERFACE_W\nDEV_BROADCAST_HDR\n\nGUID_CONSOLE_DISPLAY_STATE\nGUID_DEVCLASS_BATTERY\nGUID_DISPLAY_DEVICE_ARRIVAL\nGUID_DEVINTERFACE_MONITOR\nGUID_LIDSWITCH_STATE_CHANGE\nGUID_VIDEO_SUBGROUP\nGUID_POWER_SAVING_STATUS \n\nDBT_DEVICEARRIVAL\nDBT_DEVICEREMOVECOMPLETE\n\nIOCTL_BATTERY_QUERY_INFORMATION\nIOCTL_BATTERY_QUERY_STATUS\nIOCTL_BATTERY_QUERY_TAG\n\nPROCESSOR_POWER_INFORMATION\n\nSC_MANAGER_ALL_ACCESS\n\nSERVICE_CHANGE_CONFIG\nSERVICE_NO_CHANGE\n\nDEVPKEY_NAME\nDEVPKEY_Device_ClassGuid\nDEVPKEY_Device_DeviceDesc\nDEVPKEY_Device_InstanceId\nDEVPKEY_Device_BusReportedDeviceDesc\nDEVPKEY_Device_Capabilities\n\nCM_DEVCAP\n\nDISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY \nDISPLAYCONFIG_TARGET_DEVICE_NAME\nDISPLAYCONFIG_GET_ADVANCED_COLOR_INFO\nDISPLAYCONFIG_SET_ADVANCED_COLOR_STATE\n\nLOCALE_SSHORTDATE\n\nSYSTEM_POWER_CAPABILITIES\n\nEFFECTIVE_POWER_MODE_V2\n\nNOTIFYICONDATAW\n\nWLAN_CONNECTION_NOTIFICATION_DATA\n\nPROCESS_POWER_THROTTLING_STATE\nPROCESS_POWER_THROTTLING_CURRENT_VERSION\nPROCESS_POWER_THROTTLING_EXECUTION_SPEED\n\nGetCurrentProcess\nSetProcessInformation\nSetPriorityClass\n\nGetSystemInfo\nCallNtPowerInformation\n\nGetLocaleInfoEx\n\nCreateFile\nDeviceIoControl\n\nGetSystemPowerStatus\n\nSetupDiEnumDeviceInfo\nSetupDiEnumDeviceInterfaces\nSetupDiGetClassDevs\nSetupDiGetDeviceInterfaceDetail\nSetupDiGetDeviceProperty\nSetupDiGetDeviceInstanceId\nSetupDiGetClassDevs\nSetupDiClassNameFromGuid\nSetupDiCreateDeviceInfoList\nSetupDiOpenDeviceInterface\n\nHidD_FreePreparsedData\nHidD_GetAttributes\nHidD_GetFeature\nHidD_GetHidGuid\nHidD_GetPreparsedData\nHidD_SetFeature\nHidP_GetCaps\n\nCM_Get_DevNode_Status\n\nChangeServiceConfig\nCloseServiceHandle\nOpenSCManager\nOpenService\n\nSHGetKnownFolderPath\n\nGetKeyState\n\nGetFirmwareEnvironmentVariableEx\nSetFirmwareEnvironmentVariableEx\n\nAdjustTokenPrivileges\nGetCurrentProcess\nLookupPrivilegeValue\nOpenProcessToken\n\nRegisterDeviceNotification\nUnregisterDeviceNotification\n\nRegisterPowerSettingNotification\nUnregisterPowerSettingNotification\n\nCallNextHookEx\nGetForegroundWindow\nSetForegroundWindow\nGetDesktopWindow\nGetShellWindow\nGetWindowRect\nSetWindowsHookEx\nGetWindowThreadProcessId\nUnhookWindowsHookEx\n\nDisplayConfigGetDeviceInfo\nDisplayConfigSetDeviceInfo\n\nMonitorFromPoint\nGetMonitorInfoW\nGetDpiForMonitor\n\nRegNotifyChangeKeyValue\n\nSendInput\nSendMessage\nSendNotifyMessage\n\nCallNtPowerInformation\n\nK32GetModuleFileNameExW\n\nPowerEnumerate\nPowerReadFriendlyName\nPowerGetActiveScheme\nPowerSetActiveScheme\nPowerWriteACValueIndex\nPowerWriteDCValueIndex\nPowerRegisterForEffectivePowerModeNotifications\nPowerUnregisterFromEffectivePowerModeNotifications\nPowerRegisterSuspendResumeNotification\nPowerUnregisterSuspendResumeNotification\n\nShell_NotifyIcon\nRegisterWindowMessage\n\nWlanOpenHandle\nWlanCloseHandle\nWlanRegisterNotification\n\nMONITORINFOF_PRIMARY\n\nAC_SRC_ALPHA\nAC_SRC_OVER\nCreateCompatibleDC\nDeleteDC\nDeleteObject\nGetDC\nGetWindowRect\nReleaseDC\nSelectObject\nSetWindowPos\nShowWindow\nUpdateLayeredWindow\nWINDOW_STYLE\nWINDOW_EX_STYLE\n\nWTSINFOEXW\nWTS_INFO_CLASS\nWTS_SESSIONSTATE_UNKNOWN\nWTSGetActiveConsoleSessionId\nWTSQuerySessionInformation\nWTS_CURRENT_SERVER_HANDLE\nWTSFreeMemory\nWTS_SESSIONSTATE_LOCK\nWTS_SESSIONSTATE_UNLOCK\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/AbstractPackageDownloader.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Security.Cryptography;\nusing System.Text.RegularExpressions;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader;\n\npublic abstract class AbstractPackageDownloader(HttpClientFactory httpClientFactory) : IPackageDownloader\n{\n    protected HttpClientFactory HttpClientFactory => httpClientFactory;\n\n    public abstract Task<List<Package>> GetPackagesAsync(string machineType, OS os, IProgress<float>? progress = null, CancellationToken token = default);\n\n    public async Task<string> DownloadPackageFileAsync(Package package, string location, IProgress<float>? progress = null, CancellationToken token = default)\n    {\n        using var httpClient = httpClientFactory.Create();\n\n        var tempPath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString());\n\n        await using (var fileStream = File.OpenWrite(tempPath))\n            await httpClient.DownloadAsync(package.FileLocation, fileStream, progress, token).ConfigureAwait(false);\n\n        await TryValidateChecksum(package, tempPath, httpClient, token).ConfigureAwait(false);\n\n        var filename = SanitizeFileName(package.Title) + \" - \" + package.FileName;\n        var finalPath = Path.Combine(location, filename);\n\n        File.Move(tempPath, finalPath, true);\n\n        return finalPath;\n    }\n\n    private static async Task TryValidateChecksum(Package package, string tempPath, HttpClient httpClient, CancellationToken token)\n    {\n        await using var fileStream = File.OpenRead(tempPath);\n        using var managedSha256 = SHA256.Create();\n\n        var fileSha256Bytes = await managedSha256.ComputeHashAsync(fileStream, token).ConfigureAwait(false);\n        var fileSha256 = fileSha256Bytes.Aggregate(string.Empty, (current, b) => current + b.ToString(\"X2\"));\n\n        if (!string.IsNullOrEmpty(package.FileCrc) && fileSha256.Equals(package.FileCrc, StringComparison.InvariantCultureIgnoreCase))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Package file checksum match. [fileName={package.FileName}, fileLocation={package.FileLocation}, fileCrc={package.FileCrc}]\");\n            return;\n        }\n\n        try\n        {\n            var externalSha256 = await httpClient.GetStringAsync($\"{package.FileLocation}.sha256\", token).ConfigureAwait(false);\n            if (fileSha256.Equals(externalSha256, StringComparison.InvariantCultureIgnoreCase))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"External file checksum match. [fileName={package.FileName}, fileLocation={package.FileLocation}, fileCrc={package.FileCrc}]\");\n                return;\n            }\n        }\n        catch (HttpRequestException ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"External file checksum not found. [statusCode={ex.StatusCode}, fileName={package.FileName}, fileLocation={package.FileLocation}, fileCrc={package.FileCrc}]\");\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"File checksum mismatch. [fileName={package.FileName}, fileLocation={package.FileLocation}]\");\n\n        throw new InvalidDataException(\"File checksum mismatch\");\n    }\n\n    private static string SanitizeFileName(string name)\n    {\n        var invalidChars = Regex.Escape(new string(Path.GetInvalidFileNameChars()));\n        var invalidRegStr = string.Format(@\"([{0}]*\\.+$)|([{0}]+)\", invalidChars);\n        return Regex.Replace(name, invalidRegStr, \"_\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/AndPackageRule.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct AndPackageRule : IPackageRule\n{\n    private IEnumerable<IPackageRule> Rules { get; init; }\n\n    public static bool TryCreate(IEnumerable<IPackageRule> rules, out AndPackageRule value)\n    {\n        value = new AndPackageRule { Rules = rules };\n        return true;\n    }\n\n    public async Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> driverInfoCache, HttpClient httpClient, CancellationToken token)\n    {\n        foreach (var rule in Rules)\n        {\n            if (!await rule.CheckDependenciesSatisfiedAsync(driverInfoCache, httpClient, token).ConfigureAwait(false))\n                return false;\n        }\n\n        return true;\n    }\n\n    public async Task<bool> DetectInstallNeededAsync(List<DriverInfo> driverInfoCache, HttpClient httpClient, CancellationToken token)\n    {\n        foreach (var rule in Rules)\n        {\n            if (!await rule.DetectInstallNeededAsync(driverInfoCache, httpClient, token).ConfigureAwait(false))\n                return false;\n        }\n\n        return true;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/BiosPackageRule.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Text.RegularExpressions;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly partial struct BiosPackageRule : IPackageRule\n{\n    [GeneratedRegex(\"^[A-Z0-9]{4}\")]\n    private static partial Regex PrefixRegex();\n\n    [GeneratedRegex(\"[0-9]{2}\")]\n    private static partial Regex VersionRegex();\n\n    private string[] Levels { get; init; }\n\n    public static bool TryCreate(XmlNode? node, out BiosPackageRule value)\n    {\n        var levels = node?.SelectNodes(\"Level\")?\n            .OfType<XmlNode>()\n            .Select(n => n.InnerText)\n            .ToArray() ?? [];\n\n        if (levels.IsEmpty())\n        {\n            value = default;\n            return false;\n        }\n\n        value = new BiosPackageRule { Levels = levels };\n        return true;\n    }\n\n    public async Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> driverInfoCache, HttpClient httpClient, CancellationToken token)\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n        var currentBios = mi.BiosVersion;\n\n        var result = Levels.Any((global::System.Func<string, bool>)(level =>\n        {\n            var levelPrefix = PrefixRegex().Match(level).Value;\n            var levelVersion = int.Parse(VersionRegex().Match(level).Value);\n            return currentBios.HasValue && levelPrefix == currentBios.Value.Prefix && levelVersion == currentBios.Value.Version;\n        }));\n\n        return result;\n    }\n\n    public async Task<bool> DetectInstallNeededAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3)\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n        var currentBios = mi.BiosVersion;\n\n        var result = Levels.All((global::System.Func<string, bool>)(level =>\n        {\n            var levelPrefix = PrefixRegex().Match(level).Value;\n            var levelVersion = int.Parse(VersionRegex().Match(level).Value);\n            return currentBios.HasValue && levelPrefix == currentBios.Value.Prefix && levelVersion > currentBios.Value.Version;\n        }));\n\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/CpuAddressWidthPackageRule.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct CpuAddressWidthPackageRule : IPackageRule\n{\n    private int Value { get; init; }\n\n    public static bool TryCreate(XmlNode? node, out CpuAddressWidthPackageRule value)\n    {\n        var addressWidthString = node?.SelectSingleNode(\"AddressWidth\")?.InnerText;\n\n        if (addressWidthString is null || !int.TryParse(addressWidthString, out var addressWidth))\n        {\n            value = default;\n            return false;\n        }\n\n        value = new CpuAddressWidthPackageRule { Value = addressWidth };\n        return true;\n    }\n\n    public Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3) => CheckCpuAddressWidthAsync();\n\n    public Task<bool> DetectInstallNeededAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3) => CheckCpuAddressWidthAsync();\n\n    private async Task<bool> CheckCpuAddressWidthAsync()\n    {\n        var addressWidth = await WMI.Win32.Processor.GetAddressWidthAsync().ConfigureAwait(false);\n        var result = Value == addressWidth;\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/DriverPackageRule.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.Extensions;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct DriverPackageRule : IPackageRule\n{\n    private string[] HardwareIds { get; init; }\n    private DateTime? Date { get; init; }\n    private Version? Version { get; init; }\n\n    public static bool TryCreate(XmlNode? node, out DriverPackageRule value)\n    {\n        var hardwareIds = node?.SelectNodes(\"HardwareID\")?\n            .OfType<XmlNode>()\n            .Select(n => n.InnerText)\n            .ToArray() ?? [];\n        var dateString = node?.SelectSingleNode(\"Date\")?.InnerText;\n        var versionString = node?.SelectSingleNode(\"Version\")?.InnerText;\n\n        DateTime? date = null;\n        if (DateTime.TryParse(dateString, out var d))\n            date = d;\n\n        Version? version = null;\n        if (Version.TryParse(RemoveNonVersionCharacters(versionString), out var v))\n            version = v;\n\n        if (hardwareIds.IsEmpty())\n        {\n            value = default;\n            return false;\n        }\n\n        value = new DriverPackageRule { HardwareIds = hardwareIds, Date = date, Version = version };\n        return true;\n    }\n\n    public Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> driverInfoCache, HttpClient _1, CancellationToken _2)\n    {\n        var driverInfo = FindMatchingDriverInfo(HardwareIds, driverInfoCache);\n\n        if (string.IsNullOrEmpty(driverInfo.HardwareId))\n            return Task.FromResult(false);\n\n        var result = !VerifyByDateVersion(driverInfo);\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> DetectInstallNeededAsync(List<DriverInfo> driverInfoCache, HttpClient _1, CancellationToken _2)\n    {\n        var driverInfo = FindMatchingDriverInfo(HardwareIds, driverInfoCache);\n\n        if (string.IsNullOrEmpty(driverInfo.HardwareId))\n            return Task.FromResult(false);\n\n        var result = VerifyByDateVersion(driverInfo);\n        return Task.FromResult(result);\n    }\n\n    private bool VerifyByDateVersion(DriverInfo driverInfo)\n    {\n        if (Date is not null && driverInfo.Date is not null && Version is not null && driverInfo.Version is not null)\n        {\n            if (Date < driverInfo.Date)\n                return false;\n\n            return Version > driverInfo.Version;\n        }\n\n        if (Version is not null && driverInfo.Version is not null)\n        {\n            var result = Version > driverInfo.Version;\n            return result;\n        }\n\n        return false;\n    }\n\n    private static string RemoveNonVersionCharacters(string? versionString)\n    {\n        var arr = versionString?.ToCharArray() ?? [];\n        arr = Array.FindAll(arr, c => char.IsDigit(c) || c == '.');\n        return new string(arr);\n    }\n\n    private static DriverInfo FindMatchingDriverInfo(IEnumerable<string> hardwareIds, IEnumerable<DriverInfo> driverInfoCache)\n    {\n        return driverInfoCache.FirstOrDefault(di => hardwareIds.Any(hardwareId =>\n        {\n            var result = di.DeviceId.StartsWith(hardwareId, StringComparison.InvariantCultureIgnoreCase);\n            result |= di.HardwareId.StartsWith(hardwareId, StringComparison.InvariantCultureIgnoreCase);\n            return result;\n        }));\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/ExternalDetectionRule.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct ExternalDetectionRule : IPackageRule\n{\n    private const string TEMP_FOLDER_SUB_FOLDER = \"external_package_detection\";\n\n    private int[] ReturnCodes { get; init; }\n    private string Command { get; init; }\n    private string Url { get; init; }\n    private string FileName { get; init; }\n    private string PackageName { get; init; }\n\n    public static bool TryCreate(XmlNode? node, XmlDocument document, string baseLocation, out ExternalDetectionRule value)\n    {\n        var command = node?.InnerText;\n        var returnCodes = node?.Attributes?.OfType<XmlAttribute>()\n            .FirstOrDefault(a => a.Name == \"rc\")?\n            .InnerText\n            .Split(\",\")\n            .Select(s => int.TryParse(s, out var result) ? result : -1)\n            .Where(i => i >= 0)\n            .Distinct()\n            .ToArray() ?? [];\n        var externalFile = document.SelectSingleNode(\"/Package/Files/External/File/Name\")?.InnerText;\n        var packageName = document.SelectSingleNode(\"/Package/@id\")?.InnerText;\n\n        if (command is null || returnCodes.IsEmpty() || externalFile is null || packageName is null)\n        {\n            value = default;\n            return false;\n        }\n\n        value = new ExternalDetectionRule\n        {\n            Command = command,\n            ReturnCodes = returnCodes,\n            Url = $\"{baseLocation}/{externalFile}\",\n            FileName = externalFile,\n            PackageName = packageName\n        };\n        return true;\n    }\n\n    public Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> _, HttpClient httpClient, CancellationToken token) => CheckExternalDependency(httpClient, token);\n\n    public Task<bool> DetectInstallNeededAsync(List<DriverInfo> _, HttpClient httpClient, CancellationToken token) => CheckExternalDependency(httpClient, token);\n\n    private async Task<bool> CheckExternalDependency(HttpClient httpClient, CancellationToken token)\n    {\n        var packagePath = Path.Combine(Folders.Temp, TEMP_FOLDER_SUB_FOLDER, PackageName);\n        var filePath = Path.Combine(packagePath, FileName);\n\n        if (!Directory.Exists(packagePath))\n            Directory.CreateDirectory(packagePath);\n\n        if (!File.Exists(filePath))\n        {\n            await using var fileStream = File.OpenWrite(filePath);\n            await httpClient.DownloadAsync(Url, fileStream, null, token).ConfigureAwait(false);\n        }\n\n        var executable = Command.Split(' ').FirstOrDefault();\n        var arguments = string.Join(' ', Command.Split(' ').Skip(1));\n\n        if (executable is null)\n            return false;\n\n        // ReSharper disable StringLiteralTypo\n        if (executable.Contains(\"%PACKAGEPATH%\"))\n            executable = executable.Replace(\"%PACKAGEPATH%\", packagePath);\n        // ReSharper restore StringLiteralTypo\n\n        if (!executable.Contains('\\\\'))\n            executable = Path.Combine(packagePath, executable);\n\n        var (exitCode, _) = await CMD.RunAsync(executable, arguments, token: token).ConfigureAwait(false);\n        var result = ReturnCodes.Contains(exitCode);\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/IPackageRule.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\npublic interface IPackageRule\n{\n    Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> driverInfoCache, HttpClient httpClient, CancellationToken token);\n\n    Task<bool> DetectInstallNeededAsync(List<DriverInfo> driverInfoCache, HttpClient httpClient, CancellationToken token);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/NotPackageRule.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct NotPackageRule : IPackageRule\n{\n    private IPackageRule Rule { get; init; }\n\n    public static bool TryCreate(IEnumerable<IPackageRule> rules, out NotPackageRule value)\n    {\n        var rule = rules.FirstOrDefault();\n        if (rule is null)\n        {\n            value = default;\n            return false;\n        }\n\n        value = new NotPackageRule { Rule = rule };\n        return true;\n    }\n\n    public async Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> driverInfoCache, HttpClient httpClient, CancellationToken token)\n    {\n        var result = !await Rule.CheckDependenciesSatisfiedAsync(driverInfoCache, httpClient, token).ConfigureAwait(false);\n        return result;\n    }\n\n    public async Task<bool> DetectInstallNeededAsync(List<DriverInfo> driverInfoCache, HttpClient httpClient, CancellationToken token)\n    {\n        var result = !await Rule.DetectInstallNeededAsync(driverInfoCache, httpClient, token).ConfigureAwait(false);\n        return result;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/OrPackageRule.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct OrPackageRule : IPackageRule\n{\n    private IEnumerable<IPackageRule> Rules { get; init; }\n\n    public static bool TryCreate(IEnumerable<IPackageRule> rules, out OrPackageRule value)\n    {\n        value = new OrPackageRule { Rules = rules };\n        return true;\n    }\n\n    public async Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> driverInfoCache, HttpClient httpClient, CancellationToken token)\n    {\n        foreach (var rule in Rules)\n        {\n            if (await rule.CheckDependenciesSatisfiedAsync(driverInfoCache, httpClient, token).ConfigureAwait(false))\n                return true;\n        }\n\n        return false;\n    }\n\n    public async Task<bool> DetectInstallNeededAsync(List<DriverInfo> driverInfoCache, HttpClient httpClient, CancellationToken token)\n    {\n        foreach (var rule in Rules)\n        {\n            if (await rule.DetectInstallNeededAsync(driverInfoCache, httpClient, token).ConfigureAwait(false))\n                return true;\n        }\n\n        return false;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/OsPackageRule.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.Extensions;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct OsPackageRule : IPackageRule\n{\n    private string[] Oses { get; init; }\n\n    public static bool TryCreate(XmlNode? node, out OsPackageRule value)\n    {\n        var oses = node?.SelectNodes(\"OS\")?\n            .OfType<XmlNode>()\n            .Select(n => n.InnerText)\n            .ToArray() ?? [];\n\n        if (oses.IsEmpty())\n        {\n            value = default;\n            return false;\n        }\n\n        value = new OsPackageRule { Oses = oses };\n        return true;\n    }\n\n    public Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3) => OsVersionMatch();\n\n    public Task<bool> DetectInstallNeededAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3) => OsVersionMatch();\n\n    private Task<bool> OsVersionMatch()\n    {\n        var currentOs = OSExtensions.GetCurrent();\n\n        var result = Oses.Any(os =>\n        {\n            switch (currentOs)\n            {\n                case OS.Windows11 when os.StartsWith(\"win11\", StringComparison.InvariantCultureIgnoreCase):\n                case OS.Windows10 when os.StartsWith(\"win10\", StringComparison.InvariantCultureIgnoreCase):\n                case OS.Windows8 when os.StartsWith(\"win8\", StringComparison.InvariantCultureIgnoreCase):\n                case OS.Windows7 when os.StartsWith(\"win7\", StringComparison.InvariantCultureIgnoreCase):\n                    return true;\n                default:\n                    return false;\n            }\n        });\n\n        return Task.FromResult(result);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/PnPIdPackageRule.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct PnPIdPackageRule : IPackageRule\n{\n    private string HardwareId { get; init; }\n\n    public static bool TryCreate(XmlNode? node, out PnPIdPackageRule value)\n    {\n        var hardwareId = node?.InnerText;\n\n        if (hardwareId is null)\n        {\n            value = default;\n            return false;\n        }\n\n        value = new() { HardwareId = hardwareId };\n        return true;\n    }\n\n    public Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> driverInfoCache, HttpClient _1, CancellationToken _2)\n    {\n        var result = MatchingDriverInfoExists(HardwareId, driverInfoCache);\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> DetectInstallNeededAsync(List<DriverInfo> driverInfoCache, HttpClient _1, CancellationToken _2)\n    {\n        var result = MatchingDriverInfoExists(HardwareId, driverInfoCache);\n        return Task.FromResult(result);\n    }\n    private static bool MatchingDriverInfoExists(string hardwareId, IEnumerable<DriverInfo> driverInfoCache)\n    {\n        return driverInfoCache.Any(di =>\n        {\n            var result = di.DeviceId.StartsWith(hardwareId, StringComparison.InvariantCultureIgnoreCase);\n            result |= di.HardwareId.StartsWith(hardwareId, StringComparison.InvariantCultureIgnoreCase);\n            return result;\n        });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/RegistryKeyPackageRule.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct RegistryKeyPackageRule : IPackageRule\n{\n    private string Key { get; init; }\n\n    public static bool TryCreate(XmlNode? node, out RegistryKeyPackageRule value)\n    {\n        var key = node?.SelectSingleNode(\"Key\")?.InnerText;\n\n        if (key is null)\n        {\n            value = default;\n            return false;\n        }\n\n        value = new RegistryKeyPackageRule { Key = key };\n        return true;\n    }\n\n    public Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3) => KeyExists();\n\n    public Task<bool> DetectInstallNeededAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3) => KeyExists();\n\n    private Task<bool> KeyExists()\n    {\n        var hive = Key.Split('\\\\').FirstOrDefault();\n        var path = string.Join('\\\\', Key.Split('\\\\').Skip(1));\n\n        if (hive is null || string.IsNullOrEmpty(path))\n            return Task.FromResult(false);\n\n        var result = Registry.KeyExists(hive, path);\n        return Task.FromResult(result);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/RegistryKeyValuePackageRule.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct RegistryKeyValuePackageRule : IPackageRule\n{\n    private string Key { get; init; }\n    private string KeyName { get; init; }\n    private Version Version { get; init; }\n\n    public static bool TryCreate(XmlNode? node, out RegistryKeyValuePackageRule value)\n    {\n        var key = node?.SelectSingleNode(\"Key\")?.InnerText;\n        var keyName = node?.SelectSingleNode(\"KeyName\")?.InnerText;\n        var versionString = node?.SelectSingleNode(\"Version\")?.InnerText;\n\n\n        Version? version = null;\n        if (Version.TryParse(RemoveNonVersionCharacters(versionString), out var v))\n            version = v;\n\n        if (key is null || keyName is null || version is null)\n        {\n            value = default;\n            return false;\n        }\n\n        value = new RegistryKeyValuePackageRule { Key = key, KeyName = keyName, Version = version };\n        return true;\n    }\n\n    public Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3)\n    {\n        var hive = Key.Split('\\\\').FirstOrDefault();\n        var path = string.Join('\\\\', Key.Split('\\\\').Skip(1));\n\n        if (hive is null || string.IsNullOrEmpty(path))\n            return Task.FromResult(false);\n\n        var keyExists = Registry.ValueExists(hive, path, KeyName);\n        if (!keyExists)\n            return Task.FromResult(true);\n\n        var versionString = Registry.GetValue(hive, path, KeyName, string.Empty);\n\n        if (!Version.TryParse(versionString, out var version))\n            return Task.FromResult(false);\n\n        var result = Version <= version;\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> DetectInstallNeededAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3)\n    {\n        var hive = Key.Split('\\\\').FirstOrDefault();\n        var path = string.Join('\\\\', Key.Split('\\\\').Skip(1));\n\n        if (hive is null || string.IsNullOrEmpty(path))\n            return Task.FromResult(false);\n\n        var keyExists = Registry.ValueExists(hive, path, KeyName);\n        if (!keyExists)\n            return Task.FromResult(false);\n\n        var versionString = Registry.GetValue(hive, path, KeyName, string.Empty);\n\n        if (versionString.Any(char.IsWhiteSpace))\n            versionString = versionString.Split(null).FirstOrDefault(versionString);\n\n        if (!Version.TryParse(versionString, out var version))\n            return Task.FromResult(false);\n\n        var result = Version > version;\n        return Task.FromResult(result);\n    }\n\n    private static string RemoveNonVersionCharacters(string? versionString)\n    {\n        var arr = versionString?.ToCharArray() ?? [];\n        arr = Array.FindAll(arr, c => char.IsDigit(c) || c == '.');\n        return new string(arr);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/Rules/WindowsBuildVersionPackageRule.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.System.Management;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\n\ninternal readonly struct WindowsBuildVersionPackageRule : IPackageRule\n{\n    private int Version { get; init; }\n\n    public static bool TryCreate(XmlNode? node, out WindowsBuildVersionPackageRule value)\n    {\n        var versionString = node?.SelectSingleNode(\"AddressWidth\")?.InnerText;\n\n        if (versionString is null || !int.TryParse(RemoveNonVersionCharacters(versionString), out var version))\n        {\n            value = default;\n            return false;\n        }\n\n        value = new WindowsBuildVersionPackageRule { Version = version };\n        return true;\n    }\n\n    public Task<bool> CheckDependenciesSatisfiedAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3) => CheckBuildNumberAsync();\n\n    public Task<bool> DetectInstallNeededAsync(List<DriverInfo> _1, HttpClient _2, CancellationToken _3) => CheckBuildNumberAsync();\n\n    private async Task<bool> CheckBuildNumberAsync()\n    {\n        var buildNumberString = await WMI.Win32.OperatingSystem.GetBuildNumberAsync().ConfigureAwait(false);\n        var buildNumber = int.TryParse(buildNumberString, out var bn) ? bn : 0;\n        var result = Version <= buildNumber;\n        return result;\n    }\n\n    private static string RemoveNonVersionCharacters(string? versionString)\n    {\n        var arr = versionString?.ToCharArray() ?? [];\n        arr = Array.FindAll(arr, c => char.IsDigit(c) || c == '.');\n        return new string(arr);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/Detectors/VantagePackageUpdateDetector.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.PackageDownloader.Detectors.Rules;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader.Detectors;\n\ninternal class VantagePackageUpdateDetector\n{\n    private readonly List<DriverInfo> _driverInfoCache = [];\n\n    public async Task BuildDriverInfoCache()\n    {\n        var driverInfo = await WMI.Win32.PnpSignedDriver.ReadAsync().ConfigureAwait(false);\n        _driverInfoCache.Clear();\n        _driverInfoCache.AddRange(driverInfo);\n    }\n\n    public async Task<bool> DetectAsync(HttpClient httpClient, XmlDocument document, string baseLocation, CancellationToken token)\n    {\n        var dependenciesSatisfied = await CheckDependenciesSatisfiedAsync(httpClient, document, baseLocation, token).ConfigureAwait(false);\n        if (!dependenciesSatisfied)\n            return false;\n\n        return await DetectInstallAsync(httpClient, document, baseLocation, token).ConfigureAwait(false);\n    }\n\n    private async Task<bool> CheckDependenciesSatisfiedAsync(HttpClient httpClient, XmlDocument document, string baseLocation, CancellationToken token)\n    {\n        var node = document.SelectSingleNode(\"/Package/Dependencies\");\n        if (node is null || !node.HasChildNodes)\n            return false;\n\n        var rules = CreateRules(node, document, baseLocation);\n        if (!AndPackageRule.TryCreate(rules, out var rule))\n            return false;\n\n        var result = await rule.CheckDependenciesSatisfiedAsync(_driverInfoCache, httpClient, token).ConfigureAwait(false);\n        return result;\n    }\n\n    private async Task<bool> DetectInstallAsync(HttpClient httpClient, XmlDocument document, string baseLocation, CancellationToken token)\n    {\n        var node = document.SelectSingleNode(\"/Package/DetectInstall\");\n        if (node is null || !node.HasChildNodes)\n            return true;\n\n        var rules = CreateRules(node, document, baseLocation);\n        if (!AndPackageRule.TryCreate(rules, out var rule))\n            return false;\n\n        var result = await rule.DetectInstallNeededAsync(_driverInfoCache, httpClient, token).ConfigureAwait(false);\n        return result;\n    }\n\n    private static IEnumerable<IPackageRule> CreateRules(XmlNode? node, XmlDocument document, string baseLocation)\n    {\n        if (node is null)\n            yield break;\n\n        for (var i = 0; i < node.ChildNodes.Count; i++)\n        {\n            var childNode = node.ChildNodes[i];\n            if (childNode is null)\n                continue;\n\n            switch (childNode.Name)\n            {\n                case \"Or\":\n                    {\n                        var rules = CreateRules(childNode, document, baseLocation);\n                        if (OrPackageRule.TryCreate(rules, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"And\":\n                    {\n                        var rules = CreateRules(childNode, document, baseLocation);\n                        if (AndPackageRule.TryCreate(rules, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"Not\":\n                    {\n                        var rules = CreateRules(childNode, document, baseLocation);\n                        if (NotPackageRule.TryCreate(rules, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"_OS\":\n                    {\n                        if (OsPackageRule.TryCreate(childNode, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"_WindowsBuildVersion\":\n                    {\n                        if (WindowsBuildVersionPackageRule.TryCreate(childNode, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"_CPUAddressWidth\":\n                    {\n                        if (CpuAddressWidthPackageRule.TryCreate(childNode, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"_ExternalDetection\":\n                    {\n                        if (ExternalDetectionRule.TryCreate(childNode, document, baseLocation, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"_Driver\":\n                    {\n                        if (DriverPackageRule.TryCreate(childNode, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"_PnPID\":\n                    {\n                        if (PnPIdPackageRule.TryCreate(childNode, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"_Bios\":\n                    {\n                        if (BiosPackageRule.TryCreate(childNode, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"_RegistryKey\":\n                    {\n                        if (RegistryKeyPackageRule.TryCreate(childNode, out var value))\n                            yield return value;\n                        break;\n                    }\n                case \"_RegistryKeyValue\":\n                    {\n                        if (RegistryKeyValuePackageRule.TryCreate(childNode, out var value))\n                            yield return value;\n                        break;\n                    }\n                default:\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Unknown rule: {childNode.Name}.\");\n                        break;\n                    }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/IPackageDownloader.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader;\n\npublic interface IPackageDownloader\n{\n    Task<string> DownloadPackageFileAsync(Package package, string location, IProgress<float>? progress = null, CancellationToken token = default);\n    Task<List<Package>> GetPackagesAsync(string machineType, OS os, IProgress<float>? progress = null, CancellationToken token = default);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/PCSupportPackageDownloader.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text.Json.Nodes;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader;\n\npublic class PCSupportPackageDownloader(HttpClientFactory httpClientFactory)\n    : AbstractPackageDownloader(httpClientFactory)\n{\n    private const string CATALOG_BASE_URL = \"https://pcsupport.lenovo.com/us/en/api/v4/downloads/drivers?productId=\";\n\n    public override async Task<List<Package>> GetPackagesAsync(string machineType, OS os, IProgress<float>? progress = null, CancellationToken token = default)\n    {\n        var osString = os switch\n        {\n            OS.Windows11 => \"Windows 11\",\n            OS.Windows10 => \"Windows 10\",\n            OS.Windows8 => \"Windows 8\",\n            OS.Windows7 => \"Windows 7\",\n            _ => throw new InvalidOperationException(nameof(os)),\n        };\n\n        using var httpClient = HttpClientFactory.Create();\n        httpClient.DefaultRequestHeaders.Referrer = new Uri(\"https://pcsupport.lenovo.com/\");\n\n        progress?.Report(0);\n\n        var catalogJson = await httpClient.GetStringAsync($\"{CATALOG_BASE_URL}{machineType}\", token).ConfigureAwait(false);\n        var catalogJsonNode = JsonNode.Parse(catalogJson);\n        var downloadsNode = catalogJsonNode?[\"body\"]?[\"DownloadItems\"]?.AsArray();\n\n        if (downloadsNode is null)\n            return [];\n\n        var packages = new List<Package>();\n        foreach (var downloadNode in downloadsNode)\n        {\n            if (!IsCompatible(downloadNode, osString))\n                continue;\n\n            var package = ParsePackage(downloadNode!);\n            if (package is null)\n                continue;\n\n            packages.Add(package.Value);\n        }\n\n        return packages;\n    }\n\n    private static Package? ParsePackage(JsonNode downloadNode)\n    {\n        var id = downloadNode[\"ID\"]!.ToJsonString();\n        var category = downloadNode[\"Category\"]![\"Name\"]!.ToString();\n        var title = downloadNode[\"Title\"]!.ToString();\n        var description = downloadNode[\"Summary\"]!.ToString();\n        var version = downloadNode[\"SummaryInfo\"]![\"Version\"]!.ToString();\n\n        var filesNode = downloadNode[\"Files\"]!.AsArray();\n        var mainFileNode = filesNode.FirstOrDefault(n => n![\"TypeString\"]!.ToString().Equals(\"exe\", StringComparison.InvariantCultureIgnoreCase))\n                           ?? filesNode.FirstOrDefault(n => n![\"TypeString\"]!.ToString().Equals(\"zip\", StringComparison.InvariantCultureIgnoreCase))\n                           ?? filesNode.FirstOrDefault();\n\n        if (mainFileNode is null)\n            return null;\n\n        var fileLocation = mainFileNode[\"URL\"]!.ToString();\n        var fileName = new Uri(fileLocation).Segments.LastOrDefault(\"file\");\n        var fileSize = mainFileNode[\"Size\"]!.ToString();\n        var fileCrc = mainFileNode[\"SHA256\"]?.ToString();\n        var releaseDateUnix = long.Parse(mainFileNode[\"Date\"]![\"Unix\"]!.ToString());\n        var releaseDate = DateTimeOffset.FromUnixTimeMilliseconds(releaseDateUnix).DateTime;\n\n        var readmeFileNode = filesNode.FirstOrDefault(n => n![\"TypeString\"]!.ToString().Equals(\"txt readme\", StringComparison.InvariantCultureIgnoreCase))\n                              ?? filesNode.FirstOrDefault(n => n![\"TypeString\"]!.ToString().Equals(\"html\", StringComparison.InvariantCultureIgnoreCase));\n\n        var readme = readmeFileNode?[\"URL\"]?.ToString();\n\n        return new()\n        {\n            Id = id,\n            Title = title,\n            Description = title == description ? string.Empty : description,\n            Version = version,\n            Category = category,\n            FileName = fileName,\n            FileSize = fileSize,\n            FileCrc = fileCrc,\n            ReleaseDate = releaseDate,\n            Readme = readme,\n            FileLocation = fileLocation,\n        };\n    }\n\n    private static bool IsCompatible(JsonNode? downloadNode, string osString)\n    {\n        var operatingSystems = downloadNode?[\"OperatingSystemKeys\"]?.AsArray();\n\n        if (operatingSystems is null || operatingSystems.IsEmpty())\n            return true;\n\n        foreach (var operatingSystem in operatingSystems)\n            if (operatingSystem is not null && operatingSystem.ToString().StartsWith(osString, StringComparison.CurrentCultureIgnoreCase))\n                return true;\n\n        return false;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/PackageDownloaderFactory.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader;\n\npublic class PackageDownloaderFactory(\n    PCSupportPackageDownloader pcSupportPackageDownloader,\n    VantagePackageDownloader vantagePackageDownloader)\n{\n    public enum Type\n    {\n        PCSupport,\n        Vantage,\n    }\n\n    public IPackageDownloader GetInstance(Type type) => type switch\n    {\n        Type.PCSupport => pcSupportPackageDownloader,\n        Type.Vantage => vantagePackageDownloader,\n        _ => throw new InvalidOperationException(nameof(type)),\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/UpdateCatalogNotFoundException.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader;\n\npublic class UpdateCatalogNotFoundException(string? message, Exception? ex) : Exception(message, ex);\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/PackageDownloader/VantagePackageDownloader.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Xml;\nusing LenovoLegionToolkit.Lib.PackageDownloader.Detectors;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.PackageDownloader;\n\npublic class VantagePackageDownloader(HttpClientFactory httpClientFactory)\n    : AbstractPackageDownloader(httpClientFactory)\n{\n    private readonly struct PackageDefinition(string location, string category)\n    {\n        public string Location { get; } = location;\n        public string Category { get; } = category;\n    }\n\n    private const string CATALOG_BASE_URL = \"https://download.lenovo.com/catalog/\";\n\n    public override async Task<List<Package>> GetPackagesAsync(string machineType, OS os, IProgress<float>? progress = null, CancellationToken token = default)\n    {\n        progress?.Report(0);\n\n        var osString = os switch\n        {\n            OS.Windows11 => \"win11\",\n            OS.Windows10 => \"win10\",\n            OS.Windows8 => \"win8\",\n            OS.Windows7 => \"win7\",\n            _ => throw new ArgumentOutOfRangeException(nameof(os), os, null)\n        };\n\n        using var httpClient = HttpClientFactory.Create();\n\n        var packageDefinitions = await GetPackageDefinitionsAsync(httpClient, $\"{CATALOG_BASE_URL}/{machineType}_{osString}.xml\", token).ConfigureAwait(false);\n\n        var updateDetector = new VantagePackageUpdateDetector();\n        await updateDetector.BuildDriverInfoCache().ConfigureAwait(false);\n\n        var count = 0;\n        var totalCount = packageDefinitions.Count;\n\n        var packages = new List<Package>();\n        foreach (var packageDefinition in packageDefinitions)\n        {\n            var package = await GetPackage(httpClient, updateDetector, packageDefinition, token).ConfigureAwait(false);\n            packages.Add(package);\n\n            count++;\n\n            // ReSharper disable once PossibleLossOfFraction\n            progress?.Report(count * 100 / totalCount);\n        }\n\n        return packages;\n    }\n\n    private static async Task<List<PackageDefinition>> GetPackageDefinitionsAsync(HttpClient httpClient, string location, CancellationToken token)\n    {\n        string catalogString;\n\n        try\n        {\n            catalogString = await httpClient.GetStringAsync(location, token).ConfigureAwait(false);\n        }\n        catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound)\n        {\n            throw new UpdateCatalogNotFoundException(ex.Message, ex);\n        }\n\n        var document = new XmlDocument();\n        document.LoadXml(catalogString);\n\n        var packageNodes = document.SelectNodes(\"/packages/package\");\n        if (packageNodes is null)\n            return [];\n\n        var packageDefinitions = new List<PackageDefinition>();\n        foreach (var packageNode in packageNodes.OfType<XmlElement>())\n        {\n            token.ThrowIfCancellationRequested();\n\n            var pLocation = packageNode.SelectSingleNode(\"location\")?.InnerText;\n            var pCategory = packageNode.SelectSingleNode(\"category\")?.InnerText;\n\n            if (string.IsNullOrWhiteSpace(pLocation) || string.IsNullOrWhiteSpace(pCategory))\n                continue;\n\n            packageDefinitions.Add(new(pLocation, pCategory));\n        }\n\n        return packageDefinitions;\n    }\n\n    private static async Task<Package> GetPackage(HttpClient httpClient, VantagePackageUpdateDetector updateDetector, PackageDefinition packageDefinition, CancellationToken token)\n    {\n        var location = packageDefinition.Location;\n        var baseLocation = location.Remove(location.LastIndexOf(\"/\", StringComparison.InvariantCultureIgnoreCase));\n\n        var packageString = await httpClient.GetStringAsync(location, token).ConfigureAwait(false);\n\n        var document = new XmlDocument();\n        document.LoadXml(packageString);\n\n        var id = document.SelectSingleNode(\"/Package/@id\")!.InnerText;\n        var title = document.SelectSingleNode(\"/Package/Title/Desc\")!.InnerText;\n        var version = document.SelectSingleNode(\"/Package/@version\")!.InnerText;\n        var fileName = document.SelectSingleNode(\"/Package/Files/Installer/File/Name\")!.InnerText;\n        var fileCrc = document.SelectSingleNode(\"/Package/Files/Installer/File/CRC\")?.InnerText;\n        var fileSizeBytes = int.Parse(document.SelectSingleNode(\"/Package/Files/Installer/File/Size\")!.InnerText);\n        var fileSize = $\"{fileSizeBytes / 1024.0 / 1024.0:0.00} MB\";\n        var releaseDateString = document.SelectSingleNode(\"/Package/ReleaseDate\")!.InnerText;\n        var releaseDate = DateTime.Parse(releaseDateString);\n        var readmeName = document.SelectSingleNode(\"/Package/Files/Readme/File/Name\")?.InnerText;\n        var readme = $\"{baseLocation}/{readmeName}\";\n        var fileLocation = $\"{baseLocation}/{fileName}\";\n        var rebootString = document.SelectSingleNode(\"/Package/Reboot/@type\")!.InnerText;\n        var reboot = int.TryParse(rebootString, out var rebootInt) ? (RebootType)rebootInt : RebootType.NotRequired;\n\n        var isUpdate = false;\n        try\n        {\n            isUpdate = await updateDetector.DetectAsync(httpClient, document, baseLocation, token)\n                .ConfigureAwait(false);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't detect update for package {id}. [title={title}, location={location}]\",\n                    ex);\n        }\n\n        return new()\n        {\n            Id = id,\n            Title = title,\n            Description = string.Empty,\n            Version = version,\n            Category = packageDefinition.Category,\n            FileName = fileName,\n            FileSize = fileSize,\n            FileCrc = fileCrc,\n            ReleaseDate = releaseDate,\n            Readme = readme,\n            FileLocation = fileLocation,\n            IsUpdate = isUpdate,\n            Reboot = reboot\n        };\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.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 LenovoLegionToolkit.Lib.Resources {\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    public class Resource {\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 Resource() {\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        public 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(\"LenovoLegionToolkit.Lib.Resources.Resource\", typeof(Resource).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        public 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 string similar to Custom.\n        /// </summary>\n        public static string AccentColorSource_Custom {\n            get {\n                return ResourceManager.GetString(\"AccentColorSource_Custom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to System.\n        /// </summary>\n        public static string AccentColorSource_System {\n            get {\n                return ResourceManager.GetString(\"AccentColorSource_System\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string AlwaysOnUSBState_Off {\n            get {\n                return ResourceManager.GetString(\"AlwaysOnUSBState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On, always.\n        /// </summary>\n        public static string AlwaysOnUSBState_OnAlways {\n            get {\n                return ResourceManager.GetString(\"AlwaysOnUSBState_OnAlways\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On, when sleeping.\n        /// </summary>\n        public static string AlwaysOnUSBState_OnWhenSleeping {\n            get {\n                return ResourceManager.GetString(\"AlwaysOnUSBState_OnWhenSleeping\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disabled.\n        /// </summary>\n        public static string AutorunState_Disabled {\n            get {\n                return ResourceManager.GetString(\"AutorunState_Disabled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enabled.\n        /// </summary>\n        public static string AutorunState_Enabled {\n            get {\n                return ResourceManager.GetString(\"AutorunState_Enabled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enabled, delayed.\n        /// </summary>\n        public static string AutorunState_EnabledDelayed {\n            get {\n                return ResourceManager.GetString(\"AutorunState_EnabledDelayed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string BatteryNightChargeState_Off {\n            get {\n                return ResourceManager.GetString(\"BatteryNightChargeState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string BatteryNightChargeState_On {\n            get {\n                return ResourceManager.GetString(\"BatteryNightChargeState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Conservation.\n        /// </summary>\n        public static string BatteryState_Conservation {\n            get {\n                return ResourceManager.GetString(\"BatteryState_Conservation\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Normal.\n        /// </summary>\n        public static string BatteryState_Normal {\n            get {\n                return ResourceManager.GetString(\"BatteryState_Normal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rapid Charge.\n        /// </summary>\n        public static string BatteryState_RapidCharge {\n            get {\n                return ResourceManager.GetString(\"BatteryState_RapidCharge\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string FlipToStartState_Off {\n            get {\n                return ResourceManager.GetString(\"FlipToStartState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string FlipToStartState_On {\n            get {\n                return ResourceManager.GetString(\"FlipToStartState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string FnLockState_Off {\n            get {\n                return ResourceManager.GetString(\"FnLockState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string FnLockState_On {\n            get {\n                return ResourceManager.GetString(\"FnLockState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Powered Off.\n        /// </summary>\n        public static string GPUController_PoweredOff {\n            get {\n                return ResourceManager.GetString(\"GPUController_PoweredOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Powered On.\n        /// </summary>\n        public static string GPUController_PoweredOn {\n            get {\n                return ResourceManager.GetString(\"GPUController_PoweredOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string HDRState_Off {\n            get {\n                return ResourceManager.GetString(\"HDRState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string HDRState_On {\n            get {\n                return ResourceManager.GetString(\"HDRState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to dGPU.\n        /// </summary>\n        public static string HybridModeState_Off {\n            get {\n                return ResourceManager.GetString(\"HybridModeState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hybrid.\n        /// </summary>\n        public static string HybridModeState_On {\n            get {\n                return ResourceManager.GetString(\"HybridModeState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hybrid-Auto.\n        /// </summary>\n        public static string HybridModeState_OnAuto {\n            get {\n                return ResourceManager.GetString(\"HybridModeState_OnAuto\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hybrid-iGPU.\n        /// </summary>\n        public static string HybridModeState_OnIGPUOnly {\n            get {\n                return ResourceManager.GetString(\"HybridModeState_OnIGPUOnly\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to AC Adapter.\n        /// </summary>\n        public static string InstantBootState_AcAdapter {\n            get {\n                return ResourceManager.GetString(\"InstantBootState_AcAdapter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to AC and USB PD.\n        /// </summary>\n        public static string InstantBootState_AcAdapterAndUsbPowerDelivery {\n            get {\n                return ResourceManager.GetString(\"InstantBootState_AcAdapterAndUsbPowerDelivery\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string InstantBootState_Off {\n            get {\n                return ResourceManager.GetString(\"InstantBootState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to USB Power Delivery.\n        /// </summary>\n        public static string InstantBootState_UsbPowerDelivery {\n            get {\n                return ResourceManager.GetString(\"InstantBootState_UsbPowerDelivery\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string MicrophoneState_Off {\n            get {\n                return ResourceManager.GetString(\"MicrophoneState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string MicrophoneState_On {\n            get {\n                return ResourceManager.GetString(\"MicrophoneState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Alt.\n        /// </summary>\n        public static string ModifierKey_Alt {\n            get {\n                return ResourceManager.GetString(\"ModifierKey_Alt\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ctrl.\n        /// </summary>\n        public static string ModifierKey_Ctrl {\n            get {\n                return ResourceManager.GetString(\"ModifierKey_Ctrl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shift.\n        /// </summary>\n        public static string ModifierKey_Shift {\n            get {\n                return ResourceManager.GetString(\"ModifierKey_Shift\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Long.\n        /// </summary>\n        public static string NotificationDuration_Long {\n            get {\n                return ResourceManager.GetString(\"NotificationDuration_Long\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Normal.\n        /// </summary>\n        public static string NotificationDuration_Normal {\n            get {\n                return ResourceManager.GetString(\"NotificationDuration_Normal\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Short.\n        /// </summary>\n        public static string NotificationDuration_Short {\n            get {\n                return ResourceManager.GetString(\"NotificationDuration_Short\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bottom center.\n        /// </summary>\n        public static string NotificationPosition_BottomCenter {\n            get {\n                return ResourceManager.GetString(\"NotificationPosition_BottomCenter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bottom left.\n        /// </summary>\n        public static string NotificationPosition_BottomLeft {\n            get {\n                return ResourceManager.GetString(\"NotificationPosition_BottomLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bottom right.\n        /// </summary>\n        public static string NotificationPosition_BottomRight {\n            get {\n                return ResourceManager.GetString(\"NotificationPosition_BottomRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Center.\n        /// </summary>\n        public static string NotificationPosition_Center {\n            get {\n                return ResourceManager.GetString(\"NotificationPosition_Center\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Center left.\n        /// </summary>\n        public static string NotificationPosition_CenterLeft {\n            get {\n                return ResourceManager.GetString(\"NotificationPosition_CenterLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Center right.\n        /// </summary>\n        public static string NotificationPosition_CenterRight {\n            get {\n                return ResourceManager.GetString(\"NotificationPosition_CenterRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Top center.\n        /// </summary>\n        public static string NotificationPosition_TopCenter {\n            get {\n                return ResourceManager.GetString(\"NotificationPosition_TopCenter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Top left.\n        /// </summary>\n        public static string NotificationPosition_TopLeft {\n            get {\n                return ResourceManager.GetString(\"NotificationPosition_TopLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Top right.\n        /// </summary>\n        public static string NotificationPosition_TopRight {\n            get {\n                return ResourceManager.GetString(\"NotificationPosition_TopRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string OneLevelWhiteKeyboardBacklightState_Off {\n            get {\n                return ResourceManager.GetString(\"OneLevelWhiteKeyboardBacklightState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string OneLevelWhiteKeyboardBacklightState_On {\n            get {\n                return ResourceManager.GetString(\"OneLevelWhiteKeyboardBacklightState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string OverdriveState_Off {\n            get {\n                return ResourceManager.GetString(\"OverdriveState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string OverdriveState_On {\n            get {\n                return ResourceManager.GetString(\"OverdriveState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string PanelLogoBacklightState_Off {\n            get {\n                return ResourceManager.GetString(\"PanelLogoBacklightState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string PanelLogoBacklightState_On {\n            get {\n                return ResourceManager.GetString(\"PanelLogoBacklightState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string PortsBacklightState_Off {\n            get {\n                return ResourceManager.GetString(\"PortsBacklightState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string PortsBacklightState_On {\n            get {\n                return ResourceManager.GetString(\"PortsBacklightState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disabled.\n        /// </summary>\n        public static string PowerModeMappingMode_Disabled {\n            get {\n                return ResourceManager.GetString(\"PowerModeMappingMode_Disabled\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Windows Power Mode.\n        /// </summary>\n        public static string PowerModeMappingMode_WindowsPowerMode {\n            get {\n                return ResourceManager.GetString(\"PowerModeMappingMode_WindowsPowerMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Windows Power Plan.\n        /// </summary>\n        public static string PowerModeMappingMode_WindowsPowerPlan {\n            get {\n                return ResourceManager.GetString(\"PowerModeMappingMode_WindowsPowerPlan\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Balance.\n        /// </summary>\n        public static string PowerModeState_Balance {\n            get {\n                return ResourceManager.GetString(\"PowerModeState_Balance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom.\n        /// </summary>\n        public static string PowerModeState_GodMode {\n            get {\n                return ResourceManager.GetString(\"PowerModeState_GodMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Performance.\n        /// </summary>\n        public static string PowerModeState_Performance {\n            get {\n                return ResourceManager.GetString(\"PowerModeState_Performance\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quiet.\n        /// </summary>\n        public static string PowerModeState_Quiet {\n            get {\n                return ResourceManager.GetString(\"PowerModeState_Quiet\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to High.\n        /// </summary>\n        public static string RGBKeyboardBacklightBrightness_High {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightBrightness_High\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Low.\n        /// </summary>\n        public static string RGBKeyboardBacklightBrightness_Low {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightBrightness_Low\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Breath.\n        /// </summary>\n        public static string RGBKeyboardBacklightEffect_Breath {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightEffect_Breath\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smooth.\n        /// </summary>\n        public static string RGBKeyboardBacklightEffect_Smooth {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightEffect_Smooth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Static.\n        /// </summary>\n        public static string RGBKeyboardBacklightEffect_Static {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightEffect_Static\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wave Left.\n        /// </summary>\n        public static string RGBKeyboardBacklightEffect_WaveLTR {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightEffect_WaveLTR\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wave Right.\n        /// </summary>\n        public static string RGBKeyboardBacklightEffect_WaveRTL {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightEffect_WaveRTL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset 4.\n        /// </summary>\n        public static string RGBKeyboardBacklightPreset_Four {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightPreset_Four\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string RGBKeyboardBacklightPreset_Off {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightPreset_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset 1.\n        /// </summary>\n        public static string RGBKeyboardBacklightPreset_One {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightPreset_One\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset 3.\n        /// </summary>\n        public static string RGBKeyboardBacklightPreset_Three {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightPreset_Three\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset 2.\n        /// </summary>\n        public static string RGBKeyboardBacklightPreset_Two {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightPreset_Two\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fast.\n        /// </summary>\n        public static string RGBKeyboardBacklightSpeed_Fast {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightSpeed_Fast\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fastest.\n        /// </summary>\n        public static string RGBKeyboardBacklightSpeed_Fastest {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightSpeed_Fastest\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slow.\n        /// </summary>\n        public static string RGBKeyboardBacklightSpeed_Slow {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightSpeed_Slow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slowest.\n        /// </summary>\n        public static string RGBKeyboardBacklightSpeed_Slowest {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightSpeed_Slowest\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mute.\n        /// </summary>\n        public static string SpeakerState_Mute {\n            get {\n                return ResourceManager.GetString(\"SpeakerState_Mute\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unmute.\n        /// </summary>\n        public static string SpeakerState_Unmute {\n            get {\n                return ResourceManager.GetString(\"SpeakerState_Unmute\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to High.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightBrightness_High {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightBrightness_High\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Low.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightBrightness_Low {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightBrightness_Low\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightBrightness_Medium {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightBrightness_Medium\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightBrightness_Off {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightBrightness_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Bottom to Top.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightDirection_BottomToTop {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightDirection_BottomToTop\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clockwise.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightDirection_Clockwise {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightDirection_Clockwise\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Counter Clockwise.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightDirection_CounterClockwise {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightDirection_CounterClockwise\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Left to Right.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightDirection_LeftToRight {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightDirection_LeftToRight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Right to Left.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightDirection_RightToLeft {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightDirection_RightToLeft\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Top to Bottom.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightDirection_TopToBottom {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightDirection_TopToBottom\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Always.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_Always {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_Always\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Audio Bounce.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_AudioBounce {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_AudioBounce\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Audio Ripple.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_AudioRipple {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_AudioRipple\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Aurora Sync.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_AuroraSync {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_AuroraSync\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Color Change.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_ColorChange {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_ColorChange\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Color Pulse.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_ColorPulse {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_ColorPulse\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Color Wave.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_ColorWave {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_ColorWave\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rain.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_Rain {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_Rain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rainbow Screw.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_RainbowScrew {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_RainbowScrew\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rainbow Wave.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_RainbowWave {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_RainbowWave\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ripple.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_Ripple {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_Ripple\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smooth.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_Smooth {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_Smooth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Type.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEffectType_Type {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEffectType_Type\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Slow.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightSpeed_Speed1 {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightSpeed_Speed1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Medium.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightSpeed_Speed2 {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightSpeed_Speed2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fast.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightSpeed_Speed3 {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightSpeed_Speed3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dark.\n        /// </summary>\n        public static string Theme_Dark {\n            get {\n                return ResourceManager.GetString(\"Theme_Dark\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Light.\n        /// </summary>\n        public static string Theme_Light {\n            get {\n                return ResourceManager.GetString(\"Theme_Light\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to System.\n        /// </summary>\n        public static string Theme_System {\n            get {\n                return ResourceManager.GetString(\"Theme_System\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string TouchpadLockState_Off {\n            get {\n                return ResourceManager.GetString(\"TouchpadLockState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string TouchpadLockState_On {\n            get {\n                return ResourceManager.GetString(\"TouchpadLockState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Daily.\n        /// </summary>\n        public static string UpdateCheckFrequency_PerDay {\n            get {\n                return ResourceManager.GetString(\"UpdateCheckFrequency_PerDay\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Every hour.\n        /// </summary>\n        public static string UpdateCheckFrequency_PerHour {\n            get {\n                return ResourceManager.GetString(\"UpdateCheckFrequency_PerHour\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Monthly.\n        /// </summary>\n        public static string UpdateCheckFrequency_PerMonth {\n            get {\n                return ResourceManager.GetString(\"UpdateCheckFrequency_PerMonth\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Every 3 hours.\n        /// </summary>\n        public static string UpdateCheckFrequency_PerThreeHours {\n            get {\n                return ResourceManager.GetString(\"UpdateCheckFrequency_PerThreeHours\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Every 12 hours.\n        /// </summary>\n        public static string UpdateCheckFrequency_PerTwelveHours {\n            get {\n                return ResourceManager.GetString(\"UpdateCheckFrequency_PerTwelveHours\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Weekly.\n        /// </summary>\n        public static string UpdateCheckFrequency_PerWeek {\n            get {\n                return ResourceManager.GetString(\"UpdateCheckFrequency_PerWeek\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to High.\n        /// </summary>\n        public static string WhiteKeyboardBacklightState_High {\n            get {\n                return ResourceManager.GetString(\"WhiteKeyboardBacklightState_High\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Low.\n        /// </summary>\n        public static string WhiteKeyboardBacklightState_Low {\n            get {\n                return ResourceManager.GetString(\"WhiteKeyboardBacklightState_Low\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string WhiteKeyboardBacklightState_Off {\n            get {\n                return ResourceManager.GetString(\"WhiteKeyboardBacklightState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string WinKeyState_Off {\n            get {\n                return ResourceManager.GetString(\"WinKeyState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string WinKeyState_On {\n            get {\n                return ResourceManager.GetString(\"WinKeyState_On\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.ar.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>مُخصّص</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>النظام</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>مغلق</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>يعمل دائما</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>يعمل أثناء النوم فقط</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>غير مُفعّل</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>مُفعّل</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>مُفعّل, متأخر</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>حفظ البطارية</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>طبيعى</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>الشحن السريع</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>مغلق</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>يعمل</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>كرت الشاشة الخارجى</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>الوضع الهجين</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>الوضع الهيجن التلقائى</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>الوضع الهجين للكرت الداخلى</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>مركز القاعدة أو القاع</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>شمال القاعدة أو القاع</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>يمين القاعدة أو القاع</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>المركز أو الوَسَط</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>شمال المركز أو شمال الوَسَط</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>يمين المركز أو يمين الوَسَط</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>وَسَط القمة</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>شمال القمة</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>يمين القمة</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>متزن</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>مخصص</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>الأداء</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>هادء</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>سريع</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>الأسرع</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>بطىء</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>الأبطأ</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>عالي الوضوح</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>منخفض الوضوح</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>سكون</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>ناعم</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>ثابت</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>يسار الموجة</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>يمين الموجة</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>مغلق</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>الوضع 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>الوضع 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>الوضع 3</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>عالي الوضوح</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>منخفض الوضوح</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>متوسط الوضوح</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>غلق</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>من القاع إلى القمة</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>اتجاه عقارب الساعة</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>تدوير في اتجاه عقارب الساعة</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>من اليسار إلى اليمين</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>من اليمين إلى اليسار</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>من الأعلى إلى الأسفل</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>دائماً</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>صدى الصوت</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>تموج الصوت</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>مزامنة اورورا</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>تغيير اللون</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>تذبذب اللون</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>موجة اللون</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>ماطر</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>خط قوس قزح دقيق</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>موجة قوس قزح</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>متموج</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>ناعم</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>نوع</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>بطىء</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>متوسط</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>سريع</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>داكن</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>فاتح</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>النظام</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>مرتفع</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>منخفض</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>مغلق</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>محول التيار</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>توصيل الطاقة عبر USB</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>محول التيار و توصيل الطاقة عبر USB</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>طويلة</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>عادية</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>قصيرة</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>كتم</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>إلغاء الكتم</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>معطل</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>وضع طاقة ويندوز</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>خطة طاقة ويندوز</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>الإعداد 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>يوميا</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>كل ساعة</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>شهريا</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>كل 3 ساعات</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>كل 12 ساعة</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>أسبوعيا</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.bg.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Избран от потребителя</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Системен</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Изключен</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Включен, винаги</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Включен, в спящ режим</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Деактивиран</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Активиран</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Активиран, със закъснение</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Удължаване на живота</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Обикновен</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Бързо зареждане</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Изключено</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Включено</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Изключено</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Включено</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Изключен</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Включен</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Изключен</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Включен</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>Допълнителна видео карта</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Хибриден</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Хибриден - автоматичен</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybrid-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Изключен</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Включен</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Долу в средата</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Долу вляво</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Долу вдясно</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>По средата</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Вляво от средата</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Вдясно от средата</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Горе в средата</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Горе вляво</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Горе вдясно</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Изключена</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Включена</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Изключен</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Включен</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Балансиран</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Избран от потребителя</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Производителен</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Тих</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Бърза</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Най-бърза</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Бавна</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Най-бавна</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Висока</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Ниска</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Дишане</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Гладък</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Статичен</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Вълня наляво</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Вълна надясно</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Изключена</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Предварително зададена 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Предварително зададена 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Предварително зададена 3</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Висока</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Ниска</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Средна</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Изключена</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>От долу нагоре</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>По часовниковата стрелка</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Обратно на часовниковата стрелка</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>От ляво надясно</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>От дясно наляво</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>От горе надолу</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Винаги</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Аудио отскачане</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Аудио кръгове</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Сменящ се цвят</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Пулсиращ цвят</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Цветна вълна</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Дъжд</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Rainbow Screw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Вълна от дъга</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Водни кръгове</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Гладък</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Вид</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Бавен</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Среден</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Бърз</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Тъмна</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Светла</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Системна</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Изключено</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Включено</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Висока</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Ниска</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Изключена</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Изключено</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Включено</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Изключена</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Включена</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Включена</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Изключена</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Изключено</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Зарядно</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Захранване с Висока Мощност</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Зарядно и USB Захранване с Висока Мощност</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Дълга</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Нормална</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Къса</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Включено</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Изключено</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.bs.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Isključeno</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Upaljeno, uvijek</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Upaljeno, na spavanju</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Konzervacija</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normalno</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Brzo punjenje</value>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Isključeno</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Uključeno</value>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>Diskretna grafička</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hibridni režim</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hibridno-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hibridno-iGPU</value>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Balansirano</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Prilagođen</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Performanse</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Tiho</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Brzo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Najbrže</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Sporo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Najsporije</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Visoko</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Nisko</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Disanje</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Glatko</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Statično</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Talas lijevo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Talas desno</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Ugašeno</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Šablon 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Šablon 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Šablon 2</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Tamna</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Svijetla</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Sistemska</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Visoko</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Nisko</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Isključeno</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.ca.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.cs.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Vlastní</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Systém</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Vypnut</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Vždy zapnut</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Zapnut, když spí</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Zakázán</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Povolen</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Povolen, opožděn</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Konzervativní</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normální</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Rapidní nabíjení</value>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Vypnut</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Zapnut</value>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hybrid</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hybrid-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybrid-iGPU</value>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Dole uprostřed</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Vlevo dole</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Vpravo dole</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Střed</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Uprostřed vlevo</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Uprostřed vpravo</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Nahoře uprostřed</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Nahoře vlevo</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Nahoře vpravo</value>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Vyvážený</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Vlastní</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Výkon</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Tichý</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Rychlý</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Nejrychlejší</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Pomalý</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Nejpomalejší</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Vysoký</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Nízký</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Dech</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Hladký</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Statický</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Vlna vlevo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Vlna vpravo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Vypnut</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Předvolba 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Předvolba 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Předvolba 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Vysoký</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Nízký</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Střední</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Vypnut</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Ze spoda nahoru</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Pravotočivě</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Levotočivě</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Zleva doprava</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Zprava doleva</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Od shora dolů</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Vždy</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio efekt zleva</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio efekt ze středu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Synchronizace Aurora</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Barevná změna</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Barevný pulz</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Barevná vlna</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Déšť</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Duhový kolotoč</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Duhová vlna</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Vlna</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Hladký</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Typ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Pomalý</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Střední</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Rychlý</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Tmavý</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Světlý</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Systém</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Vysoký</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Nízký</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Vypnut</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.de.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Benutzerdefiniert</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>System</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>An, immer</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>An, wenn schlafend</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Deaktiviert</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Aktiviert</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Aktiviert, verzögert</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Erhaltung</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Schnellladen</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>An</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>An</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Ausgeschaltet</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Eingeschaltet</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>An</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hybrid</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hybrid-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybrid-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>An</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Unten mittig</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Unten links</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Unten rechts</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Mittig</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Mittig links</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Mittig rechts</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Oben mittig</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Oben links</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Oben rechts</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>An</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>An</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Balance</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Benutzerdefiniert</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Performance</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Quiet</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Schnell</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Am schnellsten</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Langsam</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Am langsamsten</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Hoch</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Niedrig</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Atmen</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Sanft</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Statisch</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Welle links</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Welle rechts</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Voreinstellung 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Voreinstellung 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Voreinstellung 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Hoch</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Niedrig</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Mittel</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Von unten nach oben</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Im Uhrzeigersinn</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Gegen den Uhrzeigersinn</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Von links nach rechts</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Von rechts nach links</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Von oben nach unten</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Immer</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio-Spektrum</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio-Wellen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Farbwechsel</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Farbimpuls</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Farbwelle</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Regen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Regenbogen-Schraube</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Regenbogenwelle</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Kräuseln</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Sanft</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Tippen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Langsam</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Mittel</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Schnell</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Dunkel</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Hell</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>System</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>An</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Hoch</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Niedrig</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>An</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>An</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>An</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Netzadapter</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Netzadapter und USB-PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Lang</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Kurz</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Umschalt</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Strg</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>An</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Stummschaltung</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Stummschaltung aufheben</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Deaktiviert</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Windows Leistungsmodus</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Windows Energiesparplan</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Vorlage 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Täglich</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Jede Stunde</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Monatlich</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Alle 3 Stunden</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Alle 12 Stunden</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Wöchentlich</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.el.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Προσαρμοσμένο</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Συστήματος</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Πάντα ενεργό</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Ενεργό όταν είναι σε αδράνεια</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Ενεργό, με καθυστέρηση</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Διατήρηση</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Κανονική</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Ταχεία Φόρτιση</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Ενεργοποίηση</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Υβριδική</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Υβριδική-Αυτόματη</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Υβριδική-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Κάτω κέντρο</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Κάτω αριστερά</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Κάτω δεξιά</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Κέντρο</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Κέντρο αριστερά</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Κέντρο δεξιά</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Πάνω κέντρο</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Πάνω αριστερά</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Πάνω δεξιά</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργή</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Ενεργή</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Ισορροπημένη</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Προσαρμοσμένη</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Υψηλή απόδοση</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Αθόρυβη</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Γρήγορη</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Ταχύτατη</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Αργή</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Πολύ αργή</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Υψηλή</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Χαμηλή</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Αναπνοή</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Ομαλό</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Στατικό</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Κύμα Αριστερά</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Κύμα Δεξιά</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Προεπιλογή 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Προεπιλογή 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Προεπιλογή 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Υψηλή</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Χαμηλή</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Μέτρια</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Ανενεργή</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Από Κάτω προς τα Πάνω</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Δεξιόστροφα</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Αριστερόστροφα</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Αριστερά προς Δεξιά</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Δεξιά προς Αριστερά</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Από Πάνω προς τα Κάτω</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Πάντα</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Αναπήδηση Ήχου</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Κυματισμός Ήχου</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Συγχρονισμός Aurora</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Εναλλαγή Χρωμάτων</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Παλμός Χρωμάτων</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Κυματισμός Χρωμάτων</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Βροχή</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Κυκλικό Ουράνιο Τόξο</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Κυματισμός Ουράνιου Τόξου</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Κυματισμός</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Ομαλή</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Τύπος</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Αργή</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Μέτρια</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Γρήγορη</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Σκοτεινό</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Φωτεινό</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Συστήματος</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Υψηλό</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Χαμηλό</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργός</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Ενεργός</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Ενεργός</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργός</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργή</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Φορτιστής Ρεύματος</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Ρεύμα και USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Μεγάλη</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Κανονική</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Μικρή</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Ενεργή</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργή</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Σίγαση </value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Τέλος σίγασης</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Απενεργοποιημένο</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Λειτουργία Ισχύος Windows</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Πλάνο Τροφοδοσίας Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Προεπιλογή 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Καθημερινά</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Ωριαία</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Μηνιαία</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Κάθε 3 ώρες</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Κάθε 12 ώρες</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Εβδομαδιαία</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.es.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Personalizado</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Sistema</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Siempre encendido</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Encendido, al suspender</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Deshabilitado</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Activado</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Activado, demorado</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Conservador</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Carga rápida</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Desactivado</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Activado</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Híbrido</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Híbrido-automático</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Híbrido-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Abajo en el centro</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Abajo a la izquierda</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Abajo a la derecha</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Centrado</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Centro izquierda</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Centro derecha</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Arriba en el centro</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Arriba a la izquierda</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Arriba a la derecha</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Equilibrado</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Personalizado</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Rendimiento</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Tranquilo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Rápido</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Más rápido</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Lento</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Más lento</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Alto</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Bajo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Respiración</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Suave</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Estático</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Ola (desde la izquierda)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>A la derecha</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Predefinido 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Predefinido 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Predefinido 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Alto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Bajo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Medio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>De abajo a arriba</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>En el sentido de las agujas del reloj</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>En el sentido contrario a las agujas del reloj</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>De izquierda a derecha</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>De derecha a izquierda</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>De arriba a abajo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Siempre</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Retorno de audio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Oscilación de audio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Cambio de color</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Emisión de color</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Ola de Color</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Lluvia</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Rosca de arco iris</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Onda de arco iris</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Ondulación</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Suave</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Tipo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Lento</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Medio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Rápido</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Oscuro</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Claro</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Sistema</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Alta</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Baja</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Adaptador de corriente alterna</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Salida de alimentación USB</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>DP de CA y USB</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Larga</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Corta</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Mayúsculas</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Silenciar</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Activar sonido</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Deshabilitado</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Modo de energía de Windows</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Plan de energía de Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Predefinido 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Diariamente</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Cada hora</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Mensualmente</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Cada 3 horas</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Cada 12 horas</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Semanalmente</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.fr.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Personnalisé</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Système</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Éteint</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Allumé, toujours</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Allumé, en veille</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Désactivé</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Activé</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Activé, avec délai</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Conservation</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Charge rapide</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Activé</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Désactiver</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Désactiver</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Activé</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hybride</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hybride-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybride-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>En bas au centre</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>En bas à gauche</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>En bas à droite</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Centre</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Au centre à gauche</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Au centre à droite</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>En haut au centre</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>En haut à gauche</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>En haut à droite</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Équilibré</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Personnalisé</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Performance</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Silencieux</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Rapide</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Très rapide</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Lent</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Très lent</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Élevée</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Faible</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Respiration</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Lisse</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Fixe</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Vague gauche</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Vague droite</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Prédéfini 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Prédéfini 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Prédéfini 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Haut</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Faible</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Intermédiaire</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>De bas en haut</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Sens horaire</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Sens anti-horaire</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>De Gauche à Droite</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>De Droite à Gauche</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>De Haut en Bas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Toujours</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Rebond audio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Ondulation audio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Synchronisation avec Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Changement de couleur</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Pulsation</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Vague</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Pluie</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Rotation arc-en-ciel</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Vague arc-en-ciel</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Ondulation</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Doux</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Taper</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Lent</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Moyen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Rapide</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Sombre</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Clair</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Système</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Élevé</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Faible</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Éteint</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Adaptateur secteur</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Secteur et USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Longue</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normale</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Courte</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Maj</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Activé</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Désactivé</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Muet</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Réactiver le son</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Désactivé</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Mode de gestion de l'alimentation Windows</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Plan d'alimentation Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Pré-réglage 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Tous les jours</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Toutes les heures</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Tous les mois</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Toutes les 3 heures</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Toutes les 12 heures</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Toutes les semaines</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.hu.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Egyéni</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Rendszer</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Kikapcsolva</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Mindig bekapcsolva</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Bekapcsolva, alvó állapot esetén</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Letiltva</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Engedélyezve</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Bekapcsolva, késleltetve</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Konzerváló mód</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normál</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Gyorstöltés</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Kikapcsolva</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Bekapcsolva</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>Dedikált videókártya</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hibrid</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hibrid-Automata</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hibrid-Integrált videókártya</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Középen alul</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Bal alul</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Jobb alul</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Középen</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Középen balra</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Középen jobbra</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Középen fent</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Bal fent</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Jobb fent</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Kiegyensúlyozott</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Egyéni</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Teljesítménycentrikus</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Csendes</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Gyors</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Leggyorsabb</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Lassú</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Leglassabb</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Magas</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Alacsony</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Lélegző</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Sima</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Állandó</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Hullám (balra)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Hullám (jobbra)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Kikapcsolva</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Előre beállított 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Előre beállított 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Előre beállított 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Magas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Alacsony</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Közepes</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Kikapcsolva</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Lentről felfelé</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Óramutató járásával megegyező</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Óramutató járásával ellentétes</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Balról jobbra</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Jobbról balra</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Fentről lefelé</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Mindig</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio Bounce</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio hullámzás</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora szinkronizáció</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Színváltós</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Szín pulzálás</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Színhullám</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Eső</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Szivárvány csavar</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Szivárvány hullám</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Hullámzás</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Sima</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Típus</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Lassú</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Közepes</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Gyors</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Sötét</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Világos</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Rendszer</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Magas</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Alacsony</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Kikapcsolva</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Váltóáramú adapter</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB energiaellátás (PD)</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>AC és USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Hosszú</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normál</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Rövid</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Némítás</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Némítás feloldása</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Letiltva</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Windows energiagazdálkodási mód</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Windows Energiaséma</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Előre beállított 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Naponta</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Óránként</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Havonta</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>3 óránként</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>12 óránként</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Hetente</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.it.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Personalizzato</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Sistema</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Non attivo</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Acceso, sempre</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Acceso, anche in sospensione</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Disattivato</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Attivato</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Abilitato, con ritardo</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Conservazione</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normale</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Ricarica Rapida</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Attivo</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Attivo</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Spento</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Acceso</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Attivo</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Ibrido</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Ibrido-Automatico</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybrid-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Attivo</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>In basso al centro</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>In basso a sinistra</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>In basso a destra</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Centro</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Centro sinistra</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Centro destra</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>In alto al centro</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>In alto a sinistra</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>In alto a destra</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Attivo</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Attivo</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Bilanciato</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Personalizzato</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Alte prestazioni</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Silenzioso</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Veloce</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Velocissimo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Lento</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Lentissimo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Alto</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Basso</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Respiro</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Morbido</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Statico</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Onda (Sinistra)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Onda (Destra)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Tema 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Tema 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Tema 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Alto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Basso</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Medio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Dal basso verso l'alto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Senso orario</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Senso anti-orario</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Da sinistra a destra</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Da destra a sinistra</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Dall'alto verso il basso</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Sempre</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio Bounce</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio Ripple</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Color Change</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Color Pulse</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Color Wave</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Pioggia</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Rainbow Screw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Rainbow Wave</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Ripple</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Morbido</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Tipo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Lento</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Medio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Veloce</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Scuro</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Chiaro</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Sistema</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Attivo</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Alto</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Basso</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Attivo</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>AC and USB PD</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.ja.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>カスタム</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>システム</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>常時オン</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>スリープ時オン</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>無効</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>有効</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>有効（遅延）</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>節電</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>通常</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>急速充電</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>電源オフ</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>電源オン</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>ハイブリッド</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>ハイブリッド - 自動</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>ハイブリッド - iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>中央下部</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>左下部</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>右下部</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>中央</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>左中央</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>右中央</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>中央上部</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>左上部</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>右上部</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>バランス</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>カスタム</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>パフォーマンス</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>静音</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>高速</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>超高速</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>低速</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>超低速</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>明るい</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>暗い</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>点滅</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>グラデーション</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>静的</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>ウェーブ（左へ）</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>ウェーブ（右へ）</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>プリセット 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>プリセット 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>プリセット 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>明るい</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>暗い</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>普通</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>下から上へ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>時計回り</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>反時計回り</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>左から右へ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>右から左へ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>上から下へ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>常時</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>色を変更</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>雨</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>グラデーション</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>タイプ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>遅い</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>普通</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>速い</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>ダーク</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>ライト</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>システム</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>明るい</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>暗い</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>ACアダプタ</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>AC と USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>長い</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>普通</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>短い</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>ミュート</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>ミュート解除</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>無効</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Windows電源モード</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Windows電源プラン</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>プリセット 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>毎日</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>毎時</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>毎月</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>3時間毎</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>12時間毎</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>毎週</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.ko.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.lv.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Pielāgots</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Sistēma</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Izslēgts</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Ieslēgts, vienmēr</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Ieslēgts, miega režīmā</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Iespējots, aizkavēts</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Saudzēšana</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normāls</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Ātrā Uzlāde</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Izslēgts</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Ieslēgts</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hibrīds</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hibrīds-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hibrīds-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Centrēts apakšā</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Apakšā pa kreisi</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Apakšā pa labi</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Centrā</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Centrā pa kreisi</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Centrā pa labi</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Augšējais centrs</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Augšā pa kreisi</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Augšā pa labi</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Līdzsvarots</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Pielāgots</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Veiktspēja</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Kluss</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Ātrs</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Ātrākais</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Lēns</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Lēnākais</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Augsts</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Zems</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Elpojošs</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Vienmērīgs</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Nekustīgs</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Vilnis pa Kreisi</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Vilnis pa Labi</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Priekšiestatījums 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Priekšiestatījums 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Priekšiestatījums 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Augsts</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Zems</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Vidējs</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>No Apakšas uz Augšu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Pulksteņrādītāja virzienā</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Pret pulksteņrādītāja virzienu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>No kreisās uz labo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>No Labās uz Kreiso</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>No Augšas uz Leju</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Vienmēr</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio Atlēciens</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio Svārstība</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Krāsu Maiņa</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Krāsu Pulsācija</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Krāsu Vilnis</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Lietus</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Varavīksnes Skrūve</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Varavīksnes Vilnis</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Svārstība</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Vienmērīgs</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Veids</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Lēns</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Vidējs</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Ātrs</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Tumšs</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Gaišs</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Sistēma</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Augsts</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Zems</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Maiņstrāvas Adapteris</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Maiņstrāva un USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Ilgi</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normāli</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Īsi</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.nl-nl.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Aangepast</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Systeem</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Aan, altijd</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Aan, wanneer in slaapstand</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Uitgeschakeld</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Ingeschakeld</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Ingeschakeld, vertraagd</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Behoudmodus</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normaal</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Snelladen</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Uitgeschakeld</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Ingeschakeld</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hybride</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hybride-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybride-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Onder midden</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Linksonder</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Rechtsonder</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Centreren</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Linksmidden</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Rechtsmidden</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Middenboven</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Linksboven</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Rechtsboven</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Gebalanceerd</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Aangepast</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Prestatie</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Stil</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Snel</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Snelste</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Langzaam</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Langzaamst</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Hoog</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Laag</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Adem</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Vloeiend</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Statisch</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Golf (Links)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Golf (Rechts)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Voorinstelling 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Voorinstelling 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Voorinstelling 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Hoog</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Laag</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Middel</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Beneden naar boven</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Met De Klok Mee</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Tegen De Klok in</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Links naar rechts</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Rechts naar links</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Boven naar Beneden</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Altijd</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio Bounce</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio Ripple</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Kleur verandering</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Kleur puls\n</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Kleuren golf</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Regen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Regenboog schroef\n</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Regenboog golf</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Golf</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Vloeiend</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Type</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Traag</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Middel</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Snel</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Donker</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Licht</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Systeem</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Hoog</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Laag</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Oplader</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB-PD Oplader</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Oplader en USB-PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Lang</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Gemiddeld</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Kort</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Volume dempen</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Dempen van volume opheffen</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Uitgeschakeld</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Windows Energiemodus</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Windows Energiebeheerschema</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Voorinstelling 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Dagelijks</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Elk uur</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Maandelijks</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Elke 3 uur</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Elke 12 uur</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Wekelijks</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.pl.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Niestandardowy</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>System</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Włączone, zawsze</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Włączone w trakcie uśpienia</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Włączone</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Włączone (z opóźnieniem)</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Oszczędzanie żywotności</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normalny</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Szybkie ładowanie</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Wyłączony</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Włączony</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hybrydowy</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hybrydowy-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybrydowy-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Wyśrodkowany na dole</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Dolny lewy róg</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Prawy dolny róg</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Wyśrodkowany</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Wyśrodkowane po lewej</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Wyśrodkowane po prawej</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Wyśrodkowany na górze</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Lewy górny róg</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Prawy górny róg</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Zrównoważony</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Niestandardowy</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Wydajny</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Cichy</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Szybko</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Najszybszy</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Wolny</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Najwolniejszy</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Wysoki</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Niski</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Oddech</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Łagodny</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Statyczny</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Fala z lewej</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Fala z prawej</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Ustawienie 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Ustawienie 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Ustawienie 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Wysoki</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Niski</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Średni</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Od dołu do góry</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Zgodny z ruchem wskazówek zegara</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Odwrotnie do ruchu wskazówek zegara</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Z lewej do prawej</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Od prawej do lewej</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Od góry do dołu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Zawsze</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Podbicie Audio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Fala</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>AuroraSync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Zmiana kolorów</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Pulsujące kolory</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Falujące kolory</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Deszcz</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Deszcz skręcony</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Deszczowa fala</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Fala</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Łagodny</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Rodzaj</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Wolny</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Średni</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Szybki</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Ciemny</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Jasny</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>System</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Wysoki</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Niski</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Zasilacz sieciowy</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Sieciowe i PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Długi</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normalny</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Krótki</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Wyciszenie</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Wyłącz wyciszenie</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Tryb zasilania systemu Windows</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Plan zasilania systemu Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Ustawienie 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Codziennie</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Co godzinę</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Co miesiąc</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Co 3 godziny</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Co 12 godzin</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Co tydzień</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.pt-br.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Personalizado</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Sistema</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Sempre Ativo</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Ativado, quando em suspensão</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Desativado</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Ativado</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Ativado, com atraso</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Conservador</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Carga Rápida</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Ligado</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>GPU Dedicada</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Modo Híbrido</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Modo Híbrido Automático</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Somente GPU Integrada</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Inferior centralizado</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Inferior Esquerdo</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Inferior Direito</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Centralizar</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Centro à esquerda</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Centro à direita</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Centro superior</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Superior Esquerdo</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Superior direito</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Equilibrado</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Personalizado</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Performance</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Silencioso</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Rápido</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Super-rápido</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Lento</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Muito lenta</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Alta</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Baixa</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Respiração</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Suave</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Estático</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Onda (para esquerda)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Onda (para direita)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Predefinição 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Predefinição 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Predefinição 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Alto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Baixo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Médio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>De baixo para cima</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Sentido horário</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Sentido Anti-horário</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Da esquerda para a direita</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Da direita para a esquerda</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>De cima para baixo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Sempre</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Spectro de Áudio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Onda de Áudio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Mudança de Cor</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Cores Pulsantes</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Onda de Cor</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Chuva</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Parafuso de Arco-íris</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Onda de Arco-íris</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Onda</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Suave</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Tipo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Lento</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Médio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Rápido</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Escuro</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Claro</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Sistema</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Alto</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Baixo</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Carregador</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Carregamento por USB</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Carregamento por Carregador e USB</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Longa</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Curta</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Desativado</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Mutar</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Ativar som</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Desativado</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Planos de Energia do Windows</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Planos de Energia do Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Perfil 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Diariamente</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>A cada hora</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Mensalmente</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>A cada 3 horas</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>A cada 12 horas</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Semanalmente</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.pt.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Personalizado</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Sistema</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Sempre ligado</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Ligado, quando suspenso</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Desativado</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Ativado</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Ativado com atraso</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Conservação</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Carregamento rápido</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Desligada</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Ligada</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Híbrido</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Híbrido-automático</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Híbrido-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Centro inferior</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Canto inferior esquerdo</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Canto inferior direito</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Centro</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Centro à esquerda</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Centro à direita</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Centro superior</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Centro inferior</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Canto superior direito</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Desligada</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Ligada</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Equilibrado</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Personalizado</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Performance</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Silencioso</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Rápido</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Rapidíssimo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Lento</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Lentíssimo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Alta</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Baixo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Respiração</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Suave</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Estático</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Onda para a esquerda</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Onda para a direita</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Predefinição 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Predefinição 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Predefinição 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Alto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Baixo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Médio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Baixo para Cima</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Sentido dos ponteiros do relógio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Sentido oposto aos ponteiros do relógio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Esquerda para Direita</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Direita para Esquerda</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Cima para Baixo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Sempre</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio Bounce</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio Ripple</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Mudança de cor</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Pulsação de cor</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Onda de cor</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Chuva</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Rainbow Screw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Ondulação arco-íris</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Ondulação</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Suave</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Tipo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Lento</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Médio</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Rápido</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Escuro</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Claro</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Sistema</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Alta</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Baixa</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Desligada</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Desligada</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Ligada</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Desligada</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Ligada</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Desligada</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Carregador</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Carregador USB PD</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Carregador e USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Longa</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Curta</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Silenciar</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Ativar som</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Desativado</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Modo de Energia do Windows</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Esquemas de Energia do Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Predefinição 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Diariamente</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>A cada hora</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Mensalmente</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>A cada 3 horas</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>A cada 12 horas</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Semanalmente</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.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  <data name=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Custom</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>System</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>On, always</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>On, when sleeping</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Disabled</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Enabled</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Enabled, delayed</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Conservation</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Rapid Charge</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Powered Off</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Powered On</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hybrid</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hybrid-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybrid-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Bottom center</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Bottom left</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Bottom right</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Center</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Center left</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Center right</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Top center</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Top left</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Top right</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Balance</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Custom</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Performance</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Quiet</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Fast</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Fastest</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Slow</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Slowest</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>High</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Low</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Breath</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Smooth</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Static</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Wave Left</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Wave Right</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Preset 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Preset 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Preset 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>High</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Low</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Medium</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Bottom to Top</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Clockwise</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Counter Clockwise</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Left to Right</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Right to Left</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Top to Bottom</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Always</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio Bounce</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio Ripple</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Color Change</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Color Pulse</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Color Wave</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Rain</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Rainbow Screw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Rainbow Wave</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Ripple</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Smooth</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Type</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Slow</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Medium</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Fast</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Dark</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Light</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>System</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>High</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Low</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>On</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>AC Adapter</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>AC and USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Long</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Short</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Mute</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Unmute</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Disabled</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Windows Power Mode</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Windows Power Plan</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Preset 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Daily</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Every hour</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Monthly</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Every 3 hours</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Every 12 hours</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Weekly</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.ro.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Personalizat</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Sistem</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Dezactivat</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Activat, tot timpul</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Activat, doar in mod repaus</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Dezactivat</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Activat</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Activat, cu întârziere</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Conservare</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Încărcare rapidă</value>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Oprit</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Pornit</value>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hibrid</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hibrid-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hibrid-iGPU</value>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Mijloc jos</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Stânga jos</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Dreapta jos</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Centru</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Stânga mijloc</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Dreapta mijloc</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Mijloc sus</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Stânga sus</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Dreapta sus</value>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Echilibrat</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Personalizat</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Performant</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Liniștit</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Rapid</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Cel mai rapid</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Lent</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Cel mai lent</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Ridicată</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Scăzută</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Respirație</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Tranziție lină culori</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Static</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Val culori spre stânga</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Val culori spre dreapta</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Oprit</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Profil 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Profil 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Profil 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Ridicată</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Scăzută</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Mediu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Oprit</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>De jos în sus</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>În sensul acelor de ceas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>În sens invers acelor de ceas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>De la stânga la dreapta</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>De la dreapta la stânga</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>De sus în jos</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Întotdeauna</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio Bounce</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio Ripple</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Schimbare culoare</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Puls de culoare</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Val de culoare</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Ploaie</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Curcubeu în spirală</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Curcubeu în valuri</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Ripple</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Tranziție lină culori</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Tip</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Lent</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Mediu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Rapid</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Întunecat</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Luminos</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Sistem</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Ridicată</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Scăzută</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Oprit</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.ru.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Пользовательский</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Система</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Выкл.</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Вкл. всегда</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Вкл. в спящем режиме</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Отключено</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Включено</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Включено с задержкой</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Консервация</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Обычный</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Быстрая зарядка</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Отключен</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Задействован</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>Дискретная видеокарта</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Гибридный режим</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hybrid-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybrid-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Внизу по центру</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Внизу слева</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Внизу справа</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Центр</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>По центру слева</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>По центру справа</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Вверху по центру</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Вверху слева</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Вверху справа</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Сбалансированный</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Пользовательский</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Макс. производительность</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Тихий режим</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Быстро</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Самая быстрая</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Медленно</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Самая медленная</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Высокая</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Низкая</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Дыхание</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Плавный</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Статичный</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Волна (влево)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Волна (вправо)</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Пресет 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Пресет 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Пресет 3</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Высокая</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Низкая</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Средняя</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Снизу вверх</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>По часовой стрелке</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Против часовой стрелки</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Слева направо</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Справа налево</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Сверху вниз</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Всегда</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Аудиоотскок</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Звуковой пульс</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Изменение цвета</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Цветовой импульс</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Цветовая волна</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Дождь</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Радужный винт</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Радужная волна</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Волна</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Плавный</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Набор текста</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Медленно</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Средняя</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Быстрая</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Темная</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Светлая</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Системная тема</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Высокая</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Низкая</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Сетевой адаптер</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Питание от USB</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Сетевой адаптер и питание по USB</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Долго</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>По умолчанию</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Короткая</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Выкл. звук</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Вкл. звук</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Отключен</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Схема питания Windows</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Режим питания Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Пресет 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Ежедневно</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Каждый час</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Ежемесячно</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Каждые 3 часа</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Каждые 12 часов</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Еженедельно</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.sk.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Vlastný</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Systém</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Vypnuté</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Vždy zapnuté</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Zapnuté v spánku</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Zakázaný</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Povolený</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Povolený, oneskorený</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Šetrenie</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normálny</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Rýchle nabíjanie</value>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Vypnutá</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Zapnutá</value>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hybrid</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hybrid-Auto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybrid-iGPU</value>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Dole v strede</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Vľavo dole</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Vpravo dole</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Uprostred</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Uprostred vľavo</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Uprostred vpravo</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Hore v strede</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Vľavo hore</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Vpravo hore</value>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Vyvážený</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Vlastný</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Výkonný</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Tichý</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Rýchla</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Najrýchlejšia</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Pomalá</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Najpomalšia</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Vysoký</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Nízky</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Dych</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Hladký</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Statický</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Vlna vľavo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Vlna vpravo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Vypnutý</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Predvoľba 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Predvoľba 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Predvoľba 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Vysoký</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Nízky</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Stredný</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Vypnutý</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Zdola hore</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>V smere hodinových ručičiek</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>V protismeru hodinových ručičiek</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Zľava doprava</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Sprava do ľava</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Zhora dole</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Vždy</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Zvukové skoky</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Zvukové zvlnenie</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Synch. Aurora</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Farebná zmena</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Farebný pulz</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Farebné vlny</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Dážď</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Dúhový kolotoč</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Dúhová vlna</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Zvlnenie</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Hladké</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Typ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Pomalá</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Stredná</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Rýchla</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Tmavý</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Svetlý</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Systém</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Silné</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Slabé</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Vypnuté</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.tr.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Özel</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Sistem</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Her zaman açık</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Uykuda açık</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Devre dışı</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Etkin</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Etkin, gecikmeli</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Pil Korumalı</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Hızlı Şarj</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Güç Kapatıldı</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Güç Açık</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>dGPU</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hibrit</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hibrit-Otomatik</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hibrit-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Alt orta</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Sol alt</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Sağ alt</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Orta</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Sol orta</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Sağ orta</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Üst orta</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Sol üst</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Sağ üst</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Denge</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Özel</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Performans</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Sessiz</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Hızlı</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>En Hızlı</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Yavaş</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>En yavaş</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Yüksek</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Düşük</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Esinti</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Akıcı</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Sabit</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Soldan Dalga</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Sağdan Dalga</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Ön ayar 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Ön ayar 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Ön ayar 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Yüksek</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Düşük</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Orta</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Aşağıdan Yukarıya</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Saat Yönünde</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Saat Yönünün Tersi</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Soldan Sağa</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Sağdan Sola</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Yukarıdan Aşağıya</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Her Zaman</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Ses Zıplaması</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Ses Dalgalanması</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Renk Değiştir</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Renk Titreşimi</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Renk Dalgası</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Yağmur</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Gökkuşağı Döngüsü</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Gökkuşağı Dalgası</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Dalgalanma</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Akıcı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Tür</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Yavaş</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Orta</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Hızlı</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Koyu</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Açık</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Sistem</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Yüksek</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Düşük</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>AC Adaptör</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Güç Dağıtımı</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>AC ve USB GD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Uzun</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Normal</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Kısa</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Sustur</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Sesi aç</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Devre Dışı</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Windows Güç Modu</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Windows Güç Planı</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Ön ayar 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Günlük</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Her saat</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Aylık</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Her 3 saatte</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Her 12 saatte</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Haftalık</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.uk.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Користувальницький</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Системний</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Завжди</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Під час сну</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Увімкнено</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Увімкнено із затримкою</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Збереження</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Звичайний</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Швидка зарядка</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Увімкнено</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Увімкнено</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Вимкнений</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Увімкнений</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Увімкнено</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>Дискр. ГП</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Гібридний</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Гібридний-Авто</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Гібридний-іГП</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Вимкнений</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Увімкнений</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Внизу по центру</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Внизу зліва</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Внизу справа</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Центр</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>По центру ліворуч</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>По центру праворуч</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Вгорі по центру</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Вгорі зліва</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Вгорі справа</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Вимкнений</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Увімкнений</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Вимкнений</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Увімкнений</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Збалансований</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Користувальницький</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Продуктивність</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Тихий</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Швидка</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Найшвидша</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Повільна</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Найповільніша</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Яскрава</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Тьмяна</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Дихання</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Плавний</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Статичний</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Хвиля Ліворуч</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Хвиля Праворуч</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Вимкнена</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Шаблон 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Шаблон 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Шаблон 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Яскрава</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Тьмяна</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Середня</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Вимкнена</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Знизу вгору</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>За годинниковою стрілкою</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Проти годинникової стрілки</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Зліва направо</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Справа наліво</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Згори вниз</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Постійно</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Звуковий відскок</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Звукова пульсація</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Зміна кольору</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Пульсація кольору</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Колірні хвилі</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Дощ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Райдужний гвинт</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Райдужні хвилі</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Пульсація</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Плавна</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Тип</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Повільна</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Середня</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Швидка</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Темна</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Світла</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Системна</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Вимкнений</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Увімкнений</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Яскрава</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Тьмяна</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Вимк.</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Вимкнена</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Увімкнена</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Вимкнені</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Увімкнені</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Увімкнено</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Від мережі</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Від USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>Від мережі та USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Довга</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Звичайна</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Коротка</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Увімкнене</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Вимкнене</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Вимкнути звук</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Увімкнути звук</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Вимкнений</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Режим живлення Windows</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>План живлення Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Шаблон 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Щоденно</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Щогодини</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Щомісяця</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Що 3 години</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Що 12 годин</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Щотижня</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.uz-latn-uz.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Arnawlı</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Sistema</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Òshik</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Hámiyshe qosıwlı</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Qosıwlı, uyqı rejiminde</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Iske túsirilgen</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Irkilis penen iske túsirilgen</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Saqlaw</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Ádettegidey</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Tez zaryadlaw</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Qosılǵan</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>Bólekli videokarta</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Gibrid rejimi</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Gibrid-Avto</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Gibrid-iGPU</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Tómende orayda</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Tómen shep</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Tómen oń</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Oray</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Orayda shepte</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Orayda ońda</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Joqarıda orayda</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Joqarıda shepte</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Joqarıda ońda</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Teńlestirilgen</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Arnawlı</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Maksimal ónimdarlıq</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Tınısh rejim</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Tez</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Júdá tez</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Ásten</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Júdá ásten</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Joqarı</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Pás</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Nápes</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Tegis</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Háreketsiz</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Tolqın shepke</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Tolqın ońǵa</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Óshik</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Sazlawlar jıyındısı 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Sazlawlar jıyındısı 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Sazlawlar jıyındısı 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Joqarı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Pás</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Ortasha</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Óshik</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Tómennen joqarıǵa</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Saat jónelisi boyınsha</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Saat jónelisine qarsı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Shepten ońǵa</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Ońnan shepke</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Joqarıdan tómenge</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Hámiyshe</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Shawqım</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Dawıs tolqını</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Reńdi ózgertiw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Reń pulsi</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Reń tolqını</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Jawın</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Reńli vint</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Ayqulaq tolqın</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Tolqın</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Tegis</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Túri</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Áste</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Ortasha</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Tez</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Qarańǵı</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Jaqtı</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Sistema teması</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Joqarı</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Pás</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>AC Adapteri</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Quwat Jetkiziw</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>AC hám USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Uzaq</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Ádettegidey</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Qısqa</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Óshik</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.vi.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>Tùy Chỉnh</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>Hệ thống</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>Luôn Bật</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>Bật, Chỉ khi Ngủ</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>Bật</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>Bật với độ trễ</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>Bảo vệ pin</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>Bình thường</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>Sạc Nhanh</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>Ngắt kích hoạt</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>Kích hoạt</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>GPU rời</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>Hybrid</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>Hybrid- Tự động</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>Hybrid- chỉ GPU tích hợp</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>Ở dưới chính giữa</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>Góc dưới bên trái</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>Góc dưới bên phải</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>Ở giữa</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>Ở giữa bên trái</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>Ở giữa bên phải</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>Ở trên chính giữa</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>Góc trên bên trái</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>Góc trên bên phải</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>Cân Bằng</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>Tùy Chỉnh</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>Hiệu Suất</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>Im Lặng</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>Nhanh</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>Nhanh nhất</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>Chậm</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>Chậm nhất</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Cao</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Thấp</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>Thở</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>Mượt</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>Tĩnh</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>Sóng, bên trái</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>Sóng, bên phải</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>Thiết lập 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>Thiết lập 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>Thiết lập 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>Cao</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>Thấp</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>Trung bình</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>Từ dưới lên trên</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>Xuôi chiều kim đồng hồ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>Ngược chiều kim đồng hồ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>Trái sang phải</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>Phải sang trái</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>Từ trên xuống dưới</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>Luôn luôn</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>Audio Bounce</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>Audio Ripple</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>Đổi màu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>Nhịp điệu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>Sóng 7 màu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>Mưa</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>Xoáy cầu vồng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>Sóng cầu vồng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>Gợn sóng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>Mượt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>Gõ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>Chậm</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>Trung bình</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>Nhanh</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>Tối</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>Sáng</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>Hệ thống</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>Cao</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>Thấp</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>Bộ sạc</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB Power Delivery</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>AC và USB PD</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>Dài</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>Bình thường</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>Ngắn</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>Tắt tiếng</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>Bật tiếng</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Chế độ nguồn</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Power Plan</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>Thiết lập 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>Hàng ngày</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>Mỗi giờ</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>Hàng tháng</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>Mỗi 3 tiếng</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>Mỗi 12 tiếng</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>Hàng tuần</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.zh-hans.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>自定义</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>跟随系统</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>保持开启</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>仅在睡眠时</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>开启</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>延迟开启</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>养护</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>常规</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>快充</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>开</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>开</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>启用</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>开</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>独显直连模式</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>混合模式</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>混合自动模式</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>混合核显模式</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>开</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>底部居中</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>左下角</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>右下角</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>居中</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>中间左侧</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>中间右侧</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>顶部居中</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>左上角</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>右上角</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>开</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>开</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>均衡模式</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>自定义模式</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>野兽模式</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>安静模式</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>快</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>最快</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>慢</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>最慢</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>高亮度</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>低亮度</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>呼吸</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>平滑</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>静态</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>从左向右</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>从右向左</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>预设 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>预设 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>预设 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>高</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>低</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>中</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>关</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>从下到上</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>顺时针</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>逆时针</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>从左到右</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>从右到左</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>从上到下</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>照明</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>音律跳动</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>音律涟漪</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>屏光同步</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>光谱循环</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>色彩脉冲</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>波浪</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>雨滴</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>螺旋彩虹</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>彩虹波</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>涟漪</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>晴朗</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>键入</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>慢</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>中</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>快</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>深色模式</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>浅色模式</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>跟随系统</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>开</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>高亮度</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>低亮度</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>开</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>开</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>开</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>方形电源口</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB PD 充电口</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>方形电源口与 PD 充电口</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>较长</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>默认</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>较短</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>开</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>静音</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>解除静音</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>禁用</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Windows 电源模式</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Windows 电源计划</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>预设 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>每日</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>每小时</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>每月</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>每三小时</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>每十二小时</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>每周</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Resources/Resource.zh-hant.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AccentColorSource_Custom\" xml:space=\"preserve\">\n    <value>客製化</value>\n  </data>\n  <data name=\"AccentColorSource_System\" xml:space=\"preserve\">\n    <value>跟隨系統</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnAlways\" xml:space=\"preserve\">\n    <value>保持開啟</value>\n  </data>\n  <data name=\"AlwaysOnUSBState_OnWhenSleeping\" xml:space=\"preserve\">\n    <value>僅限睡眠時</value>\n  </data>\n  <data name=\"AutorunState_Disabled\" xml:space=\"preserve\">\n    <value>停用</value>\n  </data>\n  <data name=\"AutorunState_Enabled\" xml:space=\"preserve\">\n    <value>啟用</value>\n  </data>\n  <data name=\"AutorunState_EnabledDelayed\" xml:space=\"preserve\">\n    <value>延遲開啟</value>\n  </data>\n  <data name=\"BatteryState_Conservation\" xml:space=\"preserve\">\n    <value>保養</value>\n  </data>\n  <data name=\"BatteryState_Normal\" xml:space=\"preserve\">\n    <value>一般</value>\n  </data>\n  <data name=\"BatteryState_RapidCharge\" xml:space=\"preserve\">\n    <value>快速充電</value>\n  </data>\n  <data name=\"FlipToStartState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n    <comment>Informs the user that Flip to Start is or will be turned off.</comment>\n  </data>\n  <data name=\"FlipToStartState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n    <comment>Informs the user that Flip to Start is or will be turned on.</comment>\n  </data>\n  <data name=\"FnLockState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n    <comment>Informs the user that Fn Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"FnLockState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n    <comment>Informs the user that Fn Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"GPUController_PoweredOff\" xml:space=\"preserve\">\n    <value>關機</value>\n  </data>\n  <data name=\"GPUController_PoweredOn\" xml:space=\"preserve\">\n    <value>已啟動</value>\n  </data>\n  <data name=\"HDRState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n    <comment>Informs the user that HDR is or will be turned off.</comment>\n  </data>\n  <data name=\"HDRState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n    <comment>Informs the user that HDR is or will be turned on.</comment>\n  </data>\n  <data name=\"HybridModeState_Off\" xml:space=\"preserve\">\n    <value>獨立顯示卡直接連接模式（dGPU）</value>\n  </data>\n  <data name=\"HybridModeState_On\" xml:space=\"preserve\">\n    <value>混合模式（Hybrid）</value>\n  </data>\n  <data name=\"HybridModeState_OnAuto\" xml:space=\"preserve\">\n    <value>混合自動模式（Hybrid-Auto）</value>\n  </data>\n  <data name=\"HybridModeState_OnIGPUOnly\" xml:space=\"preserve\">\n    <value>混合內建顯示卡模式（Hybrid-iGPU）</value>\n  </data>\n  <data name=\"MicrophoneState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n    <comment>Informs the user that the microphone is or will be turned off.</comment>\n  </data>\n  <data name=\"MicrophoneState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n    <comment>Informs the user that the microphone is or will be turned on.</comment>\n  </data>\n  <data name=\"NotificationPosition_BottomCenter\" xml:space=\"preserve\">\n    <value>底部置中</value>\n  </data>\n  <data name=\"NotificationPosition_BottomLeft\" xml:space=\"preserve\">\n    <value>左下角</value>\n  </data>\n  <data name=\"NotificationPosition_BottomRight\" xml:space=\"preserve\">\n    <value>右下角</value>\n  </data>\n  <data name=\"NotificationPosition_Center\" xml:space=\"preserve\">\n    <value>置中</value>\n  </data>\n  <data name=\"NotificationPosition_CenterLeft\" xml:space=\"preserve\">\n    <value>置中左側</value>\n  </data>\n  <data name=\"NotificationPosition_CenterRight\" xml:space=\"preserve\">\n    <value>置中右側</value>\n  </data>\n  <data name=\"NotificationPosition_TopCenter\" xml:space=\"preserve\">\n    <value>頂部置中</value>\n  </data>\n  <data name=\"NotificationPosition_TopLeft\" xml:space=\"preserve\">\n    <value>左上角</value>\n  </data>\n  <data name=\"NotificationPosition_TopRight\" xml:space=\"preserve\">\n    <value>右上角</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned off.</comment>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n    <comment>Informs the user that One Level White Keyboard Backlight is or will be turned on.</comment>\n  </data>\n  <data name=\"OverdriveState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n    <comment>Informs the user that Overdrive is or will be turned off.</comment>\n  </data>\n  <data name=\"OverdriveState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n    <comment>Informs the user that Overdrive is or will be turned on.</comment>\n  </data>\n  <data name=\"PowerModeState_Balance\" xml:space=\"preserve\">\n    <value>平衡模式</value>\n  </data>\n  <data name=\"PowerModeState_GodMode\" xml:space=\"preserve\">\n    <value>客製化</value>\n  </data>\n  <data name=\"PowerModeState_Performance\" xml:space=\"preserve\">\n    <value>效能模式</value>\n  </data>\n  <data name=\"PowerModeState_Quiet\" xml:space=\"preserve\">\n    <value>靜音模式</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fast\" xml:space=\"preserve\">\n    <value>快</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Fastest\" xml:space=\"preserve\">\n    <value>最快</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slow\" xml:space=\"preserve\">\n    <value>慢</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeed_Slowest\" xml:space=\"preserve\">\n    <value>最慢</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>高</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>低</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Breath\" xml:space=\"preserve\">\n    <value>呼吸</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Smooth\" xml:space=\"preserve\">\n    <value>平滑</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_Static\" xml:space=\"preserve\">\n    <value>靜態</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveLTR\" xml:space=\"preserve\">\n    <value>從左向右波浪</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffect_WaveRTL\" xml:space=\"preserve\">\n    <value>從右向左波浪</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_One\" xml:space=\"preserve\">\n    <value>預設 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Three\" xml:space=\"preserve\">\n    <value>預設 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Two\" xml:space=\"preserve\">\n    <value>預設 2</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_High\" xml:space=\"preserve\">\n    <value>高</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Low\" xml:space=\"preserve\">\n    <value>低</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Medium\" xml:space=\"preserve\">\n    <value>中</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightness_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_BottomToTop\" xml:space=\"preserve\">\n    <value>從底部到頂部</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_Clockwise\" xml:space=\"preserve\">\n    <value>順時針</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_CounterClockwise\" xml:space=\"preserve\">\n    <value>逆時針</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_LeftToRight\" xml:space=\"preserve\">\n    <value>從左到右</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_RightToLeft\" xml:space=\"preserve\">\n    <value>從又到左</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightDirection_TopToBottom\" xml:space=\"preserve\">\n    <value>從頂部到底部</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Always\" xml:space=\"preserve\">\n    <value>照明</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioBounce\" xml:space=\"preserve\">\n    <value>韻律跳動</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AudioRipple\" xml:space=\"preserve\">\n    <value>韻律漣漪</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_AuroraSync\" xml:space=\"preserve\">\n    <value>Aurora Sync（顯示器燈光同步）</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorChange\" xml:space=\"preserve\">\n    <value>光譜循環</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorPulse\" xml:space=\"preserve\">\n    <value>色彩脈衝</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_ColorWave\" xml:space=\"preserve\">\n    <value>色彩波浪</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Rain\" xml:space=\"preserve\">\n    <value>雨滴</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowScrew\" xml:space=\"preserve\">\n    <value>螺旋彩虹</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_RainbowWave\" xml:space=\"preserve\">\n    <value>彩虹波浪</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Ripple\" xml:space=\"preserve\">\n    <value>漣漪</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Smooth\" xml:space=\"preserve\">\n    <value>平滑</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEffectType_Type\" xml:space=\"preserve\">\n    <value>輸入</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed1\" xml:space=\"preserve\">\n    <value>慢</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed2\" xml:space=\"preserve\">\n    <value>中</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightSpeed_Speed3\" xml:space=\"preserve\">\n    <value>快</value>\n  </data>\n  <data name=\"Theme_Dark\" xml:space=\"preserve\">\n    <value>深色模式</value>\n  </data>\n  <data name=\"Theme_Light\" xml:space=\"preserve\">\n    <value>淺色模式</value>\n  </data>\n  <data name=\"Theme_System\" xml:space=\"preserve\">\n    <value>跟隨系統</value>\n  </data>\n  <data name=\"TouchpadLockState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned off.</comment>\n  </data>\n  <data name=\"TouchpadLockState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n    <comment>Informs the user that Touchpad Lock is or will be turned on.</comment>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_High\" xml:space=\"preserve\">\n    <value>高亮度</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Low\" xml:space=\"preserve\">\n    <value>低亮度</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"WinKeyState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"WinKeyState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n    <comment>Informs the user that WinLock is or will be turned on.</comment>\n  </data>\n  <data name=\"PortsBacklightState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"PortsBacklightState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n  </data>\n  <data name=\"PanelLogoBacklightState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"InstantBootState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapter\" xml:space=\"preserve\">\n    <value>AC 方形電源孔</value>\n  </data>\n  <data name=\"InstantBootState_UsbPowerDelivery\" xml:space=\"preserve\">\n    <value>USB PD 充電孔</value>\n  </data>\n  <data name=\"InstantBootState_AcAdapterAndUsbPowerDelivery\" xml:space=\"preserve\">\n    <value>AC 方形電源孔和 USB PD 電源孔</value>\n  </data>\n  <data name=\"NotificationDuration_Long\" xml:space=\"preserve\">\n    <value>長</value>\n  </data>\n  <data name=\"NotificationDuration_Normal\" xml:space=\"preserve\">\n    <value>一般</value>\n  </data>\n  <data name=\"NotificationDuration_Short\" xml:space=\"preserve\">\n    <value>短</value>\n  </data>\n  <data name=\"ModifierKey_Shift\" xml:space=\"preserve\">\n    <value>Shift</value>\n  </data>\n  <data name=\"ModifierKey_Ctrl\" xml:space=\"preserve\">\n    <value>Ctrl</value>\n  </data>\n  <data name=\"ModifierKey_Alt\" xml:space=\"preserve\">\n    <value>Alt</value>\n  </data>\n  <data name=\"BatteryNightChargeState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n  </data>\n  <data name=\"BatteryNightChargeState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"SpeakerState_Mute\" xml:space=\"preserve\">\n    <value>靜音</value>\n  </data>\n  <data name=\"SpeakerState_Unmute\" xml:space=\"preserve\">\n    <value>解除靜音</value>\n  </data>\n  <data name=\"PowerModeMappingMode_Disabled\" xml:space=\"preserve\">\n    <value>已停用</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerMode\" xml:space=\"preserve\">\n    <value>Windows 電源模式</value>\n  </data>\n  <data name=\"PowerModeMappingMode_WindowsPowerPlan\" xml:space=\"preserve\">\n    <value>Windows 電源計劃</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightPreset_Four\" xml:space=\"preserve\">\n    <value>預設 4</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerDay\" xml:space=\"preserve\">\n    <value>每天</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerHour\" xml:space=\"preserve\">\n    <value>每小時</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerMonth\" xml:space=\"preserve\">\n    <value>每月</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerThreeHours\" xml:space=\"preserve\">\n    <value>每 3 小時</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerTwelveHours\" xml:space=\"preserve\">\n    <value>每 12 小時</value>\n  </data>\n  <data name=\"UpdateCheckFrequency_PerWeek\" xml:space=\"preserve\">\n    <value>每週</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Services/BatteryDischargeRateMonitorService.cs",
    "content": "using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Services;\n\npublic class BatteryDischargeRateMonitorService\n{\n    private CancellationTokenSource? _cts;\n    private Task? _refreshTask;\n\n    public async Task StartStopIfNeededAsync()\n    {\n        await StopAsync().ConfigureAwait(false);\n\n        if (_refreshTask != null)\n            return;\n\n        if (_cts is not null)\n            await _cts.CancelAsync().ConfigureAwait(false);\n\n        _cts = new CancellationTokenSource();\n\n        var token = _cts.Token;\n\n        _refreshTask = Task.Run(async () =>\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Battery monitoring service started...\");\n\n            while (!token.IsCancellationRequested)\n            {\n                try\n                {\n                    Battery.SetMinMaxDischargeRate();\n\n                    await Task.Delay(TimeSpan.FromSeconds(3), token).ConfigureAwait(false);\n                }\n                catch (OperationCanceledException) { }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Battery monitoring service failed.\", ex);\n                }\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Battery monitoring service stopped.\");\n        }, token);\n    }\n\n    public async Task StopAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopping...\");\n\n        if (_cts is not null)\n            await _cts.CancelAsync().ConfigureAwait(false);\n\n        _cts = null;\n\n        if (_refreshTask is not null)\n            await _refreshTask.ConfigureAwait(false);\n\n        _refreshTask = null;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopped.\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/AbstractSettings.cs",
    "content": "﻿using System;\nusing System.IO;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\n\nnamespace LenovoLegionToolkit.Lib.Settings;\n\npublic abstract class AbstractSettings<T> where T : class, new()\n{\n    protected readonly JsonSerializerSettings JsonSerializerSettings;\n    private readonly string _settingsStorePath;\n    private readonly string _fileName;\n\n    protected virtual T Default => new();\n\n    public T Store => _store ??= LoadStore() ?? Default;\n\n    private T? _store;\n\n    protected AbstractSettings(string filename)\n    {\n        JsonSerializerSettings = new()\n        {\n            Formatting = Formatting.Indented,\n            TypeNameHandling = TypeNameHandling.Auto,\n            ObjectCreationHandling = ObjectCreationHandling.Replace,\n            Converters = { new StringEnumConverter() }\n        };\n\n        _fileName = filename;\n        _settingsStorePath = Path.Combine(Folders.AppData, _fileName);\n    }\n\n    public void SynchronizeStore()\n    {\n        var settingsSerialized = JsonConvert.SerializeObject(_store, JsonSerializerSettings);\n        File.WriteAllText(_settingsStorePath, settingsSerialized);\n    }\n\n    public virtual T? LoadStore()\n    {\n        T? store = null;\n        try\n        {\n            var settingsSerialized = File.ReadAllText(_settingsStorePath);\n            store = JsonConvert.DeserializeObject<T>(settingsSerialized, JsonSerializerSettings);\n\n            if (store is null)\n                TryBackup();\n        }\n        catch\n        {\n            TryBackup();\n        }\n\n        return store;\n    }\n\n    private void TryBackup()\n    {\n        try\n        {\n            if (!File.Exists(_settingsStorePath))\n                return;\n\n            var backupFileName = $\"{Path.GetFileNameWithoutExtension(_fileName)}_backup_{DateTime.UtcNow:yyyyMMddHHmmss}{Path.GetExtension(_fileName)}\";\n            var backupFilePath = Path.Combine(Folders.AppData, backupFileName);\n            File.Copy(_settingsStorePath, backupFilePath);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Unable to create backup for {_fileName}\", ex);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/ApplicationSettings.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Settings;\n\npublic class ApplicationSettings : AbstractSettings<ApplicationSettings.ApplicationSettingsStore>\n{\n    public class Notifications\n    {\n        public bool UpdateAvailable { get; set; } = true;\n        public bool CapsNumLock { get; set; }\n        public bool FnLock { get; set; }\n        public bool TouchpadLock { get; set; } = true;\n        public bool KeyboardBacklight { get; set; } = true;\n        public bool CameraLock { get; set; } = true;\n        public bool Microphone { get; set; } = true;\n        public bool PowerMode { get; set; }\n        public bool RefreshRate { get; set; } = true;\n        public bool ACAdapter { get; set; }\n        public bool SmartKey { get; set; }\n        public bool AutomationNotification { get; set; } = true;\n    }\n\n    public class ApplicationSettingsStore\n    {\n        public Theme Theme { get; set; }\n        public RGBColor? AccentColor { get; set; }\n        public AccentColorSource AccentColorSource { get; set; }\n        public PowerModeMappingMode PowerModeMappingMode { get; set; } = PowerModeMappingMode.WindowsPowerMode;\n        public Dictionary<PowerModeState, Guid> PowerPlans { get; set; } = [];\n        public Dictionary<PowerModeState, WindowsPowerMode> PowerModes { get; set; } = [];\n        public bool MinimizeToTray { get; set; } = true;\n        public bool MinimizeOnClose { get; set; }\n        public WindowSize? WindowSize { get; set; }\n        public bool DontShowNotifications { get; set; }\n        public NotificationPosition NotificationPosition { get; set; } = NotificationPosition.BottomCenter;\n        public NotificationDuration NotificationDuration { get; set; } = NotificationDuration.Normal;\n        public bool NotificationAlwaysOnTop { get; set; }\n        public bool NotificationOnAllScreens { get; set; }\n        public Notifications Notifications { get; set; } = new();\n        public TemperatureUnit TemperatureUnit { get; set; }\n        public List<RefreshRate> ExcludedRefreshRates { get; set; } = [];\n        public WarrantyInfo? WarrantyInfo { get; set; }\n        public Guid? SmartKeySinglePressActionId { get; set; }\n        public Guid? SmartKeyDoublePressActionId { get; set; }\n        public List<Guid> SmartKeySinglePressActionList { get; set; } = [];\n        public List<Guid> SmartKeyDoublePressActionList { get; set; } = [];\n        public bool SynchronizeBrightnessToAllPowerPlans { get; set; }\n        public ModifierKey SmartFnLockFlags { get; set; }\n        public bool ResetBatteryOnSinceTimerOnReboot { get; set; }\n    }\n\n    public ApplicationSettings() : base(\"settings.json\")\n    {\n        JsonSerializerSettings.Converters.Add(new LegacyPowerPlanInstanceIdToGuidConverter());\n    }\n}\n\ninternal class LegacyPowerPlanInstanceIdToGuidConverter : JsonConverter // Introduced in 2.12.0\n{\n    public override bool CanWrite => false;\n\n    public override bool CanConvert(Type objectType) => objectType == typeof(Guid);\n\n    public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) => throw new InvalidOperationException();\n\n    public override object ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)\n    {\n        var value = reader.Value?.ToString() ?? string.Empty;\n\n        const string prefix = \"Microsoft:PowerPlan\\\\{\";\n        const string suffix = \"}\";\n\n        var prefixIndex = value.Contains(prefix, StringComparison.InvariantCulture);\n        var suffixIndex = value.IndexOf(suffix, StringComparison.InvariantCulture);\n\n        if (prefixIndex && suffixIndex > 0)\n        {\n            value = value[..suffixIndex];\n            value = value[prefix.Length..];\n        }\n\n        return Guid.Parse(value);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/BalanceModeSettings.cs",
    "content": "﻿using static LenovoLegionToolkit.Lib.Settings.BalanceModeSettings;\n\nnamespace LenovoLegionToolkit.Lib.Settings;\n\npublic class BalanceModeSettings() : AbstractSettings<BalanceModeSettingsStore>(\"balancemode.json\")\n{\n    public class BalanceModeSettingsStore\n    {\n        public bool AIModeEnabled { get; set; }\n    }\n\n    // ReSharper disable once StringLiteralTypo\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/GPUOverclockSettings.cs",
    "content": "﻿using static LenovoLegionToolkit.Lib.Settings.GPUOverclockSettings;\n\nnamespace LenovoLegionToolkit.Lib.Settings;\n\npublic class GPUOverclockSettings() : AbstractSettings<GPUOverclockSettingsStore>(\"gpu_oc.json\")\n{\n    public class GPUOverclockSettingsStore\n    {\n        public bool Enabled { get; set; }\n        public GPUOverclockInfo Info { get; set; } = GPUOverclockInfo.Zero;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/GodModeSettings.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\n\nnamespace LenovoLegionToolkit.Lib.Settings;\n\n\npublic class GodModeSettings() : AbstractSettings<GodModeSettings.GodModeSettingsStore>(\"godmode.json\")\n{\n    public class GodModeSettingsStore\n    {\n        public class Preset\n        {\n            public string Name { get; init; } = string.Empty;\n            public StepperValue? CPULongTermPowerLimit { get; init; }\n            public StepperValue? CPUShortTermPowerLimit { get; init; }\n            public StepperValue? CPUPeakPowerLimit { get; init; }\n            public StepperValue? CPUCrossLoadingPowerLimit { get; init; }\n            public StepperValue? CPUPL1Tau { get; init; }\n            public StepperValue? APUsPPTPowerLimit { get; init; }\n            public StepperValue? CPUTemperatureLimit { get; init; }\n            public StepperValue? GPUPowerBoost { get; init; }\n            public StepperValue? GPUConfigurableTGP { get; init; }\n            public StepperValue? GPUTemperatureLimit { get; init; }\n            public StepperValue? GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline { get; init; }\n            public StepperValue? GPUToCPUDynamicBoost { get; init; }\n            public FanTable? FanTable { get; init; }\n            public bool? FanFullSpeed { get; init; }\n            public int? MinValueOffset { get; init; }\n            public int? MaxValueOffset { get; init; }\n        }\n\n        public Guid ActivePresetId { get; set; }\n\n        public Dictionary<Guid, Preset> Presets { get; set; } = [];\n    }\n\n    // ReSharper disable once StringLiteralTypo\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/IntegrationsSettings.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Settings;\n\npublic class IntegrationsSettings()\n    : AbstractSettings<IntegrationsSettings.IntegrationsSettingsStore>(\"integrations.json\")\n{\n    public class IntegrationsSettingsStore\n    {\n        public bool HWiNFO { get; set; }\n\n        public bool CLI { get; set; }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/PackageDownloaderSettings.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace LenovoLegionToolkit.Lib.Settings;\n\npublic class PackageDownloaderSettings()\n    : AbstractSettings<PackageDownloaderSettings.PackageDownloaderSettingsStore>(\"package_downloader.json\")\n{\n    public class PackageDownloaderSettingsStore\n    {\n        public string? DownloadPath { get; set; }\n        public bool OnlyShowUpdates { get; set; }\n        public HashSet<string> HiddenPackages { get; set; } = [];\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/RGBKeyboardSettings.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace LenovoLegionToolkit.Lib.Settings;\n\npublic class RGBKeyboardSettings() : AbstractSettings<RGBKeyboardSettings.RGBKeyboardSettingsStore>(\"rgb_keyboard.json\")\n{\n    public class RGBKeyboardSettingsStore\n    {\n        public RGBKeyboardBacklightState State { get; set; }\n    }\n\n    protected override RGBKeyboardSettingsStore Default => new()\n    {\n        State = new(RGBKeyboardBacklightPreset.Off, new Dictionary<RGBKeyboardBacklightPreset, RGBKeyboardBacklightBacklightPresetDescription> {\n            { RGBKeyboardBacklightPreset.One, new(RGBKeyboardBacklightEffect.Static, RGBKeyboardBacklightSpeed.Slowest, RGBKeyboardBacklightBrightness.Low, RGBColor.Green, RGBColor.Teal, RGBColor.Purple, RGBColor.Pink) },\n            { RGBKeyboardBacklightPreset.Two, new(RGBKeyboardBacklightEffect.Static, RGBKeyboardBacklightSpeed.Slowest, RGBKeyboardBacklightBrightness.Low, RGBColor.Red, RGBColor.Red, RGBColor.Red, RGBColor.Red) },\n            { RGBKeyboardBacklightPreset.Three, new(RGBKeyboardBacklightEffect.Breath, RGBKeyboardBacklightSpeed.Slowest, RGBKeyboardBacklightBrightness.Low,  RGBColor.White,RGBColor.White,RGBColor.White,RGBColor.White) },\n            { RGBKeyboardBacklightPreset.Four, new(RGBKeyboardBacklightEffect.Smooth, RGBKeyboardBacklightSpeed.Slowest, RGBKeyboardBacklightBrightness.Low, RGBColor.White,RGBColor.White,RGBColor.White,RGBColor.White) },\n        }),\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/SpectrumKeyboardSettings.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Settings;\n\npublic class SpectrumKeyboardSettings()\n    : AbstractSettings<SpectrumKeyboardSettings.SpectrumKeyboardSettingsStore>(\"spectrum_keyboard.json\")\n{\n    public class SpectrumKeyboardSettingsStore\n    {\n        public KeyboardLayout? KeyboardLayout { get; set; }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/SunriseSunsetSettings.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Settings;\n\npublic class SunriseSunsetSettings()\n    : AbstractSettings<SunriseSunsetSettings.SunriseSunsetSettingsStore>(\"sunrise_sunset.json\")\n{\n    public class SunriseSunsetSettingsStore\n    {\n        public DateTime? LastCheckDateTime { get; set; }\n        public Time? Sunrise { get; set; }\n        public Time? Sunset { get; set; }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Settings/UpdateCheckSettings.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Settings;\n\npublic class UpdateCheckSettings() : AbstractSettings<UpdateCheckSettings.UpdateCheckSettingsStore>(\"update_check.json\")\n{\n    public class UpdateCheckSettingsStore\n    {\n        public DateTime? LastUpdateCheckDateTime { get; set; }\n        public UpdateCheckFrequency UpdateCheckFrequency { get; set; }\n    }\n\n    protected override UpdateCheckSettingsStore Default => new()\n    {\n        LastUpdateCheckDateTime = null,\n        UpdateCheckFrequency = UpdateCheckFrequency.PerDay\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/SoftwareDisabler/AbstractSoftwareDisabler.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.ServiceProcess;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing TaskService = Microsoft.Win32.TaskScheduler.TaskService;\n\nnamespace LenovoLegionToolkit.Lib.SoftwareDisabler;\n\npublic class SoftwareDisablerException(string message, Exception innerException) : Exception(message, innerException);\n\npublic abstract class AbstractSoftwareDisabler\n{\n    public class AbstractSoftwareDisablerEventArgs : EventArgs\n    {\n        public SoftwareStatus Status { get; init; }\n    }\n\n    protected abstract IEnumerable<string> ScheduledTasksPaths { get; }\n    protected abstract IEnumerable<string> ServiceNames { get; }\n    protected abstract IEnumerable<string> ProcessNames { get; }\n\n    public event EventHandler<AbstractSoftwareDisablerEventArgs>? OnRefreshed;\n\n    public Task<SoftwareStatus> GetStatusAsync() => Task.Run(() =>\n    {\n        bool isEnabled;\n        bool isInstalled;\n\n        try\n        {\n            var services = RunningServices().ToArray();\n            var processes = RunningProcesses().ToArray();\n\n            if (Log.Instance.IsTraceEnabled)\n            {\n                Log.Instance.Trace($\"Running services count: {services.Length}. [type={GetType().Name}, services={string.Join(\",\", services)}]\");\n                Log.Instance.Trace($\"Running processes count: {processes.Length}. [type={GetType().Name}, processes={string.Join(\",\", processes)}]\");\n            }\n\n            isEnabled = services.Length != 0 || processes.Length != 0;\n            isInstalled = IsInstalled();\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Exception while getting status. [type={GetType().Name}]\", ex);\n\n            isEnabled = false;\n            isInstalled = false;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Status: {isEnabled},{isInstalled} [type={GetType().Name}]\");\n\n        SoftwareStatus status;\n\n        if (isEnabled)\n            status = SoftwareStatus.Enabled;\n        else if (!isInstalled)\n            status = SoftwareStatus.NotFound;\n        else\n            status = SoftwareStatus.Disabled;\n\n        OnRefreshed?.Invoke(this, new() { Status = status });\n\n        return status;\n    });\n\n    public virtual Task EnableAsync() => Task.Run(async () =>\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Enabling... [type={GetType().Name}]\");\n\n        SetScheduledTasksEnabled(true);\n        SetServicesEnabled(true);\n\n        _ = await GetStatusAsync().ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Enabled [type={GetType().Name}]\");\n    });\n\n    public virtual Task DisableAsync() => Task.Run(async () =>\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Disabling... [type={GetType().Name}]\");\n\n        SetScheduledTasksEnabled(false);\n        SetServicesEnabled(false);\n        await KillProcessesAsync().ConfigureAwait(false);\n\n        _ = await GetStatusAsync().ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Disabled [type={GetType().Name}]\");\n    });\n\n    private bool IsInstalled() => ServiceController.GetServices().Any(s => ServiceNames.Contains(s.ServiceName));\n\n    private IEnumerable<string> RunningServices()\n    {\n        var services = ServiceController.GetServices();\n        return ServiceNames.Where(s => IsServiceEnabled(s, services));\n    }\n\n    protected virtual IEnumerable<string> RunningProcesses()\n    {\n        foreach (var process in Process.GetProcesses())\n        {\n            foreach (var processName in ProcessNames)\n            {\n                var name = string.Empty;\n\n                try\n                {\n                    name = process.ProcessName;\n                    if (!name.StartsWith(processName, StringComparison.InvariantCultureIgnoreCase))\n                        continue;\n                }\n                catch {  /* Ignored. */ }\n\n                if (!string.IsNullOrEmpty(name))\n                    yield return name;\n            }\n        }\n    }\n\n    private static bool IsServiceEnabled(string serviceName, IEnumerable<ServiceController> services)\n    {\n        try\n        {\n            var service = services.FirstOrDefault(s => s.ServiceName == serviceName);\n            if (service is null)\n                return false;\n\n            return service.Status is not ServiceControllerStatus.Stopped;\n        }\n        catch (InvalidOperationException)\n        {\n            return false;\n        }\n    }\n\n    private void SetScheduledTasksEnabled(bool enabled)\n    {\n        var taskService = TaskService.Instance;\n        foreach (var path in ScheduledTasksPaths)\n            SetTasksInFolderEnabled(taskService, path, enabled);\n    }\n\n    private void SetTasksInFolderEnabled(TaskService taskService, string path, bool enabled)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting tasks in folder {path} to {enabled}. [type={GetType().Name}]\");\n\n        var folder = taskService.GetFolder(path);\n        if (folder is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Folder not found [path={path}, type={GetType().Name}]]\");\n\n            return;\n        }\n\n        foreach (var task in folder.Tasks.ToArray())\n        {\n            task.Definition.Settings.Enabled = enabled;\n            try\n            {\n                task.RegisterChanges();\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Failed to register changes on task {task.Name} in {task.Path}.\", ex);\n\n                throw new SoftwareDisablerException($\"Failed to register changes on task {task.Name} in {task.Path} [type={GetType().Name}]\", ex);\n            }\n        }\n    }\n\n    private void SetServicesEnabled(bool enabled)\n    {\n        foreach (var serviceName in ServiceNames)\n            SetServiceEnabled(serviceName, enabled);\n    }\n\n    private void SetServiceEnabled(string serviceName, bool enabled)\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Setting service {serviceName} to {enabled}. [type={GetType().Name}]\");\n\n            if (!ServiceController.GetServices().Any(s => s.ServiceName == serviceName))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Service {serviceName} not found. [type={GetType().Name}]\");\n\n                return;\n            }\n\n            var service = new ServiceController(serviceName);\n\n            try\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Changing service {serviceName} start mode to {enabled}.  [type={GetType().Name}]\");\n\n                service.ChangeStartMode(enabled);\n\n                if (enabled)\n                {\n                    if (service.Status != ServiceControllerStatus.Running)\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Starting service {serviceName}... [type={GetType().Name}]\");\n                        service.Start();\n                        service.WaitForStatus(ServiceControllerStatus.Running);\n                    }\n                    else\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Will not start service {serviceName}. [status={service.Status}, type={GetType().Name}]]\");\n                    }\n                }\n                else\n                {\n                    if (service.CanStop)\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Stopping service {serviceName}... [type={GetType().Name}]\");\n                        service.Stop();\n                        service.WaitForStatus(ServiceControllerStatus.Stopped);\n                    }\n                    else\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Will not stop service {serviceName}. [status={service.Status}, canStop={service.CanStop}, type={GetType().Name}]]\");\n                    }\n                }\n            }\n            finally\n            {\n                service.Close();\n            }\n        }\n        catch (InvalidOperationException ex) when (ex.InnerException is Win32Exception { NativeErrorCode: 1060 })\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Service {serviceName} could not be set to {enabled}\");\n\n            throw new SoftwareDisablerException(serviceName, ex);\n        }\n    }\n\n    protected virtual async Task KillProcessesAsync()\n    {\n        foreach (var process in Process.GetProcesses())\n            foreach (var processName in ProcessNames)\n            {\n                try\n                {\n                    if (process.ProcessName.StartsWith(processName, StringComparison.InvariantCultureIgnoreCase))\n                    {\n                        process.Kill(true);\n                        await process.WaitForExitAsync().ConfigureAwait(false);\n                    }\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Couldn't kill process.\", ex);\n                }\n            }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/SoftwareDisabler/FnKeysDisabler.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.SoftwareDisabler;\n\npublic class FnKeysDisabler : AbstractSoftwareDisabler\n{\n    protected override IEnumerable<string> ScheduledTasksPaths => [];\n    protected override IEnumerable<string> ServiceNames => [\"LenovoFnAndFunctionKeys\"];\n    protected override IEnumerable<string> ProcessNames => [\"LenovoUtilityUI\", \"LenovoUtilityService\", \"LenovoSmartKey\"];\n\n    public override async Task EnableAsync()\n    {\n        await base.EnableAsync().ConfigureAwait(false);\n        SetUwpStartup(\"LenovoUtility\", \"LenovoUtilityID\", true);\n    }\n\n    public override async Task DisableAsync()\n    {\n        await base.DisableAsync().ConfigureAwait(false);\n        SetUwpStartup(\"LenovoUtility\", \"LenovoUtilityID\", false);\n    }\n\n    protected override IEnumerable<string> RunningProcesses()\n    {\n        var result = base.RunningProcesses().ToList();\n\n        try\n        {\n            foreach (var process in Process.GetProcessesByName(\"utility\"))\n            {\n                var description = process.MainModule?.FileVersionInfo.FileDescription;\n                if (description is null)\n                    continue;\n\n                if (description.Equals(\"Lenovo Hotkeys\", StringComparison.InvariantCultureIgnoreCase))\n                    result.Add(process.ProcessName);\n            }\n        }\n        catch {  /* Ignored. */ }\n\n        return result;\n    }\n\n    protected override async Task KillProcessesAsync()\n    {\n        await base.KillProcessesAsync().ConfigureAwait(false);\n\n        try\n        {\n            foreach (var process in Process.GetProcessesByName(\"utility\"))\n            {\n                var description = process.MainModule?.FileVersionInfo.FileDescription;\n                if (description is null)\n                    continue;\n\n                if (!description.Equals(\"Lenovo Hotkeys\", StringComparison.InvariantCultureIgnoreCase))\n                    continue;\n\n                process.Kill();\n                await process.WaitForExitAsync().ConfigureAwait(false);\n            }\n        }\n        catch {  /* Ignored. */ }\n    }\n\n    private static void SetUwpStartup(string appPattern, string subKeyName, bool enabled)\n    {\n        const string hive = \"HKEY_CURRENT_USER\";\n        const string subKey = @\"Software\\Classes\\Local Settings\\Software\\Microsoft\\Windows\\CurrentVersion\\AppModel\\SystemAppData\";\n        const string valueName = \"State\";\n\n        var startupKey = Registry.GetSubKeys(hive, subKey).FirstOrDefault(s => s.Contains(appPattern, StringComparison.CurrentCultureIgnoreCase));\n        if (startupKey is null)\n            return;\n\n        startupKey = Path.Combine(startupKey, subKeyName);\n\n        Registry.SetValue(hive, startupKey, valueName, enabled ? 0x2 : 0x1);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/SoftwareDisabler/LegionZoneDisabler.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace LenovoLegionToolkit.Lib.SoftwareDisabler;\n\npublic class LegionZoneDisabler : AbstractSoftwareDisabler\n{\n    protected override IEnumerable<string> ScheduledTasksPaths => [];\n    protected override IEnumerable<string> ServiceNames => [\"LZService\"];\n    protected override IEnumerable<string> ProcessNames => [\"LegionZone\", \"LZTray\"];\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/SoftwareDisabler/VantageDisabler.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace LenovoLegionToolkit.Lib.SoftwareDisabler;\n\npublic class VantageDisabler : AbstractSoftwareDisabler\n{\n    protected override IEnumerable<string> ScheduledTasksPaths =>\n    [\n        \"Lenovo\\\\BatteryGauge\",\n        \"Lenovo\\\\ImController\",\n        \"Lenovo\\\\ImController\\\\Plugins\",\n        \"Lenovo\\\\ImController\\\\TimeBasedEvents\",\n        \"Lenovo\\\\UDC\",\n        \"Lenovo\\\\Vantage\",\n        \"Lenovo\\\\Vantage\\\\Schedule\"\n    ];\n\n    protected override IEnumerable<string> ServiceNames =>\n    [\n        \"ImControllerService\",\n        \"LenovoVantageService\"\n    ];\n\n    protected override IEnumerable<string> ProcessNames =>\n    [\n        \"LenovoVantage\",\n        \"Lenovo.Modern.ImController\"\n    ];\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Structs.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Collections.ObjectModel;\nusing System.Diagnostics;\nusing System.Drawing;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing Newtonsoft.Json;\nusing Octokit;\n\nnamespace LenovoLegionToolkit.Lib;\n\npublic readonly struct BatteryInformation(\n    bool isCharging,\n    int batteryPercentage,\n    int batteryLifeRemaining,\n    int fullBatteryLifeRemaining,\n    int dischargeRate,\n    int minDischargeRate,\n    int maxDischargeRate,\n    int estimateChargeRemaining,\n    int designCapacity,\n    int fullChargeCapacity,\n    int cycleCount,\n    bool isLowBattery,\n    double? batteryTemperatureC,\n    DateTime? manufactureDate,\n    DateTime? firstUseDate)\n{\n    public bool IsCharging { get; } = isCharging;\n    public int BatteryPercentage { get; } = batteryPercentage;\n    public int BatteryLifeRemaining { get; } = batteryLifeRemaining;\n    public int FullBatteryLifeRemaining { get; init; } = fullBatteryLifeRemaining;\n    public int DischargeRate { get; } = dischargeRate;\n    public int MinDischargeRate { get; } = minDischargeRate;\n    public int MaxDischargeRate { get; } = maxDischargeRate;\n    public int EstimateChargeRemaining { get; } = estimateChargeRemaining;\n    public int DesignCapacity { get; } = designCapacity;\n    public int FullChargeCapacity { get; } = fullChargeCapacity;\n    public int CycleCount { get; } = cycleCount;\n    public bool IsLowBattery { get; } = isLowBattery;\n    public double? BatteryTemperatureC { get; } = batteryTemperatureC;\n    public DateTime? ManufactureDate { get; } = manufactureDate;\n    public DateTime? FirstUseDate { get; } = firstUseDate;\n    public double BatteryHealth =>\n        DesignCapacity > 0\n        ? Math.Round((double)FullChargeCapacity / DesignCapacity * 100.0, 2, MidpointRounding.AwayFromZero)\n        : 0.0;\n}\n\npublic readonly struct BiosVersion(string prefix, int? version)\n{\n    public string Prefix { get; } = prefix;\n    public int? Version { get; } = version;\n\n    public bool IsHigherOrEqualThan(BiosVersion other)\n    {\n        if (!Prefix.Equals(other.Prefix, StringComparison.InvariantCultureIgnoreCase))\n            return false;\n\n        if (Version is null || other.Version is null)\n            return true;\n\n        return Version >= other.Version;\n    }\n\n    public bool IsLowerThan(BiosVersion other)\n    {\n        if (!Prefix.Equals(other.Prefix, StringComparison.InvariantCultureIgnoreCase))\n            return false;\n\n        if (Version is null || other.Version is null)\n            return true;\n\n        return Version < other.Version;\n    }\n\n    public override string ToString() => $\"{nameof(Prefix)}: {Prefix}, {nameof(Version)}: {Version}\";\n}\n\npublic readonly struct Brightness(byte value)\n{\n    public byte Value { get; } = value;\n}\n\npublic readonly struct DiscreteCapability(CapabilityID id, int value)\n{\n    public CapabilityID Id { get; } = id;\n    public int Value { get; } = value;\n}\n\npublic readonly struct DisplayAdvancedColorInfo(bool advancedColorSupported, bool advancedColorEnabled, bool wideColorEnforced, bool advancedColorForceDisabled)\n{\n    public bool AdvancedColorSupported { get; } = advancedColorSupported;\n    public bool AdvancedColorEnabled { get; } = advancedColorEnabled;\n    public bool WideColorEnforced { get; } = wideColorEnforced;\n    public bool AdvancedColorForceDisabled { get; } = advancedColorForceDisabled;\n}\n\npublic struct Device(\n    string name,\n    string description,\n    string busReportedDeviceDescription,\n    string deviceInstanceId,\n    Guid classGuid,\n    string className,\n    bool isRemovable,\n    bool isDisconnected)\n{\n    public string Name { get; } = name;\n    public string Description { get; } = description;\n    public string BusReportedDeviceDescription { get; } = busReportedDeviceDescription;\n    public string DeviceInstanceId { get; } = deviceInstanceId;\n    public Guid ClassGuid { get; } = classGuid;\n    public string ClassName { get; } = className;\n    public bool IsRemovable { get; } = isRemovable;\n    public bool IsDisconnected { get; } = isDisconnected;\n\n    private string? _index;\n\n    public string Index\n    {\n        get\n        {\n            _index ??= new StringBuilder()\n                .Append(ClassName)\n                .Append(ClassGuid)\n                .Append(BusReportedDeviceDescription)\n                .Append(Description)\n                .Append(Name)\n                .Append(DeviceInstanceId)\n                .ToString();\n            return _index;\n        }\n    }\n}\n\npublic readonly struct DriverInfo(string deviceId, string hardwareId, Version? version, DateTime? date)\n{\n    public string DeviceId { get; } = deviceId;\n    public string HardwareId { get; } = hardwareId;\n    public Version? Version { get; } = version;\n    public DateTime? Date { get; } = date;\n}\n\npublic readonly struct FanTableData(FanTableType type, byte fanId, byte sensorId, ushort[] fanSpeeds, ushort[] temps)\n{\n    public FanTableType Type { get; } = type;\n    public byte FanId { get; } = fanId;\n    public byte SensorId { get; } = sensorId;\n    public ushort[] FanSpeeds { get; } = fanSpeeds;\n    public ushort[] Temps { get; } = temps;\n\n    public override string ToString() =>\n        $\"{nameof(Type)}: {Type},\" +\n        $\" {nameof(FanId)}: {FanId},\" +\n        $\" {nameof(SensorId)}: {SensorId},\" +\n        $\" {nameof(FanSpeeds)}: [{string.Join(\", \", FanSpeeds)}],\" +\n        $\" {nameof(Temps)}: [{string.Join(\", \", Temps)}]\";\n}\n\npublic readonly struct FanTable\n{\n    // ReSharper disable AutoPropertyCanBeMadeGetOnly.Global\n    // ReSharper disable MemberCanBePrivate.Global\n    // ReSharper disable IdentifierTypo\n    // ReSharper disable InconsistentNaming\n\n    public byte FSTM { get; init; }\n    public byte FSID { get; init; }\n    public uint FSTL { get; init; }\n    public ushort FSS0 { get; init; }\n    public ushort FSS1 { get; init; }\n    public ushort FSS2 { get; init; }\n    public ushort FSS3 { get; init; }\n    public ushort FSS4 { get; init; }\n    public ushort FSS5 { get; init; }\n    public ushort FSS6 { get; init; }\n    public ushort FSS7 { get; init; }\n    public ushort FSS8 { get; init; }\n    public ushort FSS9 { get; init; }\n\n    // ReSharper restore AutoPropertyCanBeMadeGetOnly.Global\n    // ReSharper restore MemberCanBePrivate.Global\n    // ReSharper restore IdentifierTypo\n    // ReSharper restore InconsistentNaming\n\n    public FanTable(ushort[] fanTable)\n    {\n        if (fanTable.Length != 10)\n            // ReSharper disable once LocalizableElement\n            throw new ArgumentException(\"Fan table length must be 10\", nameof(fanTable));\n\n        FSTM = 1;\n        FSID = 0;\n        FSTL = 0;\n        FSS0 = fanTable[0];\n        FSS1 = fanTable[1];\n        FSS2 = fanTable[2];\n        FSS3 = fanTable[3];\n        FSS4 = fanTable[4];\n        FSS5 = fanTable[5];\n        FSS6 = fanTable[6];\n        FSS7 = fanTable[7];\n        FSS8 = fanTable[8];\n        FSS9 = fanTable[9];\n    }\n\n    public ushort[] GetTable() => [FSS0, FSS1, FSS2, FSS3, FSS4, FSS5, FSS6, FSS7, FSS8, FSS9];\n\n    public byte[] GetBytes()\n    {\n        using var ms = new MemoryStream(new byte[64]);\n        ms.WriteByte(FSTM);\n        ms.WriteByte(FSID);\n        ms.Write(BitConverter.GetBytes(FSTL));\n        ms.Write(BitConverter.GetBytes(FSS0));\n        ms.Write(BitConverter.GetBytes(FSS1));\n        ms.Write(BitConverter.GetBytes(FSS2));\n        ms.Write(BitConverter.GetBytes(FSS3));\n        ms.Write(BitConverter.GetBytes(FSS4));\n        ms.Write(BitConverter.GetBytes(FSS5));\n        ms.Write(BitConverter.GetBytes(FSS6));\n        ms.Write(BitConverter.GetBytes(FSS7));\n        ms.Write(BitConverter.GetBytes(FSS8));\n        ms.Write(BitConverter.GetBytes(FSS9));\n        return ms.ToArray();\n    }\n\n    public override string ToString() =>\n        $\"{nameof(FSTM)}: {FSTM},\" +\n        $\" {nameof(FSID)}: {FSID},\" +\n        $\" {nameof(FSTL)}: {FSTL},\" +\n        $\" {nameof(FSS0)}: {FSS0},\" +\n        $\" {nameof(FSS1)}: {FSS1},\" +\n        $\" {nameof(FSS2)}: {FSS2},\" +\n        $\" {nameof(FSS3)}: {FSS3},\" +\n        $\" {nameof(FSS4)}: {FSS4},\" +\n        $\" {nameof(FSS5)}: {FSS5},\" +\n        $\" {nameof(FSS6)}: {FSS6},\" +\n        $\" {nameof(FSS7)}: {FSS7},\" +\n        $\" {nameof(FSS8)}: {FSS8},\" +\n        $\" {nameof(FSS9)}: {FSS9}\";\n}\n\npublic readonly struct FanTableInfo(FanTableData[] data, FanTable table)\n{\n    public FanTableData[] Data { get; } = data;\n    public FanTable Table { get; } = table;\n\n    public override string ToString() =>\n        $\"{nameof(Data)}: [{string.Join(\", \", Data)}],\" +\n        $\" {nameof(Table)}: {Table}\";\n}\n\npublic readonly struct GPUOverclockInfo(int coreDeltaMhz, int memoryDeltaMhz)\n{\n    public static readonly GPUOverclockInfo Zero = new();\n\n    public int CoreDeltaMhz { get; } = coreDeltaMhz;\n    public int MemoryDeltaMhz { get; } = memoryDeltaMhz;\n\n    #region Equality\n\n    public override bool Equals(object? obj) => obj is GPUOverclockInfo other && CoreDeltaMhz == other.CoreDeltaMhz && MemoryDeltaMhz == other.MemoryDeltaMhz;\n\n    public override int GetHashCode() => HashCode.Combine(CoreDeltaMhz, MemoryDeltaMhz);\n\n    public static bool operator ==(GPUOverclockInfo left, GPUOverclockInfo right) => left.Equals(right);\n\n    public static bool operator !=(GPUOverclockInfo left, GPUOverclockInfo right) => !left.Equals(right);\n\n    #endregion\n\n    public override string ToString() => $\"{nameof(CoreDeltaMhz)}: {CoreDeltaMhz}, {nameof(MemoryDeltaMhz)}: {MemoryDeltaMhz}\";\n\n}\n\npublic readonly struct GodModeDefaults\n{\n    public int? CPULongTermPowerLimit { get; init; }\n    public int? CPUShortTermPowerLimit { get; init; }\n    public int? CPUPeakPowerLimit { get; init; }\n    public int? CPUCrossLoadingPowerLimit { get; init; }\n    public int? CPUPL1Tau { get; init; }\n    public int? APUsPPTPowerLimit { get; init; }\n    public int? CPUTemperatureLimit { get; init; }\n    public int? GPUPowerBoost { get; init; }\n    public int? GPUConfigurableTGP { get; init; }\n    public int? GPUTemperatureLimit { get; init; }\n    public int? GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline { get; init; }\n    public int? GPUToCPUDynamicBoost { get; init; }\n    public FanTable? FanTable { get; init; }\n    public bool? FanFullSpeed { get; init; }\n\n    public override string ToString() =>\n        $\"{nameof(CPULongTermPowerLimit)}: {CPULongTermPowerLimit},\" +\n        $\" {nameof(CPUShortTermPowerLimit)}: {CPUShortTermPowerLimit},\" +\n        $\" {nameof(CPUPeakPowerLimit)}: {CPUPeakPowerLimit},\" +\n        $\" {nameof(CPUCrossLoadingPowerLimit)}: {CPUCrossLoadingPowerLimit},\" +\n        $\" {nameof(CPUPL1Tau)}: {CPUPL1Tau},\" +\n        $\" {nameof(APUsPPTPowerLimit)}: {APUsPPTPowerLimit},\" +\n        $\" {nameof(CPUTemperatureLimit)}: {CPUTemperatureLimit},\" +\n        $\" {nameof(GPUPowerBoost)}: {GPUPowerBoost},\" +\n        $\" {nameof(GPUConfigurableTGP)}: {GPUConfigurableTGP},\" +\n        $\" {nameof(GPUTemperatureLimit)}: {GPUTemperatureLimit},\" +\n        $\" {nameof(GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline)}: {GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline},\" +\n        $\" {nameof(GPUToCPUDynamicBoost)}: {GPUToCPUDynamicBoost},\" +\n        $\" {nameof(FanTable)}: {FanTable},\" +\n        $\" {nameof(FanFullSpeed)}: {FanFullSpeed}\";\n}\n\npublic readonly struct GodModeState\n{\n    public Guid ActivePresetId { get; init; }\n    public ReadOnlyDictionary<Guid, GodModePreset> Presets { get; init; }\n}\n\npublic readonly struct GodModePreset\n{\n    public string Name { get; init; }\n    public StepperValue? CPULongTermPowerLimit { get; init; }\n    public StepperValue? CPUShortTermPowerLimit { get; init; }\n    public StepperValue? CPUPeakPowerLimit { get; init; }\n    public StepperValue? CPUCrossLoadingPowerLimit { get; init; }\n    public StepperValue? CPUPL1Tau { get; init; }\n    public StepperValue? APUsPPTPowerLimit { get; init; }\n    public StepperValue? CPUTemperatureLimit { get; init; }\n    public StepperValue? GPUPowerBoost { get; init; }\n    public StepperValue? GPUConfigurableTGP { get; init; }\n    public StepperValue? GPUTemperatureLimit { get; init; }\n    public StepperValue? GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline { get; init; }\n    public StepperValue? GPUToCPUDynamicBoost { get; init; }\n    public FanTableInfo? FanTableInfo { get; init; }\n    public bool? FanFullSpeed { get; init; }\n    public int? MinValueOffset { get; init; }\n    public int? MaxValueOffset { get; init; }\n\n    public override string ToString() =>\n        $\"{nameof(Name)}: {Name},\" +\n        $\" {nameof(CPULongTermPowerLimit)}: {CPULongTermPowerLimit},\" +\n        $\" {nameof(CPUShortTermPowerLimit)}: {CPUShortTermPowerLimit},\" +\n        $\" {nameof(CPUPeakPowerLimit)}: {CPUPeakPowerLimit},\" +\n        $\" {nameof(CPUCrossLoadingPowerLimit)}: {CPUCrossLoadingPowerLimit},\" +\n        $\" {nameof(CPUPL1Tau)}: {CPUPL1Tau},\" +\n        $\" {nameof(APUsPPTPowerLimit)}: {APUsPPTPowerLimit},\" +\n        $\" {nameof(CPUTemperatureLimit)}: {CPUTemperatureLimit},\" +\n        $\" {nameof(GPUPowerBoost)}: {GPUPowerBoost},\" +\n        $\" {nameof(GPUConfigurableTGP)}: {GPUConfigurableTGP},\" +\n        $\" {nameof(GPUTemperatureLimit)}: {GPUTemperatureLimit},\" +\n        $\" {nameof(GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline)}: {GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline},\" +\n        $\" {nameof(GPUToCPUDynamicBoost)}: {GPUToCPUDynamicBoost},\" +\n        $\" {nameof(FanTableInfo)}: {FanTableInfo},\" +\n        $\" {nameof(FanFullSpeed)}: {FanFullSpeed},\" +\n        $\" {nameof(MinValueOffset)}: {MinValueOffset},\" +\n        $\" {nameof(MaxValueOffset)}: {MaxValueOffset}\";\n}\n\npublic readonly struct GPUStatus(GPUState state, string? performanceState, List<Process> processes)\n{\n    public GPUState State { get; } = state;\n    public string? PerformanceState { get; } = performanceState;\n    public List<Process> Processes { get; } = processes;\n    public int ProcessCount => Processes.Count;\n}\n\npublic readonly struct HardwareId(string vendor, string device)\n{\n    public static readonly HardwareId Empty = new();\n\n    public string Vendor { get; } = vendor;\n    public string Device { get; } = device;\n\n    #region Equality\n\n    public override bool Equals(object? obj)\n    {\n        if (obj is not HardwareId other)\n            return false;\n\n        if (!Vendor.Equals(other.Vendor, StringComparison.InvariantCultureIgnoreCase))\n            return false;\n\n        if (!Device.Equals(other.Device, StringComparison.InvariantCultureIgnoreCase))\n            return false;\n\n        return true;\n    }\n\n    public override int GetHashCode() => HashCode.Combine(Vendor, Device);\n\n    public static bool operator ==(HardwareId left, HardwareId right) => left.Equals(right);\n\n    public static bool operator !=(HardwareId left, HardwareId right) => !left.Equals(right);\n\n    #endregion\n}\n\npublic readonly struct MachineInformation\n{\n    public readonly struct FeatureData(FeatureData.SourceType sourceType, IEnumerable<CapabilityID> capabilities)\n    {\n        public static readonly FeatureData Unknown = new(SourceType.Unknown);\n\n        public enum SourceType\n        {\n            Unknown,\n            Flags,\n            CapabilityData\n        }\n\n        private readonly HashSet<CapabilityID> _capabilities = [.. capabilities];\n\n        public SourceType Source { get; } = sourceType;\n\n        public IEnumerable<CapabilityID> All => _capabilities.Order().AsEnumerable();\n\n        public FeatureData(SourceType sourceType) : this(sourceType, []) { }\n\n        public bool this[CapabilityID key]\n        {\n            get => _capabilities.Contains(key);\n            init\n            {\n                if (value)\n                    _capabilities.Add(key);\n                else\n                    _capabilities.Remove(key);\n            }\n        }\n    }\n\n    public readonly struct PropertyData\n    {\n        public bool SupportsGodMode => SupportsGodModeV1 || SupportsGodModeV2;\n\n        public (bool status, bool connectivity) SupportsAlwaysOnAc { get; init; }\n        public bool SupportsGodModeV1 { get; init; }\n        public bool SupportsGodModeV2 { get; init; }\n        public bool SupportsGSync { get; init; }\n        public bool SupportsIGPUMode { get; init; }\n        public bool SupportsAIMode { get; init; }\n        public bool SupportBootLogoChange { get; init; }\n        public bool HasQuietToPerformanceModeSwitchingBug { get; init; }\n        public bool HasGodModeToOtherModeSwitchingBug { get; init; }\n        public bool IsExcludedFromLenovoLighting { get; init; }\n        public bool IsExcludedFromPanelLogoLenovoLighting { get; init; }\n        public bool HasAlternativeFullSpectrumLayout { get; init; }\n    }\n\n    public string Vendor { get; init; }\n    public string MachineType { get; init; }\n    public string Model { get; init; }\n    public string SerialNumber { get; init; }\n    public BiosVersion? BiosVersion { get; init; }\n    public string? BiosVersionRaw { get; init; }\n    public PowerModeState[] SupportedPowerModes { get; init; }\n    public int SmartFanVersion { get; init; }\n    public int LegionZoneVersion { get; init; }\n    public FeatureData Features { get; init; }\n    public PropertyData Properties { get; init; }\n}\n\npublic struct Package\n{\n    public string Id { get; init; }\n    public string Title { get; init; }\n    public string Description { get; init; }\n    public string Version { get; init; }\n    public string Category { get; init; }\n    public string FileName { get; init; }\n    public string FileSize { get; init; }\n    public string? FileCrc { get; init; }\n    public DateTime ReleaseDate { get; init; }\n    public string? Readme { get; init; }\n    public string FileLocation { get; init; }\n    public bool IsUpdate { get; init; }\n    public RebootType Reboot { get; init; }\n\n    private string? _index;\n\n    public string Index\n    {\n        get\n        {\n            _index ??= new StringBuilder()\n                .Append(Title)\n                .Append(Description)\n                .Append(Version)\n                .Append(Category)\n                .Append(FileName)\n                .ToString();\n            return _index;\n        }\n    }\n}\n\npublic readonly struct WindowsPowerPlan(Guid guid, string name, bool isActive)\n{\n    public Guid Guid { get; } = guid;\n    public string Name { get; } = name;\n    public bool IsActive { get; } = isActive;\n\n    public override string ToString() => $\"{nameof(Guid)}: {Guid}, {nameof(Name)}: {Name}, {nameof(IsActive)}: {IsActive}\";\n\n    #region Equality\n\n    public override bool Equals(object? obj) => obj is WindowsPowerPlan other && Guid.Equals(other.Guid);\n\n    public override int GetHashCode() => Guid.GetHashCode();\n\n    public static bool operator ==(WindowsPowerPlan left, WindowsPowerPlan right) => left.Equals(right);\n\n    public static bool operator !=(WindowsPowerPlan left, WindowsPowerPlan right) => !left.Equals(right);\n\n    #endregion\n}\n\n[method: JsonConstructor]\npublic readonly struct ProcessInfo(string name, string? executablePath) : IComparable\n{\n    public static ProcessInfo FromPath(string path) => new(Path.GetFileNameWithoutExtension(path), path);\n\n    public string Name { get; } = name;\n\n    public string? ExecutablePath { get; } = executablePath;\n\n    public override string ToString() => $\"{nameof(Name)}: {Name}, {nameof(ExecutablePath)}: {ExecutablePath}\";\n\n    #region Equality\n\n    public int CompareTo(object? obj)\n    {\n        var other = obj is null ? default : (ProcessInfo)obj;\n        var result = string.Compare(Name, other.Name, StringComparison.InvariantCultureIgnoreCase);\n        return result != 0 ? result : string.Compare(ExecutablePath, other.ExecutablePath, StringComparison.InvariantCultureIgnoreCase);\n    }\n\n    public override bool Equals(object? obj) => obj is ProcessInfo info && Name == info.Name && ExecutablePath == info.ExecutablePath;\n\n    public override int GetHashCode() => HashCode.Combine(Name, ExecutablePath);\n\n    public static bool operator ==(ProcessInfo left, ProcessInfo right) => left.Equals(right);\n\n    public static bool operator !=(ProcessInfo left, ProcessInfo right) => !(left == right);\n\n    public static bool operator <(ProcessInfo left, ProcessInfo right) => left.CompareTo(right) < 0;\n\n    public static bool operator <=(ProcessInfo left, ProcessInfo right) => left.CompareTo(right) <= 0;\n\n    public static bool operator >(ProcessInfo left, ProcessInfo right) => left.CompareTo(right) > 0;\n\n    public static bool operator >=(ProcessInfo left, ProcessInfo right) => left.CompareTo(right) >= 0;\n\n    #endregion\n}\n\npublic readonly struct RangeCapability(CapabilityID id, int defaultValue, int min, int max, int step)\n{\n    public CapabilityID Id { get; } = id;\n    public int DefaultValue { get; } = defaultValue;\n    public int Min { get; } = min;\n    public int Max { get; } = max;\n    public int Step { get; } = step;\n}\n\n[method: JsonConstructor]\npublic readonly struct RGBColor(byte r, byte g, byte b)\n{\n    public static readonly RGBColor Green = new(142, 255, 0);\n    public static readonly RGBColor Pink = new(186, 0, 255);\n    public static readonly RGBColor Purple = new(101, 0, 255);\n    public static readonly RGBColor Red = new(255, 0, 0);\n    public static readonly RGBColor Teal = new(0, 212, 255);\n    public static readonly RGBColor White = new(255, 255, 255);\n\n    public byte R { get; } = r;\n    public byte G { get; } = g;\n    public byte B { get; } = b;\n\n    #region Equality\n\n    public override bool Equals(object? obj)\n    {\n        return obj is RGBColor color && R == color.R && G == color.G && B == color.B;\n    }\n\n    public override int GetHashCode() => (R, G, B).GetHashCode();\n\n    public static bool operator ==(RGBColor left, RGBColor right) => left.Equals(right);\n\n    public static bool operator !=(RGBColor left, RGBColor right) => !left.Equals(right);\n\n    #endregion\n\n    public override string ToString() => $\"{nameof(R)}: {R}, {nameof(G)}: {G}, {nameof(B)}: {B}\";\n}\n\n[method: JsonConstructor]\npublic readonly struct RGBKeyboardBacklightBacklightPresetDescription(\n    RGBKeyboardBacklightEffect effect,\n    RGBKeyboardBacklightSpeed speed,\n    RGBKeyboardBacklightBrightness brightness,\n    RGBColor zone1,\n    RGBColor zone2,\n    RGBColor zone3,\n    RGBColor zone4)\n{\n    public static readonly RGBKeyboardBacklightBacklightPresetDescription Default = new(RGBKeyboardBacklightEffect.Static, RGBKeyboardBacklightSpeed.Slowest, RGBKeyboardBacklightBrightness.High, RGBColor.White, RGBColor.White, RGBColor.White, RGBColor.White);\n\n    public RGBKeyboardBacklightEffect Effect { get; } = effect;\n    public RGBKeyboardBacklightSpeed Speed { get; } = speed;\n    public RGBKeyboardBacklightBrightness Brightness { get; } = brightness;\n    public RGBColor Zone1 { get; } = zone1;\n    public RGBColor Zone2 { get; } = zone2;\n    public RGBColor Zone3 { get; } = zone3;\n    public RGBColor Zone4 { get; } = zone4;\n\n    #region Equality\n\n    public override bool Equals(object? obj)\n    {\n        return obj is RGBKeyboardBacklightBacklightPresetDescription settings &&\n               Effect == settings.Effect &&\n               Speed == settings.Speed &&\n               Brightness == settings.Brightness &&\n               Zone1.Equals(settings.Zone1) &&\n               Zone2.Equals(settings.Zone2) &&\n               Zone3.Equals(settings.Zone3) &&\n               Zone4.Equals(settings.Zone4);\n    }\n\n    public override int GetHashCode() => HashCode.Combine(Effect, Speed, Brightness, Zone1, Zone2, Zone3, Zone4);\n\n    public static bool operator ==(RGBKeyboardBacklightBacklightPresetDescription left, RGBKeyboardBacklightBacklightPresetDescription right) => left.Equals(right);\n\n    public static bool operator !=(RGBKeyboardBacklightBacklightPresetDescription left, RGBKeyboardBacklightBacklightPresetDescription right) => !(left == right);\n\n    #endregion\n\n    public override string ToString() =>\n        $\"{nameof(Effect)}: {Effect},\" +\n        $\" {nameof(Speed)}: {Speed},\" +\n        $\" {nameof(Brightness)}: {Brightness},\" +\n        $\" {nameof(Zone1)}: {Zone1},\" +\n        $\" {nameof(Zone2)}: {Zone2},\" +\n        $\" {nameof(Zone3)}: {Zone3},\" +\n        $\" {nameof(Zone4)}: {Zone4}\";\n}\n\n[method: JsonConstructor]\npublic readonly struct RGBKeyboardBacklightState(\n    RGBKeyboardBacklightPreset selectedPreset,\n    Dictionary<RGBKeyboardBacklightPreset, RGBKeyboardBacklightBacklightPresetDescription> presets)\n{\n    public RGBKeyboardBacklightPreset SelectedPreset { get; } = selectedPreset;\n    public Dictionary<RGBKeyboardBacklightPreset, RGBKeyboardBacklightBacklightPresetDescription> Presets { get; } = presets;\n}\n\npublic readonly struct SensorData(\n    int utilization,\n    int maxUtilization,\n    int coreClock,\n    int maxCoreClock,\n    int memoryClock,\n    int maxMemoryClock,\n    int temperature,\n    int maxTemperature,\n    int fanSpeed,\n    int maxFanSpeed)\n{\n    public static readonly SensorData Empty = new(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1);\n\n    public int Utilization { get; } = utilization;\n    public int MaxUtilization { get; } = maxUtilization;\n    public int CoreClock { get; } = coreClock;\n    public int MaxCoreClock { get; } = maxCoreClock;\n    public int MemoryClock { get; } = memoryClock;\n    public int MaxMemoryClock { get; } = maxMemoryClock;\n    public int Temperature { get; } = temperature;\n    public int MaxTemperature { get; } = maxTemperature;\n    public int FanSpeed { get; } = fanSpeed;\n    public int MaxFanSpeed { get; } = maxFanSpeed;\n\n    public override string ToString() =>\n        $\"{nameof(Utilization)}: {Utilization},\" +\n        $\" {nameof(MaxUtilization)}: {MaxUtilization},\" +\n        $\" {nameof(CoreClock)}: {CoreClock},\" +\n        $\" {nameof(MaxCoreClock)}: {MaxCoreClock},\" +\n        $\" {nameof(MemoryClock)}: {MemoryClock},\" +\n        $\" {nameof(MaxMemoryClock)}: {MaxMemoryClock},\" +\n        $\" {nameof(Temperature)}: {Temperature},\" +\n        $\" {nameof(MaxTemperature)}: {MaxTemperature},\" +\n        $\" {nameof(FanSpeed)}: {FanSpeed},\" +\n        $\" {nameof(MaxFanSpeed)}: {MaxFanSpeed}\";\n}\n\npublic readonly struct SensorsData(SensorData cpu, SensorData gpu)\n{\n    public static readonly SensorsData Empty = new(SensorData.Empty, SensorData.Empty);\n\n    public SensorData CPU { get; } = cpu;\n    public SensorData GPU { get; } = gpu;\n\n    public override string ToString() => $\"{nameof(CPU)}: {CPU}, {nameof(GPU)}: {GPU}\";\n}\n\n[method: JsonConstructor]\npublic readonly struct DpiScale(int scale) : IDisplayName, IEquatable<DpiScale>\n{\n    public int Scale { get; } = scale;\n\n    [JsonIgnore]\n    public string DisplayName => $\"{Scale}%\";\n\n    #region Equality\n\n    public override bool Equals(object? obj) => obj is DpiScale rate && Equals(rate);\n\n    public bool Equals(DpiScale other) => Scale == other.Scale;\n\n    public override int GetHashCode() => HashCode.Combine(Scale);\n\n    public static bool operator ==(DpiScale left, DpiScale right) => left.Equals(right);\n\n    public static bool operator !=(DpiScale left, DpiScale right) => !(left == right);\n\n    #endregion\n}\n\n[method: JsonConstructor]\npublic readonly struct RefreshRate(int frequency) : IDisplayName, IEquatable<RefreshRate>\n{\n    public int Frequency { get; } = frequency;\n\n    [JsonIgnore]\n    public string DisplayName => $\"{Frequency} Hz\";\n\n    public override string ToString() => $\"{Frequency}Hz\";\n\n    #region Equality\n\n    public override bool Equals(object? obj) => obj is RefreshRate rate && Equals(rate);\n\n    public bool Equals(RefreshRate other) => Frequency == other.Frequency;\n\n    public override int GetHashCode() => HashCode.Combine(Frequency);\n\n    public static bool operator ==(RefreshRate left, RefreshRate right) => left.Equals(right);\n\n    public static bool operator !=(RefreshRate left, RefreshRate right) => !(left == right);\n\n    #endregion\n}\n\n[method: JsonConstructor]\npublic readonly struct Resolution(int width, int height) : IDisplayName, IEquatable<Resolution>, IComparable<Resolution>\n{\n    [JsonProperty]\n    public int Width { get; } = width;\n\n    [JsonProperty]\n    public int Height { get; } = height;\n\n    [JsonIgnore]\n    public string DisplayName => $\"{Width} × {Height}\";\n\n    public Resolution(Size size) : this(size.Width, size.Height) { }\n\n    public override string ToString() => $\"{Width}x{Height}\";\n\n    public int CompareTo(Resolution other)\n    {\n        var widthComparison = Width.CompareTo(other.Width);\n        return widthComparison != 0\n            ? widthComparison\n            : Height.CompareTo(other.Height);\n    }\n\n    #region Conversion\n\n    public static explicit operator Resolution(Size value) => new(value);\n\n    public static implicit operator Size(Resolution data) => new(data.Width, data.Height);\n\n    #endregion\n\n    #region Equality\n\n    public override bool Equals(object? obj) => obj is Resolution other && Equals(other);\n\n    public bool Equals(Resolution other) => Width == other.Width && Height == other.Height;\n\n    public override int GetHashCode() => HashCode.Combine(Width, Height);\n\n    public static bool operator ==(Resolution left, Resolution right) => left.Equals(right);\n\n    public static bool operator !=(Resolution left, Resolution right) => !(left == right);\n\n    #endregion\n\n}\n\npublic readonly struct SpectrumKeyboardBacklightEffect(\n    SpectrumKeyboardBacklightEffectType type,\n    SpectrumKeyboardBacklightSpeed speed,\n    SpectrumKeyboardBacklightDirection direction,\n    SpectrumKeyboardBacklightClockwiseDirection clockwiseDirection,\n    RGBColor[] colors,\n    ushort[] keys)\n{\n    public SpectrumKeyboardBacklightEffectType Type { get; } = type;\n    public SpectrumKeyboardBacklightSpeed Speed { get; } = speed;\n    public SpectrumKeyboardBacklightDirection Direction { get; } = direction;\n    public SpectrumKeyboardBacklightClockwiseDirection ClockwiseDirection { get; } = clockwiseDirection;\n    public RGBColor[] Colors { get; } = colors;\n    public ushort[] Keys { get; } = type.IsAllLightsEffect() ? [] : keys;\n}\n\npublic readonly struct StepperValue(int value, int min, int max, int step, int[] steps, int? defaultValue)\n{\n    public int Value { get; } = value;\n    public int Min { get; } = min;\n    public int Max { get; } = max;\n    public int Step { get; } = step;\n    public int[] Steps { get; } = steps;\n    public int? DefaultValue { get; } = defaultValue;\n\n    public StepperValue WithValue(int value) => new(value, Min, Max, Step, Steps, DefaultValue);\n\n    public override string ToString() =>\n        $\"{nameof(Value)}: {Value},\" +\n        $\" {nameof(Min)}: {Min},\" +\n        $\" {nameof(Max)}: {Max},\" +\n        $\" {nameof(Step)}: {Step},\" +\n        $\" {nameof(Steps)}: [{string.Join(\", \", Steps)}],\" +\n        $\" {nameof(DefaultValue)} : {DefaultValue}\";\n}\n\npublic readonly struct Time(int hour, int minute)\n{\n    public int Hour { get; } = hour;\n    public int Minute { get; } = minute;\n\n    #region Equality\n\n    public override bool Equals(object? obj) => obj is Time time && Hour == time.Hour && Minute == time.Minute;\n\n    public override int GetHashCode() => HashCode.Combine(Hour, Minute);\n\n    public static bool operator ==(Time left, Time right) => left.Equals(right);\n\n    public static bool operator !=(Time left, Time right) => !(left == right);\n\n    #endregion\n}\n\npublic readonly struct Update(Release release)\n{\n    public Version Version { get; } = Version.Parse(release.TagName);\n    public string Title { get; } = release.Name;\n    public string Description { get; } = release.Body;\n    public DateTimeOffset Date { get; } = release.PublishedAt ?? release.CreatedAt;\n    public string? Url { get; } = release.Assets\n        .Where(ra => ra.Name.EndsWith(\"setup.exe\", StringComparison.InvariantCultureIgnoreCase))\n        .Select(ra => ra.BrowserDownloadUrl)\n        .FirstOrDefault();\n\n    #region Equality\n\n    public override bool Equals(object? obj) => obj is Update other && Version.Equals(other.Version);\n\n    public override int GetHashCode() => Version.GetHashCode();\n\n    public static bool operator ==(Update left, Update right) => left.Equals(right);\n\n    public static bool operator !=(Update left, Update right) => !left.Equals(right);\n\n    #endregion\n}\n\npublic readonly struct WarrantyInfo(DateTime? start, DateTime? end, Uri? link)\n{\n    public DateTime? Start { get; } = start;\n    public DateTime? End { get; } = end;\n    public Uri? Link { get; } = link;\n}\n\npublic readonly struct WindowSize(double width, double height)\n{\n    public double Width { get; } = width;\n    public double Height { get; } = height;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/AirplaneMode.cs",
    "content": "﻿using System.Diagnostics;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class AirplaneMode\n{\n    public static void Open()\n    {\n        Process.Start(new ProcessStartInfo\n        {\n            FileName = \"cmd\",\n            Arguments = \"/c \\\"start ms-settings:network-airplanemode\\\"\",\n            UseShellExecute = true,\n            CreateNoWindow = true,\n            WindowStyle = ProcessWindowStyle.Hidden,\n        });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Autorun.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Security.Principal;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32.TaskScheduler;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class Autorun\n{\n    private const string TASK_NAME = \"LenovoLegionToolkit_Autorun_6efcc882-924c-4cbc-8fec-f45c25696f98\";\n\n    public static AutorunState State\n    {\n        get\n        {\n            var task = TaskService.Instance.GetTask(TASK_NAME);\n            if (task is null)\n                return AutorunState.Disabled;\n\n            var delayed = task.Definition.Triggers.OfType<LogonTrigger>().FirstOrDefault()?.Delay > TimeSpan.Zero;\n            return delayed ? AutorunState.EnabledDelayed : AutorunState.Enabled;\n        }\n    }\n\n    public static void Validate()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Validating autorun...\");\n\n        var currentTask = TaskService.Instance.GetTask(TASK_NAME);\n        if (currentTask is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Autorun is not enabled.\");\n            return;\n        }\n\n        var mainModule = Process.GetCurrentProcess().MainModule;\n        if (mainModule is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Main module is null.\");\n            return;\n        }\n\n        var fileVersion = mainModule.FileVersionInfo.FileVersion;\n        if (fileVersion is null)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"File version is null.\");\n            return;\n        }\n\n        if (currentTask.Definition.Data == fileVersion)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Autorun settings seems to be fine.\");\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Enabling autorun again...\");\n\n        var delayed = currentTask.Definition.Triggers.OfType<LogonTrigger>().FirstOrDefault()?.Delay > TimeSpan.Zero;\n\n        Enable(delayed);\n    }\n\n    public static void Set(AutorunState state)\n    {\n        if (state == AutorunState.Disabled)\n            Disable();\n        else\n            Enable(state == AutorunState.EnabledDelayed);\n    }\n\n    private static void Enable(bool delayed)\n    {\n        Disable();\n\n        var mainModule = Process.GetCurrentProcess().MainModule ?? throw new InvalidOperationException(\"Main Module cannot be null\");\n        var filename = mainModule.FileName ?? throw new InvalidOperationException(\"Current process file name cannot be null\");\n        var fileVersion = mainModule.FileVersionInfo.FileVersion ?? throw new InvalidOperationException(\"Current process file version cannot be null\");\n        var currentUser = WindowsIdentity.GetCurrent().Name;\n\n        var ts = TaskService.Instance;\n        var td = ts.NewTask();\n        td.Data = fileVersion;\n        td.Principal.UserId = currentUser;\n        td.Principal.RunLevel = TaskRunLevel.Highest;\n        td.Triggers.Add(new LogonTrigger { UserId = currentUser, Delay = new TimeSpan(0, 0, delayed ? 30 : 0) });\n        td.Actions.Add($\"\\\"{filename}\\\"\", \"--minimized\");\n        td.Settings.DisallowStartIfOnBatteries = false;\n        td.Settings.StopIfGoingOnBatteries = false;\n        td.Settings.ExecutionTimeLimit = TimeSpan.Zero;\n        ts.RootFolder.RegisterTaskDefinition(TASK_NAME, td);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Autorun enabled\");\n    }\n\n    private static void Disable()\n    {\n        try\n        {\n            TaskService.Instance.RootFolder.DeleteTask(TASK_NAME);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Autorun disabled\");\n        }\n        catch\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Autorun was not enabled\");\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Battery.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics.Eventing.Reader;\nusing System.Linq;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.System.Power;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class Battery\n{\n    private static readonly ApplicationSettings Settings = IoCContainer.Resolve<ApplicationSettings>();\n    private static int MinDischargeRate { get; set; } = int.MaxValue;\n    private static int MaxDischargeRate { get; set; }\n\n    public static void SetMinMaxDischargeRate(BATTERY_STATUS? status = null)\n    {\n        if (!status.HasValue)\n        {\n            var batteryTag = GetBatteryTag();\n            status = GetBatteryStatus(batteryTag);\n        }\n\n        if (status.Value.Rate == 0\n            || (status.Value.Rate > 0 && (MinDischargeRate < 0 || MaxDischargeRate < 0))\n            || (status.Value.Rate < 0 && (MinDischargeRate > 0 || MaxDischargeRate > 0)))\n        {\n            MinDischargeRate = int.MaxValue;\n            MaxDischargeRate = 0;\n        }\n\n        if (status.Value.Rate != 0)\n        {\n            if (Math.Abs(status.Value.Rate) < Math.Abs(MinDischargeRate))\n                MinDischargeRate = status.Value.Rate;\n            if (Math.Abs(status.Value.Rate) > Math.Abs(MaxDischargeRate))\n                MaxDischargeRate = status.Value.Rate;\n        }\n    }\n\n    public static BatteryInformation GetBatteryInformation()\n    {\n        var powerStatus = GetSystemPowerStatus();\n\n        var batteryTag = GetBatteryTag();\n        var information = GetBatteryInformation(batteryTag);\n        var status = GetBatteryStatus(batteryTag);\n\n        double? temperatureC = null;\n        DateTime? manufactureDate = null;\n        DateTime? firstUseDate = null;\n\n        SetMinMaxDischargeRate(status);\n\n        try\n        {\n            var lenovoBatteryInformation = FindLenovoBatteryInformation();\n            if (lenovoBatteryInformation.HasValue)\n            {\n                temperatureC = DecodeTemperatureC(lenovoBatteryInformation.Value.Temperature);\n                manufactureDate = DecodeDateTime(lenovoBatteryInformation.Value.ManufactureDate);\n                firstUseDate = DecodeDateTime(lenovoBatteryInformation.Value.FirstUseDate);\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to get temperature of battery.\", ex);\n        }\n\n        return new(powerStatus.ACLineStatus == 1,\n            powerStatus.BatteryLifePercent,\n            (int)powerStatus.BatteryLifeTime,\n            (int)powerStatus.BatteryFullLifeTime,\n            status.Rate,\n            (status.Rate == 0) ? 0 : MinDischargeRate,\n            MaxDischargeRate,\n            (int)status.Capacity,\n            (int)information.DesignedCapacity,\n            (int)information.FullChargedCapacity,\n            (int)information.CycleCount,\n            powerStatus.ACLineStatus == 0 && information.DefaultAlert2 >= status.Capacity,\n            temperatureC,\n            manufactureDate,\n            firstUseDate);\n    }\n\n    public static double? GetBatteryTemperatureC()\n    {\n        try\n        {\n            var lenovoBatteryInformation = FindLenovoBatteryInformation();\n            return lenovoBatteryInformation.HasValue ? DecodeTemperatureC(lenovoBatteryInformation.Value.Temperature) : null;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to get temperature of battery.\", ex);\n            return null;\n        }\n    }\n\n    public static DateTime? GetOnBatterySince()\n    {\n        try\n        {\n            var resetOnReboot = Settings.Store.ResetBatteryOnSinceTimerOnReboot;\n\n            var lastRebootTime = DateTime.Now - TimeSpan.FromMilliseconds(Environment.TickCount);\n\n            var logs = new List<(DateTime Date, bool IsACOnline)>();\n\n            var query = new EventLogQuery(\"System\", PathType.LogName, \"*[System[EventID=105]]\");\n            using var logReader = new EventLogReader(query);\n            using var propertySelector = new EventLogPropertySelector([\"Event/EventData/Data[@Name='AcOnline']\"]);\n\n            while (logReader.ReadEvent() is EventLogRecord record)\n            {\n                var date = record.TimeCreated;\n                var isAcOnline = record.GetPropertyValues(propertySelector)[0] as bool?;\n\n                if (date is null || isAcOnline is null)\n                    continue;\n\n                if (resetOnReboot && date < lastRebootTime)\n                    continue;\n\n                logs.Add((date.Value, isAcOnline.Value));\n            }\n\n            if (logs.Count < 1)\n                return null;\n\n            logs.Reverse();\n\n            var (dateTime, _) = logs\n                .TakeWhile(log => log.IsACOnline != true)\n                .LastOrDefault();\n\n            return dateTime;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to get event.\", ex);\n        }\n\n        return null;\n    }\n\n    private static SYSTEM_POWER_STATUS GetSystemPowerStatus()\n    {\n        var result = PInvoke.GetSystemPowerStatus(out var sps);\n\n        if (!result)\n            PInvokeExtensions.ThrowIfWin32Error(\"GetSystemPowerStatus\");\n\n        return sps;\n    }\n\n    private static uint GetBatteryTag()\n    {\n        var result = PInvokeExtensions.DeviceIoControl(Devices.GetBattery(),\n            PInvoke.IOCTL_BATTERY_QUERY_TAG,\n            0u,\n            out uint tag);\n\n        if (!result)\n            PInvokeExtensions.ThrowIfWin32Error(\"DeviceIoControl, IOCTL_BATTERY_QUERY_TAG\");\n\n        return tag;\n    }\n\n    private static BATTERY_INFORMATION GetBatteryInformation(uint batteryTag)\n    {\n        var queryInformation = new BATTERY_QUERY_INFORMATION\n        {\n            BatteryTag = batteryTag,\n            InformationLevel = BATTERY_QUERY_INFORMATION_LEVEL.BatteryInformation,\n        };\n\n        var result = PInvokeExtensions.DeviceIoControl(Devices.GetBattery(),\n            PInvoke.IOCTL_BATTERY_QUERY_INFORMATION,\n            queryInformation,\n            out BATTERY_INFORMATION bi);\n\n        if (!result)\n            PInvokeExtensions.ThrowIfWin32Error(\"DeviceIoControl, IOCTL_BATTERY_QUERY_INFORMATION\");\n        return bi;\n    }\n\n    private static BATTERY_STATUS GetBatteryStatus(uint batteryTag)\n    {\n        var waitStatus = new BATTERY_WAIT_STATUS\n        {\n            BatteryTag = batteryTag,\n        };\n        var result = PInvokeExtensions.DeviceIoControl(Devices.GetBattery(),\n            PInvoke.IOCTL_BATTERY_QUERY_STATUS,\n            waitStatus,\n            out BATTERY_STATUS s);\n\n        if (!result)\n            PInvokeExtensions.ThrowIfWin32Error(\"DeviceIoControl, IOCTL_BATTERY_QUERY_STATUS\");\n\n        return s;\n    }\n\n    private static LENOVO_BATTERY_INFORMATION? FindLenovoBatteryInformation()\n    {\n        for (uint index = 0; index < 3; index++)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Checking battery data at index {index}...\");\n\n            var info = GetLenovoBatteryInformation(index);\n            if (info.Temperature is ushort.MinValue or ushort.MaxValue)\n                continue;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Battery data found at index {index}.\");\n\n            return info;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Battery data not found.\");\n\n        return null;\n    }\n\n    private static LENOVO_BATTERY_INFORMATION GetLenovoBatteryInformation(uint index)\n    {\n        var result = PInvokeExtensions.DeviceIoControl(Drivers.GetEnergy(),\n            Drivers.IOCTL_ENERGY_BATTERY_INFORMATION,\n            index,\n            out LENOVO_BATTERY_INFORMATION bi);\n        if (!result)\n            PInvokeExtensions.ThrowIfWin32Error(\"DeviceIoControl, 0x83102138\");\n\n        return bi;\n    }\n\n    private static DateTime? DecodeDateTime(ushort s)\n    {\n        try\n        {\n            if (s < 1)\n                return null;\n\n            var date = new DateTime((s >> 9) + 1980, (s >> 5) & 15, (s & 31), 0, 0, 0, DateTimeKind.Unspecified);\n            if (date.Year is < 2018 or > 2030)\n                return null;\n            return date;\n        }\n        catch\n        {\n            return null;\n        }\n    }\n\n    private static double? DecodeTemperatureC(ushort s)\n    {\n        var value = (s - 2731.6) / 10.0;\n        if (value < 0)\n            return null;\n        return value;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/BootLogo.cs",
    "content": "﻿using System;\nusing System.Drawing;\nusing System.Drawing.Imaging;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic class CantSetUEFIPrivilegeException : Exception;\n\npublic class CantMountUEFIPartitionException : Exception;\n\npublic class NotEnoughSpaceOnUEFIPartitionException : Exception;\n\npublic class InvalidBootLogoImageFormatException : Exception;\n\npublic class InvalidBootLogoImageSizeException : Exception;\n\npublic static class BootLogo\n{\n    private const string LBLDESP = \"LBLDESP\";\n    private const string LBLDESP_GUID = \"{871455D0-5576-4FB8-9865-AF0824463B9E}\";\n    private const string LBLDVC = \"LBLDVC\";\n    private const string LBLDVC_GUID = \"{871455D1-5576-4FB8-9865-AF0824463C9F}\";\n\n    private const uint SCOPE_ATTR = PInvokeExtensions.VARIABLE_ATTRIBUTE_NON_VOLATILE |\n                                    PInvokeExtensions.VARIABLE_ATTRIBUTE_BOOTSERVICE_ACCESS |\n                                    PInvokeExtensions.VARIABLE_ATTRIBUTE_RUNTIME_ACCESS;\n\n    public static async Task<bool> IsSupportedAsync()\n    {\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n            if (!mi.Properties.SupportBootLogoChange)\n                return false;\n\n            _ = GetInfo();\n            _ = GetChecksum();\n            return true;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    public static (bool, Resolution, ImageFormat[], string[]) GetStatus()\n    {\n        var info = GetInfo();\n        return (info.Enabled == 1, new(info.SupportedWidth, info.SupportedHeight), info.SupportedFormat.ImageFormats().ToArray(), info.SupportedFormat.ExtensionFilters().ToArray());\n    }\n\n    public static async Task EnableAsync(string sourcePath)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Enabling logo... [sourcePath={sourcePath}]\");\n\n        var info = GetInfo();\n\n        ThrowIfImageInvalid(info, sourcePath);\n\n        await DeleteMyLogoAsync().ConfigureAwait(false);\n        var crc = await CopyMyLogoAsync(info, sourcePath).ConfigureAwait(false);\n\n        SetChecksum(crc);\n        SetInfo(info with { Enabled = 1 });\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Enabled logo. [sourcePath={sourcePath}]\");\n    }\n\n    public static async Task DisableAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Disabling logo...\");\n\n        await DeleteMyLogoAsync().ConfigureAwait(false);\n\n        SetChecksum(0);\n        SetInfo(GetInfo() with { Enabled = 0 });\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Disabled logo.\");\n    }\n\n    private static unsafe BootLogoInfo GetInfo()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting info...\");\n\n        var ptr = Marshal.AllocHGlobal(Marshal.SizeOf<BootLogoInfo>());\n\n        try\n        {\n            if (!TokenManipulator.AddPrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot set UEFI privileges.\");\n\n                throw new CantSetUEFIPrivilegeException();\n            }\n\n            var ptrSize = (uint)Marshal.SizeOf<BootLogoInfo>();\n\n            var size = PInvoke.GetFirmwareEnvironmentVariableEx(LBLDESP, LBLDESP_GUID, ptr.ToPointer(), ptrSize, null);\n            if (size != ptrSize)\n                PInvokeExtensions.ThrowIfWin32Error(\"GetFirmwareEnvironmentVariableEx\");\n\n            var str = Marshal.PtrToStructure<BootLogoInfo>(ptr);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Retrieved info. [enabled={str.Enabled}, supportedWidth={str.SupportedWidth}, supportedHeight={str.SupportedHeight}, supportedFormat={(int)str.SupportedFormat}]\");\n\n            return str;\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n\n            TokenManipulator.RemovePrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE);\n        }\n    }\n\n    private static unsafe void SetInfo(BootLogoInfo info)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting info... [enabled={info.Enabled}, supportedWidth={info.SupportedWidth}, supportedHeight={info.SupportedHeight}, supportedFormat={(int)info.SupportedFormat}]\");\n\n        var ptr = Marshal.AllocHGlobal(Marshal.SizeOf<BootLogoInfo>());\n\n        try\n        {\n            if (!TokenManipulator.AddPrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot set UEFI privileges.\");\n\n                throw new CantSetUEFIPrivilegeException();\n            }\n\n            Marshal.StructureToPtr(info, ptr, false);\n            var ptrSize = (uint)Marshal.SizeOf<BootLogoInfo>();\n\n            if (!PInvoke.SetFirmwareEnvironmentVariableEx(LBLDESP, LBLDESP_GUID, ptr.ToPointer(), ptrSize, SCOPE_ATTR))\n                PInvokeExtensions.ThrowIfWin32Error(\"SetFirmwareEnvironmentVariableEx\");\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Info set. [enabled={info.Enabled}, supportedWidth={info.SupportedWidth}, supportedHeight={info.SupportedHeight}, supportedFormat={(int)info.SupportedFormat}]\");\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n\n            TokenManipulator.RemovePrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE);\n        }\n    }\n\n    private static unsafe uint GetChecksum()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Getting checksum...\");\n\n        var ptr = Marshal.AllocHGlobal(Marshal.SizeOf<BootLogoChecksum>());\n\n        try\n        {\n            if (!TokenManipulator.AddPrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot set UEFI privileges.\");\n\n                throw new CantSetUEFIPrivilegeException();\n            }\n\n            var ptrSize = (uint)Marshal.SizeOf<BootLogoChecksum>();\n\n            var size = PInvoke.GetFirmwareEnvironmentVariableEx(LBLDVC, LBLDVC_GUID, ptr.ToPointer(), ptrSize, null);\n            if (size != ptrSize)\n                PInvokeExtensions.ThrowIfWin32Error(\"GetFirmwareEnvironmentVariableEx\");\n\n            var checksum = Marshal.PtrToStructure<BootLogoChecksum>(ptr).Crc;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Retrieved checksum. [checksum={checksum:X2}]\");\n\n            return checksum;\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n\n            TokenManipulator.RemovePrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE);\n        }\n    }\n\n    private static unsafe void SetChecksum(uint checksum)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Setting checksum... [checksum={checksum:X2}]\");\n\n        var str = new BootLogoChecksum { Crc = checksum };\n        var ptr = Marshal.AllocHGlobal(Marshal.SizeOf<BootLogoChecksum>());\n\n        try\n        {\n            if (!TokenManipulator.AddPrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot set UEFI privileges.\");\n\n                throw new CantSetUEFIPrivilegeException();\n            }\n\n            Marshal.StructureToPtr(str, ptr, false);\n            var ptrSize = (uint)Marshal.SizeOf<BootLogoChecksum>();\n\n            if (!PInvoke.SetFirmwareEnvironmentVariableEx(LBLDVC, LBLDVC_GUID, ptr.ToPointer(), ptrSize, SCOPE_ATTR))\n                PInvokeExtensions.ThrowIfWin32Error(\"SetFirmwareEnvironmentVariableEx\");\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Checksum set. [checksum={checksum:X2}]\");\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n\n            TokenManipulator.RemovePrivileges(TokenManipulator.SE_SYSTEM_ENVIRONMENT_PRIVILEGE);\n        }\n    }\n\n    private static async Task<uint> CopyMyLogoAsync(BootLogoInfo info, string sourcePath)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Copying logo... [sourcePath={sourcePath}, enabled={info.Enabled}, supportedWidth={info.SupportedWidth}, supportedHeight={info.SupportedHeight}, supportedFormat={(int)info.SupportedFormat}]\");\n\n        char? drive = null;\n\n        try\n        {\n            drive = await MountEfiPartitionAsync().ConfigureAwait(false);\n            if (!drive.HasValue)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot mount EFI partition.\");\n\n                throw new CantMountUEFIPartitionException();\n            }\n\n            if (new DriveInfo($\"{drive}:\").AvailableFreeSpace < new FileInfo(sourcePath).Length)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Not enough free space on EFI partition.\");\n\n                throw new NotEnoughSpaceOnUEFIPartitionException();\n            }\n\n            var destinationDirectory = Path.Combine($\"{drive}:\", \"EFI\", \"Lenovo\", \"Logo\");\n            var filename = $\"mylogo_{info.SupportedWidth}x{info.SupportedHeight}{Path.GetExtension(sourcePath)}\";\n            var destinationPath = Path.Combine(destinationDirectory, filename);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Destination path: {destinationPath}\");\n\n            Directory.CreateDirectory(destinationDirectory);\n            File.Copy(sourcePath, destinationPath, true);\n\n            var checksum = Crc32Adler.Calculate(destinationPath);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Logo copied. [checksum={checksum:X2}]\");\n\n            return checksum;\n        }\n        finally\n        {\n            if (drive.HasValue)\n                await UnMountEfiPartitionAsync(drive.Value).ConfigureAwait(false);\n        }\n    }\n\n    private static async Task DeleteMyLogoAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Deleting logos...\");\n\n        char? drive = null;\n\n        try\n        {\n            drive = await MountEfiPartitionAsync().ConfigureAwait(false);\n            if (!drive.HasValue)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Cannot mount EFI partition\");\n\n                throw new CantMountUEFIPartitionException();\n            }\n\n            var directoryPath = $@\"{drive}:\\EFI\\Lenovo\\Logo\";\n            if (!Directory.Exists(directoryPath))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"No logos to delete.\");\n\n                return;\n            }\n\n            var files = Directory.EnumerateFiles(directoryPath, \"mylogo*\").ToArray();\n            files.ForEach(File.Delete);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Logos deleted. [count={files.Length}]\");\n        }\n        finally\n        {\n            if (drive.HasValue)\n                await UnMountEfiPartitionAsync(drive.Value).ConfigureAwait(false);\n        }\n    }\n\n    private static void ThrowIfImageInvalid(BootLogoInfo info, string sourcePath)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Validating image... [sourcePath={sourcePath}, sourcePath={sourcePath}, enabled={info.Enabled}, supportedWidth={info.SupportedWidth}, supportedHeight={info.SupportedHeight}, supportedFormat={(int)info.SupportedFormat}]\");\n\n        using var image = Image.FromFile(sourcePath);\n\n        if (info.SupportedWidth != image.Width || info.SupportedHeight != image.Height)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Invalid image size.\");\n\n            throw new InvalidBootLogoImageSizeException();\n        }\n\n        if (!info.SupportedFormat.ImageFormats().Contains(image.RawFormat))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Invalid image format.\");\n\n            throw new InvalidBootLogoImageFormatException();\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Image valid. [sourcePath={sourcePath}, sourcePath={sourcePath}, enabled={info.Enabled}, supportedWidth={info.SupportedWidth}, supportedHeight={info.SupportedHeight}, supportedFormat={(int)info.SupportedFormat}]\");\n    }\n\n    private static char GetUnusedDriveLetter()\n    {\n        // ReSharper disable once StringLiteralTypo\n        var letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\".ToCharArray();\n        var usedLetters = DriveInfo.GetDrives().Select(di => di.Name.First()).ToArray();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Used drive letters: {string.Join(\",\", usedLetters)}\");\n\n        var letter = letters.Last(c => !usedLetters.Contains(c));\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Using '{letter}' letter.\");\n\n        return letter;\n    }\n\n    private static async Task<char?> MountEfiPartitionAsync()\n    {\n        var drive = GetUnusedDriveLetter();\n        var (result, _) = await CMD.RunAsync(\"mountvol\", $\"{drive}: /s\").ConfigureAwait(false);\n        if (result != 0)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to mount EFI partition at {drive}:\");\n\n            return null;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"EFI partition mounted at {drive}:\");\n\n        return drive;\n    }\n\n    private static async Task UnMountEfiPartitionAsync(char letter)\n    {\n        var (result, _) = await CMD.RunAsync(\"mountvol\", $\"{letter}: /d\").ConfigureAwait(false);\n\n        if (result != 0)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to un-mount EFI partition from {letter}:\");\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"EFI partition un-mounted from {letter}:.\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/CMD.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Diagnostics;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class CMD\n{\n    public static async Task<(int, string)> RunAsync(string file, string arguments, bool createNoWindow = true, bool waitForExit = true, Dictionary<string, string?>? environment = null, CancellationToken token = default)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Running... [file={file}, argument={arguments}, createNoWindow={createNoWindow}, waitForExit={waitForExit}, environment=[{(environment is null ? string.Empty : string.Join(\",\", environment))}]\");\n\n        var cmd = new Process();\n        cmd.StartInfo.UseShellExecute = false;\n        cmd.StartInfo.CreateNoWindow = createNoWindow;\n        cmd.StartInfo.RedirectStandardOutput = createNoWindow;\n        cmd.StartInfo.RedirectStandardError = createNoWindow;\n        cmd.StartInfo.WindowStyle = createNoWindow ? ProcessWindowStyle.Hidden : ProcessWindowStyle.Normal;\n        cmd.StartInfo.FileName = file;\n        if (!string.IsNullOrWhiteSpace(arguments))\n            cmd.StartInfo.Arguments = arguments;\n\n        if (environment is not null)\n        {\n            foreach (var (key, value) in environment)\n                cmd.StartInfo.Environment[key] = value;\n        }\n\n        cmd.Start();\n\n        if (!waitForExit)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Ran [file={file}, argument={arguments}, createNoWindow={createNoWindow}, waitForExit={waitForExit}, environment=[{(environment is null ? string.Empty : string.Join(\",\", environment))}]\");\n\n            return (-1, string.Empty);\n        }\n\n        await cmd.WaitForExitAsync(token).ConfigureAwait(false);\n\n        var exitCode = cmd.ExitCode;\n        var output = createNoWindow ? await cmd.StandardOutput.ReadToEndAsync(token).ConfigureAwait(false) : string.Empty;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Ran [file={file}, argument={arguments}, createNoWindow={createNoWindow}, waitForExit={waitForExit}, exitCode={exitCode} output={output}]\");\n\n        return (exitCode, output);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Devices.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Runtime.InteropServices;\nusing System.Text;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32.SafeHandles;\nusing Windows.Win32;\nusing Windows.Win32.Devices.DeviceAndDriverInstallation;\nusing Windows.Win32.Devices.HumanInterfaceDevice;\nusing Windows.Win32.Devices.Properties;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.Storage.FileSystem;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class Devices\n{\n    private static readonly object Lock = new();\n\n    private static SafeFileHandle? _battery;\n    private static SafeFileHandle? _rgbKeyboard;\n    private static SafeFileHandle? _spectrumRgbKeyboard;\n\n    #region All devices\n\n    public static List<Device> GetAll()\n    {\n        using var deviceInfoSet = PInvoke.SetupDiGetClassDevs(null as Guid?,\n            null,\n            HWND.Null,\n            SETUP_DI_GET_CLASS_DEVS_FLAGS.DIGCF_ALLCLASSES);\n\n        if (deviceInfoSet.IsInvalid)\n            return [];\n\n        var devices = new List<Device>();\n\n        var index = 0u;\n        while (true)\n        {\n            var currentIndex = index;\n            index++;\n\n            var deviceInfoData = new SP_DEVINFO_DATA { cbSize = (uint)Marshal.SizeOf<SP_DEVINFO_DATA>() };\n            if (!PInvoke.SetupDiEnumDeviceInfo(deviceInfoSet, currentIndex, ref deviceInfoData))\n            {\n                if (Marshal.GetLastWin32Error() == PInvokeExtensions.ERROR_NO_MORE_ITEMS)\n                    break;\n\n                continue;\n            }\n\n            var (removable, isDisconnected) = GetFlags(deviceInfoData);\n\n            if (isDisconnected)\n            {\n                var capabilities = (CM_DEVCAP)GetUInt32Property(deviceInfoSet, deviceInfoData, PInvoke.DEVPKEY_Device_Capabilities);\n                removable = capabilities.HasFlag(CM_DEVCAP.CM_DEVCAP_REMOVABLE);\n            }\n\n            var name = GetStringProperty(deviceInfoSet, deviceInfoData, PInvoke.DEVPKEY_NAME);\n            var description = GetStringProperty(deviceInfoSet, deviceInfoData, PInvoke.DEVPKEY_Device_DeviceDesc);\n            var busReportedDeviceDescription = GetStringProperty(deviceInfoSet, deviceInfoData, PInvoke.DEVPKEY_Device_BusReportedDeviceDesc);\n            var deviceInstanceId = GetStringProperty(deviceInfoSet, deviceInfoData, PInvoke.DEVPKEY_Device_InstanceId);\n            var classGuid = GetGuidProperty(deviceInfoSet, deviceInfoData, PInvoke.DEVPKEY_Device_ClassGuid);\n            var className = GetClassName(classGuid);\n\n            if (deviceInstanceId.Contains(\"ROOT\"))\n                continue;\n\n            devices.Add(new(name, description, busReportedDeviceDescription, deviceInstanceId, classGuid, className, removable, isDisconnected));\n        }\n\n        return devices;\n    }\n\n    private static unsafe string GetClassName(Guid guid)\n    {\n        var requiredSize = 0u;\n        PInvoke.SetupDiClassNameFromGuid(guid, Array.Empty<char>(), &requiredSize);\n\n        var chars = new char[requiredSize];\n        PInvoke.SetupDiClassNameFromGuid(guid, chars, null);\n        return chars.ToString() ?? string.Empty;\n    }\n\n    private static unsafe string GetStringProperty(SetupDiDestroyDeviceInfoListSafeHandle deviceInfoSet, SP_DEVINFO_DATA deviceInfoData, DEVPROPKEY propertyKey)\n    {\n        var requiredSize = 0u;\n        PInvoke.SetupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, out var propertyType, null, &requiredSize, 0);\n\n        if (propertyType == DEVPROPTYPE.DEVPROP_TYPE_EMPTY)\n            return string.Empty;\n\n        if (propertyType != DEVPROPTYPE.DEVPROP_TYPE_STRING)\n            throw new InvalidOperationException(\"Device property is not a string\");\n\n        var buffer = new byte[requiredSize];\n        var propertyBuffer = new Span<byte>(buffer);\n        PInvoke.SetupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, out _, propertyBuffer, null, 0);\n\n        return Encoding.Unicode.GetString(buffer).TrimEnd('\\0');\n    }\n\n    private static unsafe uint GetUInt32Property(SetupDiDestroyDeviceInfoListSafeHandle deviceInfoSet, SP_DEVINFO_DATA deviceInfoData, DEVPROPKEY propertyKey)\n    {\n        var requiredSize = 0u;\n        PInvoke.SetupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, out var propertyType, null, &requiredSize, 0);\n\n        if (propertyType == DEVPROPTYPE.DEVPROP_TYPE_EMPTY)\n            return 0;\n\n        if (propertyType != DEVPROPTYPE.DEVPROP_TYPE_UINT32)\n            throw new InvalidOperationException(\"Device property is not a string\");\n\n        var buffer = new byte[requiredSize];\n        var propertyBuffer = new Span<byte>(buffer);\n        PInvoke.SetupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, out _, propertyBuffer, null, 0);\n\n        return BitConverter.ToUInt32(buffer);\n    }\n\n    private static unsafe Guid GetGuidProperty(SetupDiDestroyDeviceInfoListSafeHandle deviceInfoSet, SP_DEVINFO_DATA deviceInfoData, DEVPROPKEY propertyKey)\n    {\n        var requiredSize = 0u;\n        PInvoke.SetupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, out var propertyType, null, &requiredSize, 0);\n\n        if (propertyType == DEVPROPTYPE.DEVPROP_TYPE_EMPTY)\n            return Guid.Empty;\n\n        if (propertyType != DEVPROPTYPE.DEVPROP_TYPE_GUID)\n            throw new InvalidOperationException(\"Device property is not a GUID\");\n\n        var buffer = new byte[requiredSize];\n        var propertyBuffer = new Span<byte>(buffer);\n        PInvoke.SetupDiGetDeviceProperty(deviceInfoSet, deviceInfoData, propertyKey, out _, propertyBuffer, null, 0);\n\n        return new Guid(buffer);\n    }\n\n    private static (bool noShow, bool disconnected) GetFlags(SP_DEVINFO_DATA deviceInfoData)\n    {\n        var result = PInvoke.CM_Get_DevNode_Status(out var flags, out _, deviceInfoData.DevInst, 0);\n        return (flags.HasFlag(CM_DEVNODE_STATUS_FLAGS.DN_REMOVABLE), result == CONFIGRET.CR_NO_SUCH_DEVINST);\n    }\n\n    #endregion\n\n    #region Battery\n\n    public static unsafe SafeFileHandle GetBattery(bool forceRefresh = false)\n    {\n        if (_battery is not null && !forceRefresh)\n            return _battery;\n\n        lock (Lock)\n        {\n            if (_battery is not null && !forceRefresh)\n                return _battery;\n\n            var devClassBatteryGuid = PInvoke.GUID_DEVCLASS_BATTERY;\n            using var deviceHandle = PInvoke.SetupDiGetClassDevs(devClassBatteryGuid,\n                null,\n                HWND.Null,\n                SETUP_DI_GET_CLASS_DEVS_FLAGS.DIGCF_PRESENT | SETUP_DI_GET_CLASS_DEVS_FLAGS.DIGCF_DEVICEINTERFACE);\n\n            // ReSharper disable once StringLiteralTypo\n            if (deviceHandle.IsInvalid)\n                PInvokeExtensions.ThrowIfWin32Error(\"SetupDiGetClassDevs\");\n\n            var deviceInterfaceData = new SP_DEVICE_INTERFACE_DATA { cbSize = (uint)Marshal.SizeOf<SP_DEVICE_INTERFACE_DATA>() };\n\n            var result1 = PInvoke.SetupDiEnumDeviceInterfaces(deviceHandle, null, devClassBatteryGuid, 0, ref deviceInterfaceData);\n            if (!result1)\n                PInvokeExtensions.ThrowIfWin32Error(\"SetupDiEnumDeviceInterfaces\");\n\n            var requiredSize = 0u;\n            _ = PInvoke.SetupDiGetDeviceInterfaceDetail(deviceHandle, deviceInterfaceData, null, 0, &requiredSize, null);\n\n            string devicePath;\n            var output = IntPtr.Zero;\n            try\n            {\n                output = Marshal.AllocHGlobal((int)requiredSize);\n                var deviceDetailData = (SP_DEVICE_INTERFACE_DETAIL_DATA_W*)output.ToPointer();\n                deviceDetailData->cbSize = (uint)Marshal.SizeOf<SP_DEVICE_INTERFACE_DETAIL_DATA_W>();\n\n                var result3 = PInvoke.SetupDiGetDeviceInterfaceDetail(deviceHandle, deviceInterfaceData, deviceDetailData, requiredSize, null, null);\n                if (!result3)\n                    PInvokeExtensions.ThrowIfWin32Error(\"SetupDiEnumDeviceInterfaces\");\n\n                fixed (char* e0Ptr = &deviceDetailData->DevicePath.e0)\n                    devicePath = new string(e0Ptr);\n            }\n            finally\n            {\n                Marshal.FreeHGlobal(output);\n            }\n\n            var fileHandle = PInvoke.CreateFile(devicePath,\n                (uint)FILE_ACCESS_RIGHTS.FILE_READ_DATA | (uint)FILE_ACCESS_RIGHTS.FILE_WRITE_DATA,\n                FILE_SHARE_MODE.FILE_SHARE_READ | FILE_SHARE_MODE.FILE_SHARE_WRITE,\n                null,\n                FILE_CREATION_DISPOSITION.OPEN_EXISTING,\n                FILE_FLAGS_AND_ATTRIBUTES.FILE_ATTRIBUTE_NORMAL,\n                null);\n\n            if (fileHandle.IsInvalid)\n                PInvokeExtensions.ThrowIfWin32Error(\"CreateFile\");\n\n            _battery = fileHandle;\n        }\n\n        return _battery;\n    }\n\n    #endregion\n\n    #region Keyboard\n\n    public static SafeFileHandle? GetRGBKeyboard(bool forceRefresh = false)\n    {\n        if (_rgbKeyboard is not null && !forceRefresh)\n            return _rgbKeyboard;\n\n        lock (Lock)\n        {\n            if (_rgbKeyboard is not null && !forceRefresh)\n                return _rgbKeyboard;\n\n            const ushort vendorId = 0x048D;\n            const ushort productIdMasked = 0xC900;\n            const ushort productIdMask = 0xFF00;\n            const ushort descriptorLength = 0x21;\n\n            _rgbKeyboard = FindHidDevice(vendorId, productIdMask, productIdMasked, descriptorLength);\n        }\n\n        return _rgbKeyboard;\n    }\n\n    public static SafeFileHandle? GetSpectrumRGBKeyboard(bool forceRefresh = false)\n    {\n        if (_spectrumRgbKeyboard is not null && !forceRefresh)\n            return _spectrumRgbKeyboard;\n\n        lock (Lock)\n        {\n            if (_spectrumRgbKeyboard is not null && !forceRefresh)\n                return _spectrumRgbKeyboard;\n\n            const ushort vendorId = 0x048D;\n            const ushort productIdMasked = 0xC900;\n            const ushort productIdMask = 0xFF00;\n            const ushort descriptorLength = 0x03C0;\n\n            _spectrumRgbKeyboard = FindHidDevice(vendorId, productIdMask, productIdMasked, descriptorLength);\n        }\n\n        return _spectrumRgbKeyboard;\n    }\n\n    private static unsafe SafeFileHandle? FindHidDevice(ushort vendorId, ushort productIdMask, ushort productIdMasked, ushort descriptorLength)\n    {\n        PInvoke.HidD_GetHidGuid(out var devClassHidGuid);\n\n        using var deviceHandle = PInvoke.SetupDiGetClassDevs(devClassHidGuid,\n            null,\n            HWND.Null,\n            SETUP_DI_GET_CLASS_DEVS_FLAGS.DIGCF_PRESENT | SETUP_DI_GET_CLASS_DEVS_FLAGS.DIGCF_DEVICEINTERFACE);\n\n        uint index = 0;\n        while (true)\n        {\n            var currentIndex = index;\n            index++;\n\n            var deviceInfoData = new SP_DEVINFO_DATA { cbSize = (uint)Marshal.SizeOf<SP_DEVINFO_DATA>() };\n            var result1 = PInvoke.SetupDiEnumDeviceInfo(deviceHandle, currentIndex, ref deviceInfoData);\n            if (!result1)\n            {\n                var errorCode = Marshal.GetLastWin32Error();\n                if (errorCode == PInvokeExtensions.ERROR_NO_MORE_ITEMS)\n                    break;\n\n                PInvokeExtensions.ThrowIfWin32Error(errorCode, \"SetupDiEnumDeviceInfo\");\n            }\n\n            var deviceInterfaceData = new SP_DEVICE_INTERFACE_DATA { cbSize = (uint)Marshal.SizeOf<SP_DEVICE_INTERFACE_DATA>() };\n\n            var result2 = PInvoke.SetupDiEnumDeviceInterfaces(deviceHandle, null, devClassHidGuid, currentIndex,\n                ref deviceInterfaceData);\n            if (!result2)\n                PInvokeExtensions.ThrowIfWin32Error(\"SetupDiEnumDeviceInterfaces\");\n\n            var requiredSize = 0u;\n            _ = PInvoke.SetupDiGetDeviceInterfaceDetail(deviceHandle, deviceInterfaceData, null, 0, &requiredSize, null);\n\n            string devicePath;\n            var output = IntPtr.Zero;\n            try\n            {\n                output = Marshal.AllocHGlobal((int)requiredSize);\n                var deviceDetailData = (SP_DEVICE_INTERFACE_DETAIL_DATA_W*)output.ToPointer();\n                deviceDetailData->cbSize = (uint)Marshal.SizeOf<SP_DEVICE_INTERFACE_DETAIL_DATA_W>();\n\n                var result3 = PInvoke.SetupDiGetDeviceInterfaceDetail(deviceHandle, deviceInterfaceData, deviceDetailData, requiredSize, null, null);\n                if (!result3)\n                    PInvokeExtensions.ThrowIfWin32Error(\"SetupDiEnumDeviceInterfaces\");\n\n                fixed (char* e0Ptr = &deviceDetailData->DevicePath.e0)\n                    devicePath = new string(e0Ptr);\n            }\n            finally\n            {\n                Marshal.FreeHGlobal(output);\n            }\n\n            var fileHandle = PInvoke.CreateFile(devicePath,\n                (uint)FILE_ACCESS_RIGHTS.FILE_READ_DATA | (uint)FILE_ACCESS_RIGHTS.FILE_WRITE_DATA,\n                FILE_SHARE_MODE.FILE_SHARE_READ | FILE_SHARE_MODE.FILE_SHARE_WRITE,\n                null,\n                FILE_CREATION_DISPOSITION.OPEN_EXISTING,\n                FILE_FLAGS_AND_ATTRIBUTES.FILE_ATTRIBUTE_NORMAL,\n                null);\n\n            if (!PInvoke.HidD_GetAttributes(fileHandle, out var hidAttributes))\n                continue;\n\n            PHIDP_PREPARSED_DATA preParsedData = default;\n            try\n            {\n                PInvoke.HidD_GetPreparsedData(fileHandle, out preParsedData);\n                PInvoke.HidP_GetCaps(preParsedData, out var caps);\n\n                if (hidAttributes.VendorID == vendorId && (hidAttributes.ProductID & productIdMask) == productIdMasked && caps.FeatureReportByteLength == descriptorLength)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Found device. [vendorId={hidAttributes.VendorID:X2}, productId={hidAttributes.ProductID:X2}, descriptorLength={caps.FeatureReportByteLength}]\");\n\n                    return fileHandle;\n                }\n            }\n            finally\n            {\n                PInvoke.HidD_FreePreparsedData(preParsedData);\n            }\n        }\n\n        return null;\n    }\n\n    #endregion\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Displays.cs",
    "content": "﻿using System.Linq;\nusing WindowsDisplayAPI;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class Displays\n{\n    public static Display[] Get() => Display.GetDisplays().ToArray();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Drivers.cs",
    "content": "﻿using System;\nusing Microsoft.Win32.SafeHandles;\nusing Windows.Win32;\nusing Windows.Win32.Storage.FileSystem;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class Drivers\n{\n    public const uint IOCTL_ENERGY_BATTERY_INFORMATION = 0x83102138;\n    public const uint IOCTL_ENERGY_SETTINGS = 0x831020E8;\n    public const uint IOCTL_ENERGY_BATTERY_CHARGE_MODE = 0x831020F8;\n    public const uint IOCTL_ENERGY_BATTERY_NIGHT_CHARGE = 0x83102150;\n    public const uint IOCTL_ENERGY_KEYBOARD = 0x83102144;\n    public const uint IOCTL_KEY_WAIT_HANDLE = 0x831020D8;\n    public const uint IOCTL_KEY_VALUE = 0x831020CC;\n\n    private static readonly object Lock = new();\n\n    private static SafeFileHandle? _energy;\n\n    public static SafeFileHandle GetEnergy()\n    {\n        if (_energy is not null)\n            return _energy;\n\n        lock (Lock)\n        {\n            if (_energy is not null)\n                return _energy;\n\n            var handle = PInvoke.CreateFile(@\"\\\\.\\EnergyDrv\",\n                (uint)FILE_ACCESS_RIGHTS.FILE_READ_DATA | (uint)FILE_ACCESS_RIGHTS.FILE_WRITE_DATA,\n                FILE_SHARE_MODE.FILE_SHARE_READ | FILE_SHARE_MODE.FILE_SHARE_WRITE,\n                null,\n                FILE_CREATION_DISPOSITION.OPEN_EXISTING,\n                FILE_FLAGS_AND_ATTRIBUTES.FILE_ATTRIBUTE_NORMAL,\n                null);\n\n            if (handle.IsInvalid)\n                throw new InvalidOperationException(\"handle is invalid\");\n\n            _energy = handle;\n        }\n\n        return _energy;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/ExternalDisplays.cs",
    "content": "﻿using System.Linq;\nusing WindowsDisplayAPI;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class ExternalDisplays\n{\n    public static Display[] Get()\n    {\n        var internalDisplay = InternalDisplay.Get();\n        var allDisplays = Display.GetDisplays();\n        return allDisplays.Where(d => d.DevicePath != internalDisplay?.DevicePath).ToArray();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/InternalDisplay.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Devices.Display;\nusing Windows.Win32.Foundation;\nusing WindowsDisplayAPI;\nusing WindowsDisplayAPI.DisplayConfig;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class InternalDisplay\n{\n    private readonly struct DisplayHolder\n    {\n        public static readonly DisplayHolder Empty = new();\n\n        private readonly Display? _display;\n\n        private DisplayHolder(Display? display) => _display = display;\n\n        public static implicit operator DisplayHolder(Display? s) => new(s);\n\n        public static implicit operator Display?(DisplayHolder s) => s._display;\n    }\n\n    private static readonly object Lock = new();\n    private static DisplayHolder? _displayHolder;\n\n    public static void SetNeedsRefresh()\n    {\n        lock (Lock)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Resetting holder...\");\n\n            _displayHolder = null;\n        }\n    }\n\n    public static Display? Get()\n    {\n        lock (Lock)\n        {\n            if (_displayHolder is not null)\n                return _displayHolder;\n\n            var displays = Display.GetDisplays().ToArray();\n            var internalDisplay = FindInternalDisplay(displays);\n            if (internalDisplay is not null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Found internal display: {internalDisplay}\");\n\n                return (_displayHolder = internalDisplay);\n            }\n\n            var aoDisplay = FindInternalAdvancedOptimusDisplay(displays);\n            if (aoDisplay is not null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Found internal AO display: {aoDisplay}\");\n\n                return (_displayHolder = aoDisplay);\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"No internal displays found.\");\n\n            return (_displayHolder = DisplayHolder.Empty);\n        }\n    }\n\n    private static Display? FindInternalDisplay(IEnumerable<Display> displays)\n    {\n        return displays.Where(d => d.GetVideoOutputTechnology().IsInternalOutput()).FirstOrDefault();\n    }\n\n    private static Display? FindInternalAdvancedOptimusDisplay(IEnumerable<Display> displays)\n    {\n        var exDpDisplays = displays.Where(di => di.GetVideoOutputTechnology().IsExternalDisplayPortOutput()).ToArray();\n\n        if (exDpDisplays.Length < 1)\n            return null;\n\n        var exDpDisplay = exDpDisplays[0];\n        var exDpPathDisplayTarget = exDpDisplay.ToPathDisplayTarget();\n        var exDpPortDisplayEdid = exDpPathDisplayTarget.EDIDManufactureId;\n\n        var sameDeviceIsOnAnotherAdapter = DisplayAdapter.GetDisplayAdapters()\n            .Where(da => da.DevicePath != exDpDisplay.Adapter.DevicePath)\n            .SelectMany(da => da.GetDisplayDevices())\n            .Select(dd => dd.ToPathDisplayTarget())\n            .Any(pdt => pdt.EDIDManufactureId == exDpPortDisplayEdid && pdt.GetVideoOutputTechnology().IsInternalOutput());\n\n        return sameDeviceIsOnAnotherAdapter ? exDpDisplay : null;\n    }\n\n    private static DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY GetVideoOutputTechnology(this DisplayDevice displayDevice)\n    {\n        return GetVideoOutputTechnology(displayDevice.ToPathDisplayTarget());\n    }\n\n    private static unsafe DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY GetVideoOutputTechnology(this PathDisplayTarget pathDisplayTarget)\n    {\n        var intPtr = IntPtr.Zero;\n        try\n        {\n            var deviceName = new DISPLAYCONFIG_TARGET_DEVICE_NAME\n            {\n                header = new DISPLAYCONFIG_DEVICE_INFO_HEADER\n                {\n                    type = DISPLAYCONFIG_DEVICE_INFO_TYPE.DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME,\n                    id = pathDisplayTarget.TargetId,\n                    adapterId = new LUID\n                    {\n                        HighPart = pathDisplayTarget.Adapter.AdapterId.HighPart,\n                        LowPart = pathDisplayTarget.Adapter.AdapterId.LowPart,\n                    },\n                    size = (uint)Marshal.SizeOf<DISPLAYCONFIG_TARGET_DEVICE_NAME>()\n                }\n            };\n\n            intPtr = Marshal.AllocHGlobal((int)deviceName.header.size);\n            Marshal.StructureToPtr(deviceName, intPtr, false);\n\n            var success = PInvoke.DisplayConfigGetDeviceInfo((DISPLAYCONFIG_DEVICE_INFO_HEADER*)intPtr.ToPointer());\n            if (success != PInvokeExtensions.ERROR_SUCCESS)\n                PInvokeExtensions.ThrowIfWin32Error(\"DisplayConfigGetDeviceInfo\");\n\n            var deviceNameResponse = Marshal.PtrToStructure<DISPLAYCONFIG_TARGET_DEVICE_NAME>(intPtr);\n            return deviceNameResponse.outputTechnology;\n        }\n        catch\n        {\n            return DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER;\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(intPtr);\n        }\n    }\n\n    private static bool IsInternalOutput(this DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology)\n    {\n        var result = outputTechnology is DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL;\n        result |= outputTechnology is DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED;\n        return result;\n    }\n\n    private static bool IsExternalDisplayPortOutput(this DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology)\n    {\n        return outputTechnology is DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/KnownFolders.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing Windows.Win32;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class KnownFolders\n{\n    private static readonly Dictionary<KnownFolder, Guid> Folders = new()\n    {\n        [KnownFolder.Contacts] = new(\"56784854-C6CB-462B-8169-88E350ACB882\"),\n        [KnownFolder.Downloads] = new(\"374DE290-123F-4565-9164-39C4925E467B\"),\n        [KnownFolder.Favorites] = new(\"1777F761-68AD-4D8A-87BD-30B759FA33DD\"),\n        [KnownFolder.Links] = new(\"BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968\"),\n        [KnownFolder.SavedGames] = new(\"4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4\"),\n        [KnownFolder.SavedSearches] = new(\"7D1D3A04-DEBB-4115-95CF-2F29DA2920DA\")\n    };\n\n    public static string GetPath(KnownFolder knownFolder)\n    {\n        if (!PInvoke.SHGetKnownFolderPath(Folders[knownFolder], PInvokeExtensions.KF_FLAG_DEFAULT, null, out var path).Succeeded)\n            return string.Empty;\n        return path.ToString() ?? string.Empty;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoCapabilityData00.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoCapabilityData00\n    {\n        public static Task<IEnumerable<CapabilityID>> ReadAsync() => WMI.ReadAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CAPABILITY_DATA_00\",\n            pdc => (CapabilityID)Convert.ToInt32(pdc[\"IDs\"].Value));\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoCapabilityData01.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoCapabilityData01\n    {\n        public static Task<IEnumerable<RangeCapability>> ReadAsync() => WMI.ReadAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CAPABILITY_DATA_01\",\n            pdc =>\n            {\n                var id = Convert.ToInt32(pdc[\"IDs\"].Value);\n                var defaultValue = Convert.ToInt32(pdc[\"DefaultValue\"].Value);\n                var min = Convert.ToInt32(pdc[\"MinValue\"].Value);\n                var max = Convert.ToInt32(pdc[\"MaxValue\"].Value);\n                var step = Convert.ToInt32(pdc[\"Step\"].Value);\n                return new RangeCapability((CapabilityID)id, defaultValue, min, max, step);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoCpuMethod.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoCpuMethod\n    {\n        public static Task<(int longTerm, int shortTerm)> CPUGetDefaultPowerLimitAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Get_Default_PowerLimit\",\n            [],\n            pdc =>\n            {\n                var longTerm = Convert.ToInt32(pdc[\"DefaultLongTermPowerlimit\"].Value);\n                var shortTerm = Convert.ToInt32(pdc[\"DefaultShortTermPowerlimit\"].Value);\n                return (longTerm, shortTerm);\n            });\n\n        public static Task<(int value, int min, int max, int step)> CPUGetLongTermPowerLimitAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Get_LongTerm_PowerLimit\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"CurrentLongTerm_PowerLimit\"].Value);\n                var min = Convert.ToInt32(pdc[\"MinLongTerm_PowerLimit\"].Value);\n                var max = Convert.ToInt32(pdc[\"MaxLongTerm_PowerLimit\"].Value);\n                var step = Convert.ToInt32(pdc[\"step\"].Value);\n\n                return (value, min, max, step);\n            });\n\n        public static Task CPUSetLongTermPowerLimitAsync(int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Set_LongTerm_PowerLimit\",\n            new() { { \"value\", value } });\n\n        public static Task<(int value, int min, int max, int step)> CPUGetShortTermPowerLimitAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Get_ShortTerm_PowerLimit\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"CurrentShortTerm_PowerLimit\"].Value);\n                var min = Convert.ToInt32(pdc[\"MinShortTerm_PowerLimit\"].Value);\n                var max = Convert.ToInt32(pdc[\"MaxShortTerm_PowerLimit\"].Value);\n                var step = Convert.ToInt32(pdc[\"step\"].Value);\n\n                return (value, min, max, step);\n            });\n\n        public static Task CPUSetShortTermPowerLimitAsync(int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Set_ShortTerm_PowerLimit\",\n            new() { { \"value\", value } });\n\n        public static Task<(int value, int min, int max, int step, int defaultValue)> CPUGetPeakPowerLimitAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Get_Peak_PowerLimit\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"CurrentPeakPowerLimit\"].Value);\n                var min = Convert.ToInt32(pdc[\"MinPeakPowerLimit\"].Value);\n                var max = Convert.ToInt32(pdc[\"MaxPeakPowerLimit\"].Value);\n                var step = Convert.ToInt32(pdc[\"step\"].Value);\n                var defaultValue = Convert.ToInt32(pdc[\"DefaultPeakPowerLimit\"].Value);\n\n                return (value, min, max, step, defaultValue);\n            });\n\n        public static Task CPUSetPeakPowerLimitAsync(int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Set_Peak_PowerLimit\",\n            new() { { \"CurrentPeakPowerLimit\", value } });\n\n        public static Task<(int value, int min, int max, int step, int defaultValue)> CPUGetCrossLoadingPowerLimitAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Get_Cross_Loading_PowerLimit\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"CurrentCpuCrossLoading\"].Value);\n                var min = Convert.ToInt32(pdc[\"MinCpuCrossLoading\"].Value);\n                var max = Convert.ToInt32(pdc[\"MaxCpuCrossLoading\"].Value);\n                var step = Convert.ToInt32(pdc[\"step\"].Value);\n                var defaultValue = Convert.ToInt32(pdc[\"DefaultCpuCrossLoading\"].Value);\n\n                return (value, min, max, step, defaultValue);\n            });\n\n        public static Task CPUSetCrossLoadingPowerLimitAsync(int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Set_Cross_Loading_PowerLimit\",\n            new() { { \"CurrentCpuCrossLoading\", value } });\n\n        public static Task<(int value, int min, int max, int step, int defaultValue)> GetAPUSPPTPowerLimitAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"Get_APU_sPPT_PowerLimit\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"CurrenAPUsPPTPowerLimit\"].Value);\n                var min = Convert.ToInt32(pdc[\"MinAPUsPPTPowerLimit\"].Value);\n                var max = Convert.ToInt32(pdc[\"MaxAPUsPPTPowerLimit\"].Value);\n                var step = Convert.ToInt32(pdc[\"step\"].Value);\n                var defaultValue = Convert.ToInt32(pdc[\"DefaultAPUsPPTPowerLimit\"].Value);\n\n                return (value, min, max, step, defaultValue);\n            });\n\n        public static Task SetAPUSPPTPowerLimitAsync(int value) => WMI.CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"Set_APU_sPPT_PowerLimit\",\n            new() { { \"CurrentAPUsPPTPowerLimit\", value } });\n\n        public static Task<(int value, int min, int max, int step, int defaultValue)> CPUGetTemperatureControlAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Get_Temperature_Control\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"CurrentTemperatueControl\"].Value);\n                var min = Convert.ToInt32(pdc[\"MinTemperatueControl\"].Value);\n                var max = Convert.ToInt32(pdc[\"MaxTemperatueControl\"].Value);\n                var step = Convert.ToInt32(pdc[\"step\"].Value);\n                var defaultValue = Convert.ToInt32(pdc[\"DefaultTemperatueControl\"].Value);\n\n                return (value, min, max, step, defaultValue);\n            });\n\n        public static Task CPUSetTemperatureControlAsync(int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_CPU_METHOD\",\n            \"CPU_Set_Temperature_Control\",\n            new() { { \"CurrentTemperatureControl\", value } });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoDefaultValueInDifferentModeData.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoDefaultValueInDifferentModeData\n    {\n        public readonly struct Data(\n            int mode,\n            int cpuLongTermPowerLimit,\n            int cpuShortTermPowerLimit,\n            int cpuPeakPowerLimit,\n            int cpuCrossLoadingPowerLimit,\n            int apUsPPTPowerLimit,\n            int cpuTemperatureLimit,\n            int gpuPowerBoost,\n            int gpuConfigurableTGP,\n            int gpuTemperatureLimit)\n        {\n            public int Mode { get; } = mode;\n            public int CPULongTermPowerLimit { get; } = cpuLongTermPowerLimit;\n            public int CPUShortTermPowerLimit { get; } = cpuShortTermPowerLimit;\n            public int CPUPeakPowerLimit { get; } = cpuPeakPowerLimit;\n            public int CPUCrossLoadingPowerLimit { get; } = cpuCrossLoadingPowerLimit;\n            public int APUsPPTPowerLimit { get; } = apUsPPTPowerLimit;\n            public int CPUTemperatureLimit { get; } = cpuTemperatureLimit;\n            public int GPUPowerBoost { get; } = gpuPowerBoost;\n            public int GPUConfigurableTGP { get; } = gpuConfigurableTGP;\n            public int GPUTemperatureLimit { get; } = gpuTemperatureLimit;\n        }\n\n        public static Task<IEnumerable<Data>> ReadAsync() => WMI.ReadAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_DEFAULT_VALUE_IN_DIFFERENT_MODE_DATA \",\n            pdc => new Data(Convert.ToInt32(pdc[\"mode\"].Value),\n                Convert.ToInt32(pdc[\"DefaultLongTermPowerlimit\"].Value),\n                Convert.ToInt32(pdc[\"DefaultShortTermPowerlimit\"].Value),\n                Convert.ToInt32(pdc[\"DefaultPeakPowerLimit\"].Value),\n                Convert.ToInt32(pdc[\"DefaultCpuCrossLoading\"].Value),\n                Convert.ToInt32(pdc[\"DefaultAPUsPPTPowerLimit\"].Value),\n                Convert.ToInt32(pdc[\"DefaultTemperatueControl\"].Value),\n                Convert.ToInt32(pdc[\"Default_PPAB_Powerlimit\"].Value),\n                Convert.ToInt32(pdc[\"Default_cTGP_Powerlimit\"].Value),\n                Convert.ToInt32(pdc[\"DefaultTemperatueLimit\"].Value)));\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoDiscreteData.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoDiscreteData\n    {\n        public static Task<IEnumerable<DiscreteCapability>> ReadAsync() => WMI.ReadAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_DISCRETE_DATA\",\n            pdc =>\n            {\n                var id = (CapabilityID)Convert.ToInt32(pdc[\"IDs\"].Value);\n                var value = Convert.ToInt32(pdc[\"Value\"].Value);\n                return new DiscreteCapability(id, value);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoFanMethod.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoFanMethod\n    {\n        public static Task FanSetTableAsync(byte[] fanTable) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_FAN_METHOD\",\n            \"Fan_Set_Table\",\n            new() { { \"FanTable\", fanTable } });\n\n        public static Task<bool> FanGetFullSpeedAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_FAN_METHOD\",\n            \"Fan_Get_FullSpeed\",\n            [],\n            pdc => (bool)pdc[\"Status\"].Value);\n\n        public static Task FanSetFullSpeedAsync(int status) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_FAN_METHOD\",\n            \"Fan_Set_FullSpeed\",\n            new() { { \"Status\", status } });\n\n        public static Task<int> FanGetCurrentSensorTemperatureAsync(int sensorId) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_FAN_METHOD\",\n            \"Fan_GetCurrentSensorTemperature\",\n            new() { { \"SensorID\", sensorId } },\n            pdc => Convert.ToInt32(pdc[\"CurrentSensorTemperature\"].Value));\n\n        public static Task<int> FanGetCurrentFanSpeedAsync(int fanId) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_FAN_METHOD\",\n            \"Fan_GetCurrentFanSpeed\",\n            new() { { \"FanID\", fanId } },\n            pdc => Convert.ToInt32(pdc[\"CurrentFanSpeed\"].Value));\n\n        public static async Task<int> GetCurrentFanMaxSpeedAsync(int sensorId, int fanId)\n        {\n            var result = await ReadAsync(\"root\\\\WMI\",\n                $\"SELECT * FROM LENOVO_FAN_TABLE_DATA WHERE Sensor_ID = {sensorId} AND Fan_Id = {fanId}\",\n                pdc => Convert.ToInt32(pdc[\"CurrentFanMaxSpeed\"].Value)).ConfigureAwait(false);\n            return result.Max();\n        }\n\n        public static async Task<int> GetDefaultFanMaxSpeedAsync(int sensorId, int fanID)\n        {\n            var result = await ReadAsync(\"root\\\\WMI\",\n                $\"SELECT * FROM LENOVO_FAN_TABLE_DATA WHERE Sensor_ID = {sensorId} AND Fan_Id = {fanID}\",\n                pdc => Convert.ToInt32(pdc[\"DefaultFanMaxSpeed\"].Value)).ConfigureAwait(false);\n            return result.Max();\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoFanTableData.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoFanTableData\n    {\n        public static Task<bool> ExistsAsync(int sensorId, int fanId) => WMI.ExistsAsync(\"root\\\\WMI\", $\"SELECT * FROM LENOVO_FAN_TABLE_DATA WHERE Sensor_ID = {sensorId} AND Fan_Id = {fanId}\");\n\n        public static Task<IEnumerable<(int mode, byte fanId, byte sensorId, ushort[] fanTableData, ushort[] sensorTableData)>> ReadAsync() => WMI.ReadAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_FAN_TABLE_DATA\",\n            pdc =>\n            {\n                var mode = pdc.Contains(\"Mode\") ? Convert.ToInt32(pdc[\"Mode\"].Value) : -1;\n                var fanId = Convert.ToByte(pdc[\"Fan_Id\"].Value);\n                var sensorId = Convert.ToByte(pdc[\"Sensor_ID\"].Value);\n                var fanTableData = (ushort[]?)pdc[\"FanTable_Data\"].Value ?? [];\n                var sensorTableData = (ushort[]?)pdc[\"SensorTable_Data\"].Value ?? [];\n                return (mode, fanId, sensorId, fanTableData, sensorTableData);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoGameZoneData.cs",
    "content": "﻿using System;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static partial class LenovoGameZoneData\n    {\n        [GeneratedRegex(\"PCIVEN_([0-9A-F]{4})|DEV_([0-9A-F]{4})\")]\n        private static partial Regex DGPUHWIdRegex();\n\n        public static Task<bool> ExistsAsync() => WMI.ExistsAsync(\"root\\\\WMI\", $\"SELECT * FROM LENOVO_GAMEZONE_DATA\");\n\n        public static Task<int> IsSupportSmartFanAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"IsSupportSmartFan\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task<int> GetSmartFanModeAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetSmartFanMode\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task SetSmartFanModeAsync(int data) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"SetSmartFanMode\",\n            new() { { \"Data\", data } });\n\n        public static Task<int> GetIntelligentSubModeAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetIntelligentSubMode\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task SetIntelligentSubModeAsync(int data) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"SetIntelligentSubMode\",\n            new() { { \"Data\", data } });\n\n        public static Task<int> IsSupportGSyncAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"IsSupportGSync\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task<int> GetGSyncStatusAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetGSyncStatus\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task SetGSyncStatusAsync(int data) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"SetGSyncStatus\",\n            new() { { \"Data\", data } });\n\n        public static Task<int> IsSupportIGPUModeAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"IsSupportIGPUMode\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task<int> GetIGPUModeStatusAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetIGPUModeStatus\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task SetIGPUModeStatusAsync(int mode) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"SetIGPUModeStatus\",\n            new() { { \"mode\", mode } });\n\n        public static Task NotifyDGPUStatusAsync(int status) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"NotifyDGPUStatus\",\n            new() { { \"Status\", status } });\n\n        public static Task<HardwareId> GetDGPUHWIdAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetDGPUHWId\",\n            [],\n            pdc =>\n            {\n                var id = pdc[\"Data\"].Value.ToString();\n\n                if (id is null)\n                    return HardwareId.Empty;\n\n                try\n                {\n                    var matches = DGPUHWIdRegex().Matches(id);\n                    if (matches.Count != 2)\n                        return HardwareId.Empty;\n\n                    var vendor = matches[0].Groups[1].Value;\n                    var device = matches[1].Groups[2].Value;\n\n                    return new HardwareId(vendor, device);\n                }\n                catch\n                {\n                    return HardwareId.Empty;\n                }\n            });\n\n        public static Task<int> IsSupportGpuOCAsync() => CallAsync(\"ROOT\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"IsSupportGpuOC\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task<int> IsSupportDisableTPAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"IsSupportDisableTP\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task<int> GetTPStatusStatusAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetTPStatus\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task SetTPStatusAsync(int data) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"SetTPStatus\",\n            new() { { \"Data\", data } });\n\n        public static Task<int> IsSupportDisableWinKeyAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"IsSupportDisableWinKey\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task<int> GetWinKeyStatusAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetWinKeyStatus\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task SetWinKeyStatusAsync(int data) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"SetWinKeyStatus\",\n            new() { { \"Data\", data } });\n\n        public static Task<int> IsSupportODAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"IsSupportOD\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task<int> GetODStatusAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetODStatus\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task SetODStatusAsync(int data) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"SetODStatus\",\n            new() { { \"Data\", data } });\n\n        public static Task SetLightControlOwnerAsync(int data) => CallAsync(\"ROOT\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"SetLightControlOwner\",\n            new() { { \"Data\", data } });\n\n        public static Task<int> IsACFitForOCAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"IsACFitForOC\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task<int> GetPowerChargeModeAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetPowerChargeMode\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Data\"].Value));\n\n        public static Task<int> GetCPUFrequencyAsync() => WMI.CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_DATA\",\n            \"GetCPUFrequency\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"Data\"].Value);\n                var low = value & 0xFFFF;\n                var high = value >> 16;\n                return Math.Max(low, high);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoGameZoneKeyLockStatusEvent.cs",
    "content": "﻿using System;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoGameZoneKeyLockStatusEvent\n    {\n        public static IDisposable Listen(Action<int> handler) => WMI.Listen(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_KEYLOCK_STATUS_EVENT\",\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"KeyLockState\"].Value);\n                handler(value);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoGameZoneLightProfileChangeEvent.cs",
    "content": "﻿using System;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoGameZoneLightProfileChangeEvent\n    {\n        public static IDisposable Listen(Action<int> handler) => WMI.Listen(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_LIGHT_PROFILE_CHANGE_EVENT\",\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"EventId\"].Value);\n                handler(value);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoGameZoneSmartFanModeEvent.cs",
    "content": "﻿using System;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoGameZoneSmartFanModeEvent\n    {\n        public static IDisposable Listen(Action<int> handler) => WMI.Listen(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_SMART_FAN_MODE_EVENT\",\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"mode\"].Value);\n                handler(value);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoGameZoneThermalModeEvent.cs",
    "content": "﻿using System;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoGameZoneThermalModeEvent\n    {\n        public static IDisposable Listen(Action<int> handler) => WMI.Listen(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GAMEZONE_THERMAL_MODE_EVENT\",\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"mode\"].Value);\n                handler(value);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoGpuMethod.cs",
    "content": "﻿\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nusing System;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoGpuMethod\n    {\n        public static Task<(int ctgp, int ppab)> GPUGetDefaultPPABcTGPPowerLimit() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GPU_METHOD\",\n            \"GPU_Get_Default_PPAB_cTGP_PowerLimit\",\n            [],\n            pdc =>\n            {\n                var ctgp = Convert.ToInt32(pdc[\"Default_cTGP_Powerlimit\"].Value);\n                var ppab = Convert.ToInt32(pdc[\"Default_PPAB_Powerlimit\"].Value);\n                return (ctgp, ppab);\n            });\n\n        public static Task<(int value, int min, int max, int step)> GPUGetCTGPPowerLimitAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GPU_METHOD\",\n            \"GPU_Get_cTGP_PowerLimit\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"Current_cTGP_PowerLimit\"].Value);\n                var min = Convert.ToInt32(pdc[\"Min_cTGP_PowerLimit\"].Value);\n                var max = Convert.ToInt32(pdc[\"Max_cTGP_PowerLimit\"].Value);\n                var step = Convert.ToInt32(pdc[\"step\"].Value);\n\n                return (value, min, max, step);\n            });\n\n        public static Task GPUSetCTGPPowerLimitAsync(int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GPU_METHOD\",\n            \"GPU_Set_cTGP_PowerLimit\",\n            new() { { \"value\", value } });\n\n        public static Task<(int value, int min, int max, int step)> GPUGetPPABPowerLimitAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GPU_METHOD\",\n            \"GPU_Get_PPAB_PowerLimit\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"CurrentPPAB_PowerLimit\"].Value);\n                var min = Convert.ToInt32(pdc[\"MinPPAB_PowerLimit\"].Value);\n                var max = Convert.ToInt32(pdc[\"MaxPPAB_PowerLimit\"].Value);\n                var step = Convert.ToInt32(pdc[\"step\"].Value);\n\n                return (value, min, max, step);\n            });\n\n        public static Task GPUSetPPABPowerLimitAsync(int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GPU_METHOD\",\n            \"GPU_Set_PPAB_PowerLimit\",\n            new() { { \"value\", value } });\n\n        public static Task<(int value, int min, int max, int step, int defaultValue)> GPUGetTemperatureLimitAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GPU_METHOD\",\n            \"GPU_Get_Temperature_Limit\",\n            [],\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"CurrentTemperatueLimit\"].Value);\n                var min = Convert.ToInt32(pdc[\"MinTemperatueLimit\"].Value);\n                var max = Convert.ToInt32(pdc[\"MaxTemperatueLimit\"].Value);\n                var step = Convert.ToInt32(pdc[\"step\"].Value);\n                var defaultValue = Convert.ToInt32(pdc[\"DefaultTemperatueLimit\"].Value);\n\n                return (value, min, max, step, defaultValue);\n            });\n\n        public static Task GPUSetTemperatureLimitAsync(int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_GPU_METHOD\",\n            \"GPU_Set_Temperature_Limit\",\n            new() { { \"CurrentTemperatureLimit\", value } });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoIntelligentOPList.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoIntelligentOPList\n    {\n        public static async Task<Dictionary<string, int>> ReadAsync()\n        {\n            var result = await WMI.ReadAsync(\"root\\\\WMI\",\n                $\"SELECT * FROM LENOVO_INTELLIGENT_OP_LIST\",\n                pdc =>\n                {\n                    var processName = Convert.ToString(pdc[\"processname\"].Value);\n                    var mode = Convert.ToInt32(pdc[\"mode\"].Value);\n                    return (processName, mode);\n                }).ConfigureAwait(false);\n            return result\n                .OfType<(string, int)>()\n                .DistinctBy(sm => sm.Item1)\n                .ToDictionary(sm => sm.Item1, sm => sm.Item2);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoLightingData.cs",
    "content": "﻿using System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoLightingData\n    {\n        public static Task<bool> ExistsAsync(int lightingId, int controlInterface, int type) =>\n            WMI.ExistsAsync(\"root\\\\WMI\", $\"SELECT * FROM LENOVO_LIGHTING_DATA WHERE Lighting_ID = {lightingId} AND Control_Interface = {controlInterface} AND Lighting_Type = {type}\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoLightingEvent.cs",
    "content": "﻿using System;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoLightingEvent\n    {\n        public static IDisposable Listen(Action<int> handler) => WMI.Listen(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_LIGHTING_EVENT\",\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"Key_ID\"].Value);\n                handler(value);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoLightingMethod.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoLightingMethod\n    {\n        public static Task<(int stateType, int level)> GetLightingCurrentStatusAsync(int lightingId) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_LIGHTING_METHOD\",\n            \"Get_Lighting_Current_Status\",\n            new() { { \"Lighting_ID\", lightingId } },\n            pdc =>\n            {\n                var stateType = Convert.ToInt32(pdc[\"Current_State_Type\"].Value);\n                var level = Convert.ToInt32(pdc[\"Current_Brightness_Level\"].Value);\n                return (stateType, level);\n            });\n\n        public static Task SetLightingCurrentStatusAsync(int lightingId, int stateType, int level) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_LIGHTING_METHOD\",\n            \"Set_Lighting_Current_Status\",\n            new()\n            {\n                { \"Lighting_ID\", lightingId },\n                { \"Current_State_Type\", stateType },\n                { \"Current_Brightness_Level\", level }\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoOtherMethod.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\n// ReSharper disable IdentifierTypo\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoOtherMethod\n    {\n        public static Task<int> GetSupportThermalModeAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"GetSupportThermalMode\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"mode\"].Value));\n\n        public static Task<int> GetSupportLegionZoneVersionAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"Get_Support_LegionZone_Version\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Version\"].Value));\n\n        public static Task<int> GetLegionDeviceSupportFeatureAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"Get_Legion_Device_Support_Feature\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Status\"].Value));\n\n        public static Task<int> GetDeviceCurrentSupportFeatureAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"Get_Device_Current_Support_Feature\",\n            [],\n            pdc => Convert.ToInt32(pdc[\"Flag\"].Value));\n\n        public static Task<int> SetDeviceCurrentSupportFeatureAsync(int functionId, int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"Set_Device_Current_Support_Feature\",\n            new()\n            {\n                { \"FunctionID\", functionId },\n                { \"value\", value }\n            },\n            pdc => Convert.ToInt32(pdc[\"ret\"].Value));\n\n        public static Task SetDGPUDeviceStatusAsync(bool status) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"Set_DGPU_Device_Status\",\n            new() { { \"Status\", status ? 1 : 0 } });\n\n        public static Task<HardwareId> GetDGPUDeviceDIDVIDAsync() => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"Get_DGPU_Device_DIDVID\",\n            [],\n            pdc =>\n            {\n                var id = Convert.ToInt32(pdc[\"DGPU_ID\"].Value);\n                var vendorId = id & 0xFFFF;\n                var deviceId = id >> 16;\n                return new HardwareId($\"{vendorId:X}\", $\"{deviceId:X}\");\n            });\n\n        public static Task<int> GetFeatureValueAsync(CapabilityID id) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"GetFeatureValue\",\n            new() { { \"IDs\", (int)id } },\n            pdc => Convert.ToInt32(pdc[\"Value\"].Value));\n\n        public static Task SetFeatureValueAsync(CapabilityID id, int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"SetFeatureValue\",\n            new()\n            {\n                { \"IDs\", (int)id },\n                { \"value\", value }\n            });\n\n        public static Task<int> GetFeatureValueAsync(uint idRaw) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"GetFeatureValue\",\n            new() { { \"IDs\", idRaw } },\n            pdc => Convert.ToInt32(pdc[\"Value\"].Value));\n\n        public static Task SetFeatureValueAsync(uint idRaw, int value) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_OTHER_METHOD\",\n            \"SetFeatureValue\",\n            new()\n            {\n                { \"IDs\", idRaw },\n                { \"value\", value }\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.LenovoUtilityEvent.cs",
    "content": "﻿using System;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class LenovoUtilityEvent\n    {\n        public static IDisposable Listen(Action<int> handler) => WMI.Listen(\"root\\\\WMI\",\n            $\"SELECT * FROM LENOVO_UTILITY_EVENT\",\n            pdc =>\n            {\n                var value = Convert.ToInt32(pdc[\"PressTypeDataVal\"].Value);\n                handler(value);\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.Win32.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Management;\nusing System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class Win32\n    {\n        public static class ProcessStartTrace\n        {\n            public static IDisposable Listen(Action<int, string> handler) => WMI.Listen(\"root\\\\CIMV2\",\n                $\"SELECT * FROM Win32_ProcessStartTrace\",\n                pdc =>\n                {\n                    var processId = Convert.ToInt32(pdc[\"ProcessID\"].Value);\n                    var processName = (string)pdc[\"ProcessName\"].Value;\n                    handler(processId, Path.GetFileNameWithoutExtension(processName));\n                });\n        }\n\n        public static class ProcessStopTrace\n        {\n            public static IDisposable Listen(Action<int, string> handler) => WMI.Listen(\"root\\\\CIMV2\",\n                $\"SELECT * FROM Win32_ProcessStopTrace\",\n                pdc =>\n                {\n                    var processId = Convert.ToInt32(pdc[\"ProcessID\"].Value);\n                    var processName = (string)pdc[\"ProcessName\"].Value;\n                    handler(processId, Path.GetFileNameWithoutExtension(processName));\n                });\n        }\n\n        public static class ComputerSystemProduct\n        {\n            public static async Task<(string vendor, string name, string version, string identifyingNumber)> ReadAsync()\n            {\n                var result = await WMI.ReadAsync(\"root\\\\CIMV2\",\n                    $\"SELECT * FROM Win32_ComputerSystemProduct\",\n                    pdc =>\n                    {\n                        var vendor = (string)pdc[\"Vendor\"].Value;\n                        var name = (string)pdc[\"Name\"].Value;\n                        var version = (string)pdc[\"Version\"].Value;\n                        var identifyingNumber = (string)pdc[\"IdentifyingNumber\"].Value;\n                        return (vendor, name, version, identifyingNumber);\n                    }).ConfigureAwait(false);\n                return result.First();\n            }\n        }\n\n        public static class Processor\n        {\n            public static async Task<int> GetAddressWidthAsync()\n            {\n                var result = await ReadAsync(\"root\\\\CIMV2\",\n                    $\"SELECT * FROM Win32_Processor\",\n                    pdc => Convert.ToInt32(pdc[\"AddressWidth\"].Value)).ConfigureAwait(false);\n                return result.First();\n            }\n        }\n\n        public static class OperatingSystem\n        {\n            public static async Task<string> GetBuildNumberAsync()\n            {\n                var result = await ReadAsync(\"root\\\\CIMV2\",\n                    $\"SELECT * FROM Win32_OperatingSystem\",\n                    pdc => (string)pdc[\"BuildNumber\"].Value).ConfigureAwait(false);\n                return result.First();\n            }\n        }\n\n        public static class PnpEntity\n        {\n            public static async Task<string?> GetDeviceIDAsync(string pnpDeviceIdPart)\n            {\n                var results = await ReadAsync(\"root\\\\CIMV2\",\n                    $\"SELECT * FROM Win32_PnpEntity WHERE DeviceID LIKE '{pnpDeviceIdPart}%'\",\n                    pdc => (string)pdc[\"DeviceID\"].Value).ConfigureAwait(false);\n                return results.FirstOrDefault();\n            }\n        }\n\n        public static class PnpSignedDriver\n        {\n            public static Task<IEnumerable<DriverInfo>> ReadAsync() => WMI.ReadAsync(\"root\\\\CIMV2\",\n                $\"SELECT * FROM Win32_PnPSignedDriver\",\n                pdc =>\n                {\n                    var deviceId = pdc[\"DeviceID\"].Value as string ?? string.Empty;\n                    var hardwareId = pdc[\"HardWareId\"].Value as string ?? string.Empty;\n                    var driverVersionString = pdc[\"DriverVersion\"].Value as string;\n                    var driverDateString = pdc[\"DriverDate\"].Value as string;\n\n                    Version? driverVersion = null;\n                    if (Version.TryParse(driverVersionString, out var v))\n                        driverVersion = v;\n\n                    DateTime? driverDate = null;\n                    if (driverDateString is not null)\n                        driverDate = ManagementDateTimeConverter.ToDateTime(driverDateString).Date;\n\n                    return new DriverInfo(deviceId, hardwareId, driverVersion, driverDate);\n                });\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.WmiMonitorBrightnessEvent.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class WmiMonitorBrightnessEvent\n    {\n        public static IDisposable Listen(Action<byte> handler) => WMI.Listen(\"root\\\\WMI\",\n            $\"SELECT * FROM WmiMonitorBrightnessEvent\",\n            pdc =>\n            {\n                var value = Convert.ToByte(pdc[\"Brightness\"].Value);\n                handler(value);\n            });\n    }\n}"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.WmiMonitorBrightnessMethods.cs",
    "content": "﻿using System.Threading.Tasks;\n\n// ReSharper disable InconsistentNaming\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    public static class WmiMonitorBrightnessMethods\n    {\n        public static Task WmiSetBrightness(int brightness, int timeout) => CallAsync(\"root\\\\WMI\",\n            $\"SELECT * FROM WmiMonitorBrightnessMethods\",\n            \"WmiSetBrightness\",\n            new()\n            {\n                { \"Brightness\", brightness },\n                { \"Timeout\", timeout }\n            });\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Management/WMI.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Management;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.Lib.System.Management;\n\npublic static partial class WMI\n{\n    private static async Task<bool> ExistsAsync(string scope, FormattableString query)\n    {\n        try\n        {\n            var queryFormatted = query.ToString(WMIPropertyValueFormatter.Instance);\n            var mos = new ManagementObjectSearcher(scope, queryFormatted);\n            var managementObjects = await mos.GetAsync().ConfigureAwait(false);\n            return managementObjects.Any();\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    private static LambdaDisposable Listen(string scope, FormattableString query, Action<PropertyDataCollection> handler)\n    {\n        var queryFormatted = query.ToString(WMIPropertyValueFormatter.Instance);\n        var watcher = new ManagementEventWatcher(scope, queryFormatted);\n        watcher.EventArrived += (_, e) => handler(e.NewEvent.Properties);\n        watcher.Start();\n\n        return new LambdaDisposable(() =>\n        {\n            watcher.Stop();\n            watcher.Dispose();\n        });\n    }\n\n    private static async Task<IEnumerable<T>> ReadAsync<T>(string scope, FormattableString query, Func<PropertyDataCollection, T> converter)\n    {\n        try\n        {\n            var queryFormatted = query.ToString(WMIPropertyValueFormatter.Instance);\n            var mos = new ManagementObjectSearcher(scope, queryFormatted);\n            var managementObjects = await mos.GetAsync().ConfigureAwait(false);\n            var result = managementObjects.Select(mo => mo.Properties).Select(converter);\n            return result;\n        }\n        catch (ManagementException ex)\n        {\n            throw new ManagementException($\"Read failed: {ex.Message} [scope={scope}, query={query}]\", ex);\n        }\n    }\n\n    private static async Task CallAsync(string scope, FormattableString query, string methodName, Dictionary<string, object> methodParams)\n    {\n        try\n        {\n            var queryFormatted = query.ToString(WMIPropertyValueFormatter.Instance);\n            var mos = new ManagementObjectSearcher(scope, queryFormatted);\n            var managementObjects = await mos.GetAsync().ConfigureAwait(false);\n            var managementObject = managementObjects.FirstOrDefault() ?? throw new InvalidOperationException(\"No results in query\");\n\n            var mo = (ManagementObject)managementObject;\n            var methodParamsObject = mo.GetMethodParameters(methodName);\n            foreach (var pair in methodParams)\n                methodParamsObject[pair.Key] = pair.Value;\n\n            mo.InvokeMethod(methodName, methodParamsObject, new InvokeMethodOptions());\n        }\n        catch (ManagementException ex)\n        {\n            throw new ManagementException($\"Call failed: {ex.Message} [scope={scope}, query={query}, methodName={methodName}]\", ex);\n        }\n    }\n\n    private static async Task<T> CallAsync<T>(string scope, FormattableString query, string methodName, Dictionary<string, object> methodParams, Func<PropertyDataCollection, T> converter)\n    {\n        try\n        {\n            var queryFormatted = query.ToString(WMIPropertyValueFormatter.Instance);\n\n            var mos = new ManagementObjectSearcher(scope, queryFormatted);\n            var managementObjects = await mos.GetAsync().ConfigureAwait(false);\n            var managementObject = managementObjects.FirstOrDefault() ?? throw new InvalidOperationException(\"No results in query\");\n\n            var mo = (ManagementObject)managementObject;\n            var methodParamsObject = mo.GetMethodParameters(methodName);\n            foreach (var pair in methodParams)\n                methodParamsObject[pair.Key] = pair.Value;\n\n            var resultProperties = mo.InvokeMethod(methodName, methodParamsObject, new InvokeMethodOptions());\n            var result = converter(resultProperties.Properties);\n            return result;\n        }\n        catch (ManagementException ex)\n        {\n            throw new ManagementException($\"Call failed: {ex.Message}. [scope={scope}, query={query}, methodName={methodName}]\", ex);\n        }\n    }\n\n    private class WMIPropertyValueFormatter : IFormatProvider, ICustomFormatter\n    {\n        public static readonly WMIPropertyValueFormatter Instance = new();\n\n        private WMIPropertyValueFormatter() { }\n\n        public object GetFormat(Type? formatType)\n        {\n            if (formatType == typeof(ICustomFormatter))\n                return this;\n\n            throw new InvalidOperationException(\"Invalid type of formatted\");\n        }\n\n        public string Format(string? format, object? arg, IFormatProvider? formatProvider)\n        {\n            var stringArg = arg?.ToString()?.Replace(\"\\\\\", \"\\\\\\\\\");\n            return stringArg ?? string.Empty;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/NVAPI.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing NvAPIWrapper;\nusing NvAPIWrapper.Display;\nusing NvAPIWrapper.GPU;\nusing NvAPIWrapper.Native.Exceptions;\nusing NvAPIWrapper.Native.GPU;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\ninternal static class NVAPI\n{\n    public static void Initialize() => NVIDIA.Initialize();\n\n    public static void Unload() => NVIDIA.Unload();\n\n    public static PhysicalGPU? GetGPU()\n    {\n        try\n        {\n            return PhysicalGPU.GetPhysicalGPUs().FirstOrDefault(gpu => gpu.SystemType == SystemType.Laptop);\n        }\n        catch (NVIDIAApiException)\n        {\n            return null;\n        }\n    }\n\n    public static bool IsDisplayConnected(PhysicalGPU gpu)\n    {\n        try\n        {\n            return Display.GetDisplays().Any(d => d.PhysicalGPUs.Contains(gpu, PhysicalGPUEqualityComparer.Instance));\n        }\n        catch (NVIDIAApiException)\n        {\n            return false;\n        }\n    }\n\n    public static string? GetGPUId(PhysicalGPU gpu)\n    {\n        try\n        {\n            return gpu.BusInformation.PCIIdentifiers.ToString();\n        }\n        catch (NVIDIAApiException)\n        {\n            return null;\n        }\n    }\n\n    private class PhysicalGPUEqualityComparer : IEqualityComparer<PhysicalGPU>\n    {\n        public static readonly PhysicalGPUEqualityComparer Instance = new();\n\n        private PhysicalGPUEqualityComparer() { }\n\n        public bool Equals(PhysicalGPU? x, PhysicalGPU? y) => x?.GPUId == y?.GPUId;\n\n        public int GetHashCode(PhysicalGPU obj) => obj.GPUId.GetHashCode();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Power.cs",
    "content": "﻿using System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class Power\n{\n    public static async Task<PowerAdapterStatus> IsPowerAdapterConnectedAsync()\n    {\n        if (!PInvoke.GetSystemPowerStatus(out var sps))\n            return PowerAdapterStatus.Connected;\n\n        var adapterConnected = sps.ACLineStatus == 1;\n        var acFitForOc = await IsAcFitForOc().ConfigureAwait(false) ?? true;\n        var chargingNormally = await IsChargingNormally().ConfigureAwait(false) ?? true;\n\n        return (adapterConnected, acFitForOc && chargingNormally) switch\n        {\n            (true, false) => PowerAdapterStatus.ConnectedLowWattage,\n            (true, _) => PowerAdapterStatus.Connected,\n            (false, _) => PowerAdapterStatus.Disconnected,\n        };\n    }\n\n    public static bool IsBatterySaverEnabled()\n    {\n        if (!PInvoke.GetSystemPowerStatus(out var sps))\n            return false;\n\n        return sps.SystemStatusFlag == 1;\n    }\n\n    public static async Task RestartAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Restarting...\");\n\n        await CMD.RunAsync(\"shutdown\", \"/r /t 0\").ConfigureAwait(false);\n    }\n\n    private static async Task<bool?> IsAcFitForOc()\n    {\n        try\n        {\n            var result = await WMI.LenovoGameZoneData.IsACFitForOCAsync().ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Mode = {result}\");\n\n            return result == 1;\n        }\n        catch\n        {\n            return null;\n        }\n    }\n\n    private static async Task<bool?> IsChargingNormally()\n    {\n        try\n        {\n            var result = await WMI.LenovoGameZoneData.GetPowerChargeModeAsync().ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Mode = {result}\");\n\n            return result == 1;\n        }\n        catch\n        {\n            return null;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/Registry.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Linq;\nusing System.Management;\nusing System.Security.AccessControl;\nusing System.Security.Principal;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.System.Registry;\n\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class Registry\n{\n    public static IAsyncDisposable ObserveKey(string hive, string subKey, bool includeSubtreeChanges, Action handler)\n    {\n        var cancellationTokenSource = new CancellationTokenSource();\n        var task = Task.Run(() => Handler(cancellationTokenSource.Token), cancellationTokenSource.Token);\n\n        return new LambdaAsyncDisposable(async () =>\n        {\n            await cancellationTokenSource.CancelAsync().ConfigureAwait(false);\n            await task.ConfigureAwait(false);\n        });\n\n        void Handler(CancellationToken token)\n        {\n            try\n            {\n                using var baseKey = GetBaseKey(hive);\n                using var key = baseKey.OpenSubKey(subKey) ?? throw new InvalidOperationException($\"Key {subKey} could not be opened\");\n\n                var resetEvent = new ManualResetEvent(false);\n\n                while (true)\n                {\n                    var regNotifyChangeKeyValueResult = PInvoke.RegNotifyChangeKeyValue(key.Handle,\n                        includeSubtreeChanges,\n                        REG_NOTIFY_FILTER.REG_NOTIFY_CHANGE_LAST_SET | REG_NOTIFY_FILTER.REG_NOTIFY_THREAD_AGNOSTIC,\n                        resetEvent.SafeWaitHandle,\n                        true);\n                    if (regNotifyChangeKeyValueResult != WIN32_ERROR.NO_ERROR)\n                        PInvokeExtensions.ThrowIfWin32Error(\"RegNotifyChangeKeyValue\");\n\n                    WaitHandle.WaitAny([resetEvent, token.WaitHandle]);\n                    token.ThrowIfCancellationRequested();\n\n                    handler();\n\n                    resetEvent.Reset();\n                }\n            }\n            catch (OperationCanceledException) { }\n            catch (ThreadAbortException) { }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Unknown error.\", ex);\n            }\n        }\n    }\n\n    public static IDisposable ObserveValue(string hive, string path, string valueName, Action handler)\n    {\n        if (hive is \"HKEY_CURRENT_USER\" or \"HKCU\")\n            hive = WindowsIdentity.GetCurrent().User?.Value ?? throw new InvalidOperationException(\"Current user value is null\");\n\n        var pathFormatted = @$\"SELECT * FROM RegistryValueChangeEvent WHERE Hive = 'HKEY_USERS' AND KeyPath = '{hive}\\\\{path.Replace(@\"\\\", @\"\\\\\")}' AND ValueName = '{valueName}'\";\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Starting listener... [hive={hive}, pathFormatted={pathFormatted}, key={valueName}]\");\n\n        var watcher = new ManagementEventWatcher(pathFormatted);\n        watcher.EventArrived += (_, e) =>\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Event arrived [classPath={e.NewEvent.ClassPath}, hive={hive}, pathFormatted={pathFormatted}, key={valueName}]\");\n\n            handler();\n        };\n        watcher.Start();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Started listener [hive={hive}, pathFormatted={pathFormatted}, key={valueName}]\");\n\n        return watcher;\n    }\n\n    public static bool KeyExists(string hive, string subKey)\n    {\n        try\n        {\n            using var baseKey = GetBaseKey(hive);\n            using var registryKey = baseKey.OpenSubKey(subKey);\n            return registryKey is not null;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    public static bool ValueExists(string hive, string subKey, string valueName)\n    {\n        try\n        {\n            var keyName = Path.Combine(hive, subKey);\n            var value = Microsoft.Win32.Registry.GetValue(keyName, valueName, null);\n            return value is not null;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    public static string[] GetSubKeys(string hive, string subKey)\n    {\n        using var baseKey = GetBaseKey(hive);\n        return baseKey.OpenSubKey(subKey)?.GetSubKeyNames().Select(s => Path.Combine(subKey, s)).ToArray() ?? [];\n    }\n\n    public static T GetValue<T>(string hive, string subKey, string valueName, T defaultValue, bool doNotExpand = false)\n    {\n        using var baseKey = GetBaseKey(hive);\n        var value = baseKey.OpenSubKey(subKey)?.GetValue(valueName, defaultValue, doNotExpand ? RegistryValueOptions.DoNotExpandEnvironmentNames : RegistryValueOptions.None);\n\n        if (value is not T t)\n            return defaultValue;\n\n        return t;\n    }\n\n    public static void SetValue<T>(string hive, string subKey, string valueName, T value, bool fixPermissions = false, RegistryValueKind valueKind = RegistryValueKind.Unknown) where T : notnull\n    {\n        try\n        {\n            Microsoft.Win32.Registry.SetValue(@$\"{hive}\\{subKey}\", valueName, value, valueKind);\n        }\n        catch (UnauthorizedAccessException)\n        {\n            if (fixPermissions && AddPermissions(hive, subKey))\n                SetValue(hive, subKey, valueName, value, false, valueKind);\n            else\n                throw;\n        }\n    }\n\n    public static void Delete(string hive, string subKey)\n    {\n        using var baseKey = GetBaseKey(hive);\n        using var key = baseKey.OpenSubKey(subKey);\n        if (key is null)\n            return;\n        baseKey.DeleteSubKeyTree(subKey);\n    }\n\n    private static bool AddPermissions(string hive, string subKey)\n    {\n        IdentityReference? originalOwner = null;\n\n        try\n        {\n            var current = WindowsIdentity.GetCurrent();\n            // ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract\n            if (current is null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Could not get current user.\");\n\n                return false;\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Attempting to add permissions to {hive}\\\\{subKey} for {current.Name}...\");\n\n            var user = current.User;\n            if (user is null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Could not get current security identifier of user {current.Name}.\");\n\n                return false;\n            }\n\n            if (!TakeOwnership(hive, subKey, user, out originalOwner))\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Could not take ownership of {hive}\\\\{subKey}. [user={user}, originalOwner={originalOwner}]\");\n\n                return false;\n            }\n\n            using var baseKey = GetBaseKey(hive);\n            using var key = baseKey.OpenSubKey(subKey, RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.ChangePermissions | RegistryRights.ReadKey);\n            if (key is null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Failed to open key {hive}\\\\{subKey} for {current.Name}.\");\n\n                return false;\n            }\n\n            var accessControl = key.GetAccessControl();\n\n            const RegistryRights rights = RegistryRights.FullControl;\n            const AccessControlType type = AccessControlType.Allow;\n            accessControl.AddAccessRule(new(user, rights, type));\n            key.SetAccessControl(accessControl);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Permissions added on {hive}\\\\{subKey} for {current.Name}. [rights={rights}, type={type}]\");\n\n            return true;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to add permissions for {hive}\\\\{subKey}.\", ex);\n\n            throw;\n        }\n        finally\n        {\n            if (originalOwner is not null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Restoring ownership of {hive}\\\\{subKey} to {originalOwner}...\");\n\n                if (TakeOwnership(hive, subKey, originalOwner, out _))\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Ownership of {hive}\\\\{subKey} restored to {originalOwner}.\");\n                }\n                else\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Ownership of {hive}\\\\{subKey} NOT restored {originalOwner}.\");\n                }\n            }\n        }\n    }\n\n    private static bool TakeOwnership(string hive, string subKey, IdentityReference reference, out IdentityReference? previousIdentityReference)\n    {\n        previousIdentityReference = null;\n\n        try\n        {\n            if (!TokenManipulator.AddPrivileges(TokenManipulator.SE_BACKUP_PRIVILEGE, TokenManipulator.SE_RESTORE_PRIVILEGE, TokenManipulator.SE_TAKE_OWNERSHIP_PRIVILEGE))\n                return false;\n\n            using var baseKey = GetBaseKey(hive);\n            using var key = baseKey.OpenSubKey(subKey, RegistryKeyPermissionCheck.ReadWriteSubTree, RegistryRights.TakeOwnership);\n            if (key is null)\n                return false;\n\n            var accessControl = key.GetAccessControl();\n\n            previousIdentityReference = accessControl.GetOwner(typeof(NTAccount));\n            if (previousIdentityReference is null)\n                return false;\n\n            accessControl.SetOwner(reference);\n            key.SetAccessControl(accessControl);\n\n            return true;\n        }\n        finally\n        {\n            _ = TokenManipulator.RemovePrivileges(TokenManipulator.SE_BACKUP_PRIVILEGE, TokenManipulator.SE_RESTORE_PRIVILEGE, TokenManipulator.SE_TAKE_OWNERSHIP_PRIVILEGE);\n        }\n    }\n\n    private static RegistryKey GetBaseKey(string hive) => hive switch\n    {\n        \"HKLM\" or \"HKEY_LOCAL_MACHINE\" => Microsoft.Win32.Registry.LocalMachine,\n        \"HKCU\" or \"HKEY_CURRENT_USER\" => Microsoft.Win32.Registry.CurrentUser,\n        \"HKU\" or \"HKEY_USERS\" => Microsoft.Win32.Registry.Users,\n        \"HKCR\" or \"HKEY_CLASSES_ROOT \" => Microsoft.Win32.Registry.ClassesRoot,\n        \"HKCC\" or \"HKEY_CURRENT_CONFIG  \" => Microsoft.Win32.Registry.CurrentConfig,\n        _ => throw new ArgumentException(@\"Unknown hive.\", nameof(hive))\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/SystemPath.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Microsoft.Win32;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class SystemPath\n{\n    private static string CLIPath => Folders.Program;\n\n    public static bool HasCLI()\n    {\n        return Registry.GetValue(\"HKEY_CURRENT_USER\", \"Environment\", \"PATH\", string.Empty, true)\n            .Split(';')\n            .Contains(CLIPath);\n    }\n\n    public static void SetCLI(bool enabled)\n    {\n        var value = Registry.GetValue(\"HKEY_CURRENT_USER\", \"Environment\", \"PATH\", string.Empty, true)\n            .Split(';')\n            .ToList();\n\n        if (enabled)\n        {\n            if (value.Contains(CLIPath))\n                return;\n\n            value.Add(CLIPath);\n        }\n        else\n        {\n            value.Remove(CLIPath);\n        }\n\n        Registry.SetValue(\"HKEY_CURRENT_USER\",\n            \"Environment\",\n            \"PATH\",\n            string.Join(';', value),\n            valueKind: RegistryValueKind.ExpandString);\n\n        Notify();\n    }\n\n    private static unsafe void Notify()\n    {\n        const string environment = \"Environment\";\n        fixed (void* ptr = environment)\n        {\n            PInvoke.SendNotifyMessage(HWND.HWND_BROADCAST, PInvoke.WM_SETTINGCHANGE, 0, new IntPtr(ptr));\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/SystemTheme.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Runtime.InteropServices;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static partial class SystemTheme\n{\n    private const string REGISTRY_HIVE = \"HKEY_CURRENT_USER\";\n\n    private const string PERSONALIZE_REGISTRY_PATH = @\"Software\\Microsoft\\Windows\\CurrentVersion\\Themes\\Personalize\";\n    private const string APPS_USE_LIGHT_THEME_REGISTRY_KEY = \"AppsUseLightTheme\";\n\n    private const string DWM_REGISTRY_PATH = @\"Software\\Microsoft\\Windows\\DWM\";\n    private const string DWM_COLORIZATION_COLOR_REGISTRY_KEY = \"ColorizationColor\";\n\n    public static bool IsDarkMode()\n    {\n        var registryValue = Registry.GetValue(REGISTRY_HIVE, PERSONALIZE_REGISTRY_PATH, APPS_USE_LIGHT_THEME_REGISTRY_KEY, -1);\n        if (registryValue == -1)\n            throw new InvalidOperationException($\"Couldn't read the {APPS_USE_LIGHT_THEME_REGISTRY_KEY} setting\");\n\n        return registryValue == 0;\n    }\n\n    public static RGBColor GetColorizationColor()\n    {\n        var registryValue = Registry.GetValue(REGISTRY_HIVE, DWM_REGISTRY_PATH, DWM_COLORIZATION_COLOR_REGISTRY_KEY, -1);\n        if (registryValue == -1)\n            throw new InvalidOperationException($\"Couldn't read the {DWM_COLORIZATION_COLOR_REGISTRY_KEY} setting\");\n\n        var bytes = BitConverter.GetBytes(registryValue);\n        return new(bytes[2], bytes[1], bytes[0]);\n    }\n\n    public static RGBColor GetAccentColor()\n    {\n        var colorName = IsDarkMode() ? \"SystemAccentLight2\" : \"SystemAccentDark1\";\n        return GetUxThemeImmersiveColor(colorName);\n    }\n\n    private static RGBColor GetUxThemeImmersiveColor(string name)\n    {\n        var colorType = GetImmersiveColorTypeFromName(\"Immersive\" + name);\n\n        if (colorType == 0xFFFFFFFF)\n            throw new Win32Exception($\"Couldn't get color \\\"{name}\\\"\");\n\n        var activeColorSet = GetImmersiveUserColorSetPreference(false, false);\n        var nativeColor = GetImmersiveColorFromColorSetEx(activeColorSet, colorType, false, 0);\n\n        var r = (byte)((0x000000FF & nativeColor) >> 0);\n        var g = (byte)((0x0000FF00 & nativeColor) >> 8);\n        var b = (byte)((0x00FF0000 & nativeColor) >> 16);\n\n        return new(r, g, b);\n    }\n\n    internal static IDisposable GetDarkModeListener(Action callback)\n    {\n        return Registry.ObserveValue(REGISTRY_HIVE, PERSONALIZE_REGISTRY_PATH, APPS_USE_LIGHT_THEME_REGISTRY_KEY, callback);\n    }\n\n    internal static IDisposable GetColorizationColorListener(Action callback)\n    {\n        return Registry.ObserveValue(REGISTRY_HIVE, DWM_REGISTRY_PATH, DWM_COLORIZATION_COLOR_REGISTRY_KEY, callback);\n    }\n\n    #region Native\n\n    // ReSharper disable StringLiteralTypo\n\n    [LibraryImport(\"uxtheme.dll\", EntryPoint = \"#95A\")]\n    private static partial uint GetImmersiveColorFromColorSetEx(uint immersiveColorSet, uint immersiveColorType, [MarshalAs(UnmanagedType.Bool)] bool ignoreHighContrast, uint highContrastCacheMode);\n\n    [LibraryImport(\"uxtheme.dll\", EntryPoint = \"#96W\", StringMarshalling = StringMarshalling.Utf16)]\n    private static partial uint GetImmersiveColorTypeFromName(string name);\n\n    [LibraryImport(\"uxtheme.dll\", EntryPoint = \"#98A\")]\n    private static partial uint GetImmersiveUserColorSetPreference([MarshalAs(UnmanagedType.Bool)] bool forceCheckRegistry, [MarshalAs(UnmanagedType.Bool)] bool skipCheckOnFail);\n\n    // ReSharper restore StringLiteralTypo\n\n    #endregion\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/System/WiFi.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing ManagedNativeWifi;\n\nnamespace LenovoLegionToolkit.Lib.System;\n\npublic static class WiFi\n{\n    public static void TurnOn()\n    {\n        try\n        {\n            NativeWifi.EnumerateInterfaces()\n            .ForEach(i => NativeWifi.TurnOnInterfaceRadio(i.Id));\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to turn on WiFi.\", ex);\n        }\n    }\n\n    public static void TurnOff()\n    {\n        try\n        {\n            NativeWifi.EnumerateInterfaces()\n                .ForEach(i => NativeWifi.TurnOffInterfaceRadio(i.Id));\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to turn off WiFi.\", ex);\n        }\n    }\n\n    public static string? GetConnectedNetworkSsid()\n    {\n        return NativeWifi.EnumerateConnectedNetworkSsids()\n            .Select(c => c.ToString())\n            .FirstOrDefault();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/Compatibility.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing System.Text.RegularExpressions;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.System.Power;\n\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic static partial class Compatibility\n{\n    [GeneratedRegex(\"^[A-Z0-9]{4}\")]\n    private static partial Regex BiosPrefixRegex();\n\n    [GeneratedRegex(\"[0-9]{2}\")]\n    private static partial Regex BiosVersionRegex();\n\n    private const string ALLOWED_VENDOR = \"LENOVO\";\n\n    private static readonly string[] AllowedModelsPrefix = [\n        // Worldwide variants\n        \"17ACH\",\n        \"17ARH\",\n        \"17ITH\",\n        \"17IMH\",\n\n        \"16ACH\",\n        \"16AHP\",\n        \"16APH\",\n        \"16ARH\",\n        \"16ARP\",\n        \"16ARX\",\n        \"16IAH\",\n        \"16IAX\",\n        \"16IRH\",\n        \"16IRX\",\n        \"16ITH\",\n\n        \"15ACH\",\n        \"15AHP\",\n        \"15APH\",\n        \"15ARH\",\n        \"15ARP\",\n        \"15IAH\",\n        \"15IAX\",\n        \"15IHU\",\n        \"15IMH\",\n        \"15IRH\",\n        \"15ITH\",\n\n        \"14APH\",\n        \"14IRP\",\n\n        // Chinese variants\n        \"G5000\",\n        \"R9000\",\n        \"R7000\",\n        \"Y9000\",\n        \"Y7000\",\n            \n        // Limited compatibility\n        \"17IR\",\n        \"15IR\",\n        \"15IC\",\n        \"15IK\"\n    ];\n\n    private static MachineInformation? _machineInformation;\n\n    public static Task<bool> CheckBasicCompatibilityAsync() => WMI.LenovoGameZoneData.ExistsAsync();\n\n    public static async Task<(bool isCompatible, MachineInformation machineInformation)> IsCompatibleAsync()\n    {\n        var mi = await GetMachineInformationAsync().ConfigureAwait(false);\n\n        if (!await CheckBasicCompatibilityAsync().ConfigureAwait(false))\n            return (false, mi);\n\n        if (!mi.Vendor.Equals(ALLOWED_VENDOR, StringComparison.InvariantCultureIgnoreCase))\n            return (false, mi);\n\n        foreach (var allowedModel in AllowedModelsPrefix)\n            if (mi.Model.Contains(allowedModel, StringComparison.InvariantCultureIgnoreCase))\n                return (true, mi);\n\n        return (false, mi);\n    }\n\n    public static async Task<MachineInformation> GetMachineInformationAsync()\n    {\n        if (_machineInformation.HasValue)\n            return _machineInformation.Value;\n\n        var (vendor, machineType, model, serialNumber) = await GetModelDataAsync().ConfigureAwait(false);\n        var (biosVersion, biosVersionRaw) = GetBIOSVersion();\n        var supportedPowerModes = (await GetSupportedPowerModesAsync().ConfigureAwait(false)).ToArray();\n        var smartFanVersion = await GetSmartFanVersionAsync().ConfigureAwait(false);\n        var legionZoneVersion = await GetLegionZoneVersionAsync().ConfigureAwait(false);\n        var features = await GetFeaturesAsync().ConfigureAwait(false);\n\n        var machineInformation = new MachineInformation\n        {\n            Vendor = vendor,\n            MachineType = machineType,\n            Model = model,\n            SerialNumber = serialNumber,\n            BiosVersion = biosVersion,\n            BiosVersionRaw = biosVersionRaw,\n            SupportedPowerModes = supportedPowerModes,\n            SmartFanVersion = smartFanVersion,\n            LegionZoneVersion = legionZoneVersion,\n            Features = features,\n            Properties = new()\n            {\n                SupportsAlwaysOnAc = GetAlwaysOnAcStatus(),\n                SupportsGodModeV1 = GetSupportsGodModeV1(supportedPowerModes, smartFanVersion, legionZoneVersion, biosVersion),\n                SupportsGodModeV2 = GetSupportsGodModeV2(supportedPowerModes, smartFanVersion, legionZoneVersion),\n                SupportsGSync = await GetSupportsGSyncAsync().ConfigureAwait(false),\n                SupportsIGPUMode = await GetSupportsIGPUModeAsync().ConfigureAwait(false),\n                SupportsAIMode = await GetSupportsAIModeAsync().ConfigureAwait(false),\n                SupportBootLogoChange = GetSupportBootLogoChange(smartFanVersion),\n                HasQuietToPerformanceModeSwitchingBug = GetHasQuietToPerformanceModeSwitchingBug(biosVersion),\n                HasGodModeToOtherModeSwitchingBug = GetHasGodModeToOtherModeSwitchingBug(biosVersion),\n                IsExcludedFromLenovoLighting = GetIsExcludedFromLenovoLighting(biosVersion),\n                IsExcludedFromPanelLogoLenovoLighting = GetIsExcludedFromPanelLenovoLighting(machineType, model),\n                HasAlternativeFullSpectrumLayout = GetHasAlternativeFullSpectrumLayout(machineType),\n            }\n        };\n\n        if (Log.Instance.IsTraceEnabled)\n        {\n            Log.Instance.Trace($\"Retrieved machine information:\");\n            Log.Instance.Trace($\" * Vendor: '{machineInformation.Vendor}'\");\n            Log.Instance.Trace($\" * Machine Type: '{machineInformation.MachineType}'\");\n            Log.Instance.Trace($\" * Model: '{machineInformation.Model}'\");\n            Log.Instance.Trace($\" * BIOS: '{machineInformation.BiosVersion}' [{machineInformation.BiosVersionRaw}]\");\n            Log.Instance.Trace($\" * SupportedPowerModes: '{string.Join(\",\", machineInformation.SupportedPowerModes)}'\");\n            Log.Instance.Trace($\" * SmartFanVersion: '{machineInformation.SmartFanVersion}'\");\n            Log.Instance.Trace($\" * LegionZoneVersion: '{machineInformation.LegionZoneVersion}'\");\n            Log.Instance.Trace($\" * Features: {machineInformation.Features.Source}:{string.Join(',', machineInformation.Features.All)}\");\n            Log.Instance.Trace($\" * Properties:\");\n            Log.Instance.Trace($\"     * SupportsAlwaysOnAc: '{machineInformation.Properties.SupportsAlwaysOnAc.status}, {machineInformation.Properties.SupportsAlwaysOnAc.connectivity}'\");\n            Log.Instance.Trace($\"     * SupportsGodModeV1: '{machineInformation.Properties.SupportsGodModeV1}'\");\n            Log.Instance.Trace($\"     * SupportsGodModeV2: '{machineInformation.Properties.SupportsGodModeV2}'\");\n            Log.Instance.Trace($\"     * SupportsGSync: '{machineInformation.Properties.SupportsGSync}'\");\n            Log.Instance.Trace($\"     * SupportsIGPUMode: '{machineInformation.Properties.SupportsIGPUMode}'\");\n            Log.Instance.Trace($\"     * SupportsAIMode: '{machineInformation.Properties.SupportsAIMode}'\");\n            Log.Instance.Trace($\"     * SupportBootLogoChange: '{machineInformation.Properties.SupportBootLogoChange}'\");\n            Log.Instance.Trace($\"     * HasQuietToPerformanceModeSwitchingBug: '{machineInformation.Properties.HasQuietToPerformanceModeSwitchingBug}'\");\n            Log.Instance.Trace($\"     * HasGodModeToOtherModeSwitchingBug: '{machineInformation.Properties.HasGodModeToOtherModeSwitchingBug}'\");\n            Log.Instance.Trace($\"     * IsExcludedFromLenovoLighting: '{machineInformation.Properties.IsExcludedFromLenovoLighting}'\");\n            Log.Instance.Trace($\"     * IsExcludedFromPanelLogoLenovoLighting: '{machineInformation.Properties.IsExcludedFromPanelLogoLenovoLighting}'\");\n            Log.Instance.Trace($\"     * HasAlternativeFullSpectrumLayout: '{machineInformation.Properties.HasAlternativeFullSpectrumLayout}'\");\n        }\n\n        return (_machineInformation = machineInformation).Value;\n    }\n\n    private static Task<(string, string, string, string)> GetModelDataAsync() => WMI.Win32.ComputerSystemProduct.ReadAsync();\n\n    private static (BiosVersion?, string?) GetBIOSVersion()\n    {\n        var result = Registry.GetValue(\"HKEY_LOCAL_MACHINE\", \"HARDWARE\\\\DESCRIPTION\\\\System\\\\BIOS\", \"BIOSVersion\", string.Empty).Trim();\n\n        var prefixRegex = BiosPrefixRegex();\n        var versionRegex = BiosVersionRegex();\n\n        var prefix = prefixRegex.Match(result).Value;\n        var versionString = versionRegex.Match(result).Value;\n\n        if (!int.TryParse(versionRegex.Match(versionString).Value, out var version))\n            return (null, null);\n\n        return (new(prefix, version), result);\n    }\n\n    private static async Task<MachineInformation.FeatureData> GetFeaturesAsync()\n    {\n        try\n        {\n            var capabilities = await WMI.LenovoCapabilityData00.ReadAsync().ConfigureAwait(false);\n            return new(MachineInformation.FeatureData.SourceType.CapabilityData, capabilities);\n        }\n        catch { /* Ignored. */ }\n\n        try\n        {\n            var featureFlags = await WMI.LenovoOtherMethod.GetLegionDeviceSupportFeatureAsync().ConfigureAwait(false);\n\n            return new(MachineInformation.FeatureData.SourceType.Flags)\n            {\n                [CapabilityID.IGPUMode] = featureFlags.IsBitSet(0),\n                [CapabilityID.NvidiaGPUDynamicDisplaySwitching] = featureFlags.IsBitSet(4),\n                [CapabilityID.InstantBootAc] = featureFlags.IsBitSet(5),\n                [CapabilityID.InstantBootUsbPowerDelivery] = featureFlags.IsBitSet(6),\n                [CapabilityID.AMDSmartShiftMode] = featureFlags.IsBitSet(7),\n                [CapabilityID.AMDSkinTemperatureTracking] = featureFlags.IsBitSet(8),\n                [CapabilityID.FlipToStart] = true,\n                [CapabilityID.OverDrive] = true\n            };\n        }\n        catch { /* Ignored. */ }\n\n        return MachineInformation.FeatureData.Unknown;\n    }\n\n    private static async Task<IEnumerable<PowerModeState>> GetSupportedPowerModesAsync()\n    {\n        try\n        {\n            var powerModes = new List<PowerModeState>();\n\n            var value = await WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.SupportedPowerModes).ConfigureAwait(false);\n\n            if (value.IsBitSet(0))\n                powerModes.Add(PowerModeState.Quiet);\n            if (value.IsBitSet(1))\n                powerModes.Add(PowerModeState.Balance);\n            if (value.IsBitSet(2))\n                powerModes.Add(PowerModeState.Performance);\n            if (value.IsBitSet(16))\n                powerModes.Add(PowerModeState.GodMode);\n\n            return powerModes;\n        }\n        catch { /* Ignored. */ }\n\n        try\n        {\n            var powerModes = new List<PowerModeState>();\n\n            var result = await WMI.LenovoOtherMethod.GetSupportThermalModeAsync().ConfigureAwait(false);\n\n            if (result.IsBitSet(0))\n                powerModes.Add(PowerModeState.Quiet);\n            if (result.IsBitSet(1))\n                powerModes.Add(PowerModeState.Balance);\n            if (result.IsBitSet(2))\n                powerModes.Add(PowerModeState.Performance);\n            if (result.IsBitSet(16))\n                powerModes.Add(PowerModeState.GodMode);\n\n            return powerModes;\n        }\n        catch { /* Ignored. */ }\n\n        return [];\n    }\n\n    private static async Task<int> GetSmartFanVersionAsync()\n    {\n        try\n        {\n            return await WMI.LenovoGameZoneData.IsSupportSmartFanAsync().ConfigureAwait(false);\n        }\n        catch { /* Ignored. */ }\n\n        return -1;\n    }\n\n    private static async Task<int> GetLegionZoneVersionAsync()\n    {\n        try\n        {\n            return await WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.LegionZoneSupportVersion).ConfigureAwait(false);\n        }\n        catch { /* Ignored. */ }\n\n        try\n        {\n            return await WMI.LenovoOtherMethod.GetSupportLegionZoneVersionAsync().ConfigureAwait(false);\n        }\n        catch { /* Ignored. */ }\n\n        return -1;\n    }\n\n    private static unsafe (bool status, bool connectivity) GetAlwaysOnAcStatus()\n    {\n        var capabilities = new SYSTEM_POWER_CAPABILITIES();\n        var result = PInvoke.CallNtPowerInformation(POWER_INFORMATION_LEVEL.SystemPowerCapabilities,\n            null,\n            0,\n            &capabilities,\n            (uint)Marshal.SizeOf<SYSTEM_POWER_CAPABILITIES>());\n\n        if (result.SeverityCode == NTSTATUS.Severity.Success)\n            return (false, false);\n\n        return (capabilities.AoAc, capabilities.AoAcConnectivitySupported);\n    }\n\n    private static bool GetSupportsGodModeV1(IEnumerable<PowerModeState> supportedPowerModes, int smartFanVersion, int legionZoneVersion, BiosVersion? biosVersion)\n    {\n        if (!supportedPowerModes.Contains(PowerModeState.GodMode))\n            return false;\n\n        var affectedBiosVersions = new BiosVersion[]\n        {\n            new(\"G9CN\", 24),\n            new(\"GKCN\", 46),\n            new(\"H1CN\", 39),\n            new(\"HACN\", 31),\n            new(\"HHCN\", 20)\n        };\n\n        if (affectedBiosVersions.Any(bv => biosVersion?.IsLowerThan(bv) ?? false))\n            return false;\n\n        return smartFanVersion is 4 or 5 || legionZoneVersion is 1 or 2;\n    }\n\n    private static bool GetSupportsGodModeV2(IEnumerable<PowerModeState> supportedPowerModes, int smartFanVersion, int legionZoneVersion)\n    {\n        if (!supportedPowerModes.Contains(PowerModeState.GodMode))\n            return false;\n\n        return smartFanVersion is 6 or 7 || legionZoneVersion is 3 or 4;\n    }\n\n    private static async Task<bool> GetSupportsGSyncAsync()\n    {\n        try\n        {\n            return await WMI.LenovoGameZoneData.IsSupportGSyncAsync().ConfigureAwait(false) > 0;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    private static async Task<bool> GetSupportsIGPUModeAsync()\n    {\n        try\n        {\n            return await WMI.LenovoGameZoneData.IsSupportIGPUModeAsync().ConfigureAwait(false) > 0;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    private static async Task<bool> GetSupportsAIModeAsync()\n    {\n        try\n        {\n            await WMI.LenovoGameZoneData.GetIntelligentSubModeAsync().ConfigureAwait(false);\n            return true;\n        }\n        catch\n        {\n            return false;\n        }\n    }\n\n    private static bool GetSupportBootLogoChange(int smartFanVersion) => smartFanVersion < 8;\n\n    private static bool GetHasQuietToPerformanceModeSwitchingBug(BiosVersion? biosVersion)\n    {\n        var affectedBiosVersions = new BiosVersion[]\n        {\n            new(\"J2CN\", null)\n        };\n\n        return affectedBiosVersions.Any(bv => biosVersion?.IsHigherOrEqualThan(bv) ?? false);\n    }\n\n    private static bool GetHasGodModeToOtherModeSwitchingBug(BiosVersion? biosVersion)\n    {\n        var affectedBiosVersions = new BiosVersion[]\n        {\n            new(\"K1CN\", null)\n        };\n\n        return affectedBiosVersions.Any(bv => biosVersion?.IsHigherOrEqualThan(bv) ?? false);\n    }\n\n    private static bool GetIsExcludedFromLenovoLighting(BiosVersion? biosVersion)\n    {\n        var affectedBiosVersions = new BiosVersion[]\n        {\n            new(\"GKCN\", 54)\n        };\n\n        return affectedBiosVersions.Any(bv => biosVersion?.IsLowerThan(bv) ?? false);\n    }\n\n    private static bool GetIsExcludedFromPanelLenovoLighting(string machineType, string model)\n    {\n        (string machineType, string model)[] excludedModels =\n        [\n            (\"82JH\", \"15ITH6H\"),\n            (\"82JK\", \"15ITH6\"),\n            (\"82JM\", \"17ITH6H\"),\n            (\"82JN\", \"17ITH6\"),\n            (\"82JU\", \"15ACH6H\"),\n            (\"82JW\", \"15ACH6\"),\n            (\"82JY\", \"17ACH6H\"),\n            (\"82K0\", \"17ACH6\"),\n            (\"82K1\", \"15IHU6\"),\n            (\"82K2\", \"15ACH6\"),\n            (\"82NW\", \"15ACH6A\")\n        ];\n\n        return excludedModels.Where(m =>\n        {\n            var result = machineType.Contains(m.machineType);\n            result &= model.Contains(m.model);\n            return result;\n        }).Any();\n    }\n\n    private static bool GetHasAlternativeFullSpectrumLayout(string machineType)\n    {\n        var machineTypes = new[]\n        {\n            \"83G0\", // Gen 9\n            \"83AG\"  // Gen 8\n        };\n        return machineTypes.Contains(machineType);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/Crc32Adler.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic static class Crc32Adler\n{\n    private static readonly uint[] LookUpTable = [\n        0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, 0x706AF48F, 0xE963A535, 0x9E6495A3,\n        0x0EDB8832, 0x79DCB8A4, 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, 0x90BF1D91,\n        0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7,\n        0x136C9856, 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, 0xFA0F3D63, 0x8D080DF5,\n        0x3B6E20C8, 0x4C69105E, 0xD56041E4, 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n        0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, 0x45DF5C75, 0xDCD60DCF, 0xABD13D59,\n        0x26D930AC, 0x51DE003A, 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, 0xB8BDA50F,\n        0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D,\n        0x76DC4190, 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, 0x9FBFE4A5, 0xE8B8D433,\n        0x7807C9A2, 0x0F00F934, 0x9609A88E, 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n        0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, 0x1B01A57B, 0x8208F4C1, 0xF50FC457,\n        0x65B0D9C6, 0x12B7E950, 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, 0xFBD44C65,\n        0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB,\n        0x4369E96A, 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, 0xAA0A4C5F, 0xDD0D7CC9,\n        0x5005713C, 0x270241AA, 0xBE0B1010, 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n        0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD,\n        0xEDB88320, 0x9ABFB3B6, 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, 0x73DC1683,\n        0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1,\n        0xF00F9344, 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, 0x196C3671, 0x6E6B06E7,\n        0xFED41B76, 0x89D32BE0, 0x10DA7A5A, 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n        0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, 0xA6BC5767, 0x3FB506DD, 0x48B2364B,\n        0xD80D2BDA, 0xAF0A1B4C, 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, 0x4669BE79,\n        0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F,\n        0xC5BA3BBE, 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, 0x2CD99E8B, 0x5BDEAE1D,\n        0x9B64C2B0, 0xEC63F226, 0x756AA39C, 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n        0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21,\n        0x86D3D2D4, 0xF1D4E242, 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, 0x18B74777,\n        0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45,\n        0xA00AE278, 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, 0x4969474D, 0x3E6E77DB,\n        0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n        0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF,\n        0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D\n    ];\n\n    public static uint Calculate(string path, int length = 512)\n    {\n        var buffer = new byte[length];\n        using var fs = File.Open(path, FileMode.Open);\n        _ = fs.Read(buffer);\n        return Calculate(buffer);\n    }\n\n    private static uint Calculate(IEnumerable<byte> data) => ~data.Aggregate(0xFFFFFFFF, (current, d) => LookUpTable[(current ^ d) & 0xFF] ^ (current >> 8));\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/Folders.cs",
    "content": "﻿using System;\nusing System.IO;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic static class Folders\n{\n    public static string Program => AppDomain.CurrentDomain.SetupInformation.ApplicationBase ?? string.Empty;\n\n    public static string AppData\n    {\n        get\n        {\n            var appData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);\n            var folderPath = Path.Combine(appData, \"LenovoLegionToolkit\");\n            Directory.CreateDirectory(folderPath);\n            return folderPath;\n        }\n    }\n\n    public static string Temp\n    {\n        get\n        {\n            var appData = Path.GetTempPath();\n            var folderPath = Path.Combine(appData, \"LenovoLegionToolkit\");\n            Directory.CreateDirectory(folderPath);\n            return folderPath;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/IMainThreadDispatcher.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic interface IMainThreadDispatcher\n{\n    void Dispatch(Action callback);\n\n    Task DispatchAsync(Func<Task> callback);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/LambdaAsyncDisposable.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class LambdaAsyncDisposable(Func<Task> action) : IAsyncDisposable\n{\n    public async ValueTask DisposeAsync()\n    {\n        GC.SuppressFinalize(this);\n        await action().ConfigureAwait(false);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/LambdaDisposable.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class LambdaDisposable(Action action) : IDisposable\n{\n    public void Dispose()\n    {\n        GC.SuppressFinalize(this);\n        action();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/Log.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Runtime.CompilerServices;\nusing System.Text;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class Log\n{\n    private static Log? _instance;\n    public static Log Instance\n    {\n        get\n        {\n            _instance ??= new Log();\n            return _instance;\n        }\n    }\n\n    private readonly object _lock = new();\n    private readonly string _folderPath;\n    private readonly string _logPath;\n\n    public bool IsTraceEnabled { get; set; }\n\n    public string LogPath => _logPath;\n\n    private Log()\n    {\n        _folderPath = Path.Combine(Folders.AppData, \"log\");\n        Directory.CreateDirectory(_folderPath);\n        _logPath = Path.Combine(_folderPath, $\"log_{DateTime.UtcNow:yyyy_MM_dd_HH_mm_ss}.txt\");\n    }\n\n    public void ErrorReport(string header, Exception ex)\n    {\n        var errorReportPath = Path.Combine(_folderPath, $\"error_{DateTime.UtcNow:yyyy_MM_dd_HH_mm_ss}.txt\");\n        File.AppendAllLines(errorReportPath, [header, Serialize(ex)]);\n    }\n\n    public void Trace(FormattableString message,\n        Exception? ex = null,\n        [CallerFilePath] string? file = null,\n        [CallerLineNumber] int lineNumber = -1,\n        [CallerMemberName] string? caller = null)\n    {\n        if (!IsTraceEnabled)\n            return;\n\n        LogInternal(_logPath, message, ex, file, lineNumber, caller);\n    }\n\n    private void LogInternal(string path,\n        FormattableString message,\n        Exception? ex,\n        string? file,\n        int lineNumber,\n        string? caller)\n    {\n        lock (_lock)\n        {\n            var lines = new List<string>\n            {\n                $\"[{DateTime.UtcNow:dd/MM/yyyy HH:mm:ss.fff}] [{Environment.CurrentManagedThreadId}] [{Path.GetFileName(file)}#{lineNumber}:{caller}] {message}\"\n            };\n            if (ex is not null)\n                lines.Add(Serialize(ex));\n\n#if DEBUG\n            foreach (var line in lines)\n                Debug.WriteLine(line);\n#endif\n\n            File.AppendAllLines(path, lines);\n        }\n    }\n\n    private static string Serialize(Exception ex) => new StringBuilder()\n        .AppendLine(\"=== Exception ===\")\n        .AppendLine(ex.ToString())\n        .AppendLine()\n        .AppendLine(\"=== Exception demystified ===\")\n        .AppendLine(ex.ToStringDemystified())\n        .ToString();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/NullSafeHandle.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic sealed class NullSafeHandle() : SafeHandle(IntPtr.Zero, true)\n{\n    public static readonly NullSafeHandle Null = new();\n\n    public override bool IsInvalid => false;\n\n    protected override bool ReleaseHandle() => true;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/RetryHelper.cs",
    "content": "﻿using System;\nusing System.Runtime.CompilerServices;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class MaximumRetriesReachedException : Exception;\n\npublic static class RetryHelper\n{\n    public static async Task RetryAsync(Func<Task> action,\n        int? maximumRetries = null,\n        TimeSpan? timeout = null,\n        Func<Exception, bool>? matchingException = null,\n        [CallerMemberName] string? tag = null)\n    {\n        maximumRetries ??= 3;\n        timeout ??= TimeSpan.Zero;\n        matchingException ??= (_) => true;\n\n        var retries = 0;\n        var success = false;\n\n        while (!success)\n        {\n            try\n            {\n                if (retries >= maximumRetries)\n                    throw new MaximumRetriesReachedException();\n\n                await action().ConfigureAwait(false);\n                success = true;\n            }\n            catch (Exception ex)\n            {\n                if (!matchingException(ex))\n                    throw;\n\n                retries++;\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Retrying {retries}/{maximumRetries}... [tag={tag}]\");\n\n                await Task.Delay(timeout.Value).ConfigureAwait(false);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/SafePerformanceCounter.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class SafePerformanceCounter(string categoryName, string counterName, string instanceName)\n{\n    private PerformanceCounter? _performanceCounter;\n\n    public float NextValue()\n    {\n        try\n        {\n            TryCreateIfNeeded();\n            return _performanceCounter?.NextValue() ?? 0f;\n        }\n        catch\n        {\n            return 0f;\n        }\n    }\n\n    public void Reset()\n    {\n        _performanceCounter = null;\n        _ = NextValue();\n    }\n\n    private void TryCreateIfNeeded()\n    {\n        if (_performanceCounter is not null)\n            return;\n\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Creating performance counter. [categoryName={categoryName}, counterName={counterName}, instanceName={instanceName}]\");\n\n            _performanceCounter = new(categoryName, counterName, instanceName);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to create performance counter. [categoryName={categoryName}, counterName={counterName}, instanceName={instanceName}]\", ex);\n\n            _performanceCounter = null;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/StructSafeHandle.cs",
    "content": "﻿using System;\nusing System.Runtime.InteropServices;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic sealed class StructSafeHandle<T> : SafeHandle where T : struct\n{\n    private readonly IntPtr _ptr;\n\n    public StructSafeHandle(T str) : base(IntPtr.Zero, true)\n    {\n        var size = Marshal.SizeOf(typeof(T));\n        var ptr = Marshal.AllocHGlobal(size);\n        Marshal.StructureToPtr(str, ptr, false);\n        SetHandle(ptr);\n        _ptr = ptr;\n    }\n\n    public override bool IsInvalid => handle == IntPtr.Zero;\n\n    protected override bool ReleaseHandle()\n    {\n        Marshal.FreeHGlobal(_ptr);\n        return true;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/SunriseSunset.cs",
    "content": "﻿using System;\nusing System.Text.Json.Nodes;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing CoordinateSharp;\nusing LenovoLegionToolkit.Lib.Settings;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class SunriseSunset(SunriseSunsetSettings settings, HttpClientFactory httpClientFactory)\n{\n    public async Task<(Time?, Time?)> GetSunriseSunsetAsync(CancellationToken token = default)\n    {\n        var (sunrise, sunset) = (settings.Store.Sunrise, settings.Store.Sunset);\n        if (settings.Store.LastCheckDateTime == DateTime.Today && sunrise is not null && sunset is not null)\n            return (sunrise, sunset);\n\n        var coordinate = await GetGeoLocationAsync(token).ConfigureAwait(false);\n\n        if (coordinate is null)\n            return (null, null);\n\n        (sunrise, sunset) = CalculateSunriseSunset(coordinate);\n\n        settings.Store.LastCheckDateTime = DateTime.UtcNow;\n        settings.Store.Sunrise = sunrise;\n        settings.Store.Sunset = sunset;\n        settings.SynchronizeStore();\n\n        return (sunrise, sunset);\n    }\n\n    private async Task<Coordinate?> GetGeoLocationAsync(CancellationToken token)\n    {\n        try\n        {\n            using var httpClient = httpClientFactory.Create();\n            var responseJson = await httpClient.GetStringAsync(\"http://ip-api.com/json?fields=lat,lon\", token).ConfigureAwait(false);\n            var responseJsonNode = JsonNode.Parse(responseJson);\n            if (responseJsonNode is not null && double.TryParse(responseJsonNode[\"lat\"]?.ToString(), out var lat) && double.TryParse(responseJsonNode[\"lon\"]?.ToString(), out var lon))\n                return new Coordinate(lat, lon, DateTime.UtcNow);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to get geolocation.\", ex);\n        }\n\n        return null;\n    }\n\n    private static (Time?, Time?) CalculateSunriseSunset(Coordinate coordinate)\n    {\n        var sunrise = coordinate.CelestialInfo.SunRise;\n        var sunset = coordinate.CelestialInfo.SunSet;\n\n        if (sunrise is null || sunset is null)\n            return (null, null);\n\n        return (new Time(sunrise.Value.Hour, sunrise.Value.Minute), new Time(sunset.Value.Hour, sunset.Value.Minute));\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/ThreadSafeBool.cs",
    "content": "﻿using System.Threading;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class ThreadSafeBool\n{\n    private int _threadSafeBoolBackValue;\n\n    public bool Value\n    {\n        get => Interlocked.CompareExchange(ref _threadSafeBoolBackValue, 1, 1) == 1;\n        set\n        {\n            if (value)\n                Interlocked.CompareExchange(ref _threadSafeBoolBackValue, 1, 0);\n            else\n                Interlocked.CompareExchange(ref _threadSafeBoolBackValue, 0, 1);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/ThreadSafeCounter.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class ThreadSafeCounter\n{\n    private readonly object _lock = new();\n\n    private int _counter;\n\n    public bool Decrement()\n    {\n        lock (_lock)\n        {\n            var value = _counter < 1;\n            _counter = Math.Max(0, _counter - 1);\n            return value;\n        }\n    }\n\n    public void Increment()\n    {\n        lock (_lock)\n        {\n            _counter++;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/ThrottleFirstDispatcher.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing NeoSmart.AsyncLock;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class ThrottleFirstDispatcher(TimeSpan interval, string? tag = null)\n{\n    private readonly AsyncLock _lock = new();\n\n    private DateTime _lastEvent = DateTime.MinValue;\n\n    public async Task DispatchAsync(Func<Task> task)\n    {\n        using (await _lock.LockAsync().ConfigureAwait(false))\n        {\n            var diff = DateTime.UtcNow - _lastEvent;\n\n            if (diff < interval)\n            {\n                if (tag is not null && Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Throttling... [tag={tag}, diff={diff.TotalMilliseconds}ms]\");\n\n                return;\n            }\n\n            if (tag is not null && Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Allowing... [tag={tag}, diff={diff.TotalMilliseconds}ms]\");\n\n            await task().ConfigureAwait(false);\n\n            _lastEvent = DateTime.UtcNow;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/ThrottleLastDispatcher.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class ThrottleLastDispatcher(TimeSpan interval, string? tag = null)\n{\n    private CancellationTokenSource? _cancellationTokenSource;\n\n    public async Task DispatchAsync(Func<Task> task)\n    {\n        try\n        {\n            if (_cancellationTokenSource is not null)\n                await _cancellationTokenSource.CancelAsync().ConfigureAwait(false);\n\n            _cancellationTokenSource = new();\n\n            var token = _cancellationTokenSource.Token;\n\n            await Task.Delay(interval, token).ConfigureAwait(false);\n            token.ThrowIfCancellationRequested();\n\n            if (tag is not null && Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Allowing... [tag={tag}]\");\n\n            await task().ConfigureAwait(false);\n        }\n        catch (OperationCanceledException)\n        {\n            if (tag is not null && Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Throttling... [tag={tag}]\");\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/TokenManipulator.cs",
    "content": "﻿using System.Linq;\nusing Microsoft.Win32.SafeHandles;\nusing Windows.Win32;\nusing Windows.Win32.Security;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic static class TokenManipulator\n{\n    public const string SE_BACKUP_PRIVILEGE = \"SeBackupPrivilege\";\n    public const string SE_RESTORE_PRIVILEGE = \"SeRestorePrivilege\";\n    public const string SE_TAKE_OWNERSHIP_PRIVILEGE = \"SeTakeOwnershipPrivilege\";\n    public const string SE_SYSTEM_ENVIRONMENT_PRIVILEGE = \"SeSystemEnvironmentPrivilege\";\n\n    public static bool AddPrivileges(params string[] privileges) => AdjustPrivileges(privileges, true);\n\n    public static bool RemovePrivileges(params string[] privileges) => AdjustPrivileges(privileges, true);\n\n    private static bool AdjustPrivileges(string[] privileges, bool enable)\n    {\n        SafeProcessHandle? safeHandle = null;\n        SafeFileHandle? safeTokenHandle = null;\n\n        try\n        {\n            safeHandle = new SafeProcessHandle(PInvoke.GetCurrentProcess(), true);\n            if (!PInvoke.OpenProcessToken(safeHandle, TOKEN_ACCESS_MASK.TOKEN_ADJUST_PRIVILEGES | TOKEN_ACCESS_MASK.TOKEN_QUERY, out safeTokenHandle) && safeTokenHandle is null)\n                return false;\n\n            return privileges.All(p => AdjustPrivilege(safeTokenHandle, p, enable));\n        }\n        finally\n        {\n            safeTokenHandle?.Dispose();\n            safeHandle?.Dispose();\n        }\n    }\n\n    private static unsafe bool AdjustPrivilege(SafeFileHandle safeTokenHandle, string privilegeName, bool enable)\n    {\n        PInvoke.LookupPrivilegeValue(null, privilegeName, out var luid);\n\n        var state = new TOKEN_PRIVILEGES { PrivilegeCount = 1 };\n        state.Privileges[0] = new LUID_AND_ATTRIBUTES\n        {\n            Luid = luid,\n            Attributes = enable ? TOKEN_PRIVILEGES_ATTRIBUTES.SE_PRIVILEGE_ENABLED : 0\n        };\n\n        return PInvoke.AdjustTokenPrivileges(safeTokenHandle, false, &state, 0, null, null);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/UpdateChecker.cs",
    "content": "﻿using System;\nusing System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing NeoSmart.AsyncLock;\nusing Octokit;\nusing Octokit.Internal;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class UpdateChecker\n{\n    private readonly HttpClientFactory _httpClientFactory;\n    private readonly UpdateCheckSettings _updateCheckSettings = IoCContainer.Resolve<UpdateCheckSettings>();\n    private readonly AsyncLock _updateSemaphore = new();\n\n    private DateTime _lastUpdate;\n    private TimeSpan _minimumTimeSpanForRefresh;\n    private Update[] _updates = [];\n\n    public bool Disable { get; set; }\n    public UpdateCheckStatus Status { get; set; }\n\n    public UpdateChecker(HttpClientFactory httpClientFactory)\n    {\n        _httpClientFactory = httpClientFactory;\n\n        UpdateMinimumTimeSpanForRefresh();\n        _lastUpdate = _updateCheckSettings.Store.LastUpdateCheckDateTime ?? DateTime.MinValue;\n    }\n\n    public async Task<Version?> CheckAsync(bool forceCheck)\n    {\n        using (await _updateSemaphore.LockAsync().ConfigureAwait(false))\n        {\n            if (Disable)\n            {\n                _lastUpdate = DateTime.UtcNow;\n                _updates = [];\n                return null;\n            }\n\n            try\n            {\n                var timeSpanSinceLastUpdate = DateTime.UtcNow - _lastUpdate;\n                var shouldCheck = timeSpanSinceLastUpdate > _minimumTimeSpanForRefresh;\n\n                if (!forceCheck && !shouldCheck)\n                    return _updates.Length != 0 ? _updates.First().Version : null;\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Checking...\");\n\n                var adapter = new HttpClientAdapter(_httpClientFactory.CreateHandler);\n                var productInformation = new ProductHeaderValue(\"LenovoLegionToolkit-UpdateChecker\");\n                var connection = new Connection(productInformation, adapter);\n                var githubClient = new GitHubClient(connection);\n                var releases = await githubClient.Repository.Release.GetAll(\"BartoszCichecki\", \"LenovoLegionToolkit\", new ApiOptions { PageSize = 5 }).ConfigureAwait(false);\n\n                var thisReleaseVersion = Assembly.GetEntryAssembly()?.GetName().Version;\n                var thisBuildDate = Assembly.GetEntryAssembly()?.GetBuildDateTime() ?? new DateTime(2000, 1, 1);\n\n                var updates = releases\n                    .Where(r => !r.Draft)\n                    .Where(r => !r.Prerelease)\n                    .Where(r => (r.PublishedAt ?? r.CreatedAt).UtcDateTime >= thisBuildDate)\n                    .Select(r => new Update(r))\n                    .Where(r => r.Version > thisReleaseVersion)\n                    .OrderByDescending(r => r.Version)\n                    .ToArray();\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Checked [updates.Length={updates.Length}]\");\n\n                _updates = updates;\n                Status = UpdateCheckStatus.Success;\n\n                return _updates.Length != 0 ? _updates.First().Version : null;\n            }\n            catch (RateLimitExceededException ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Reached API Rate Limitation.\", ex);\n\n                Status = UpdateCheckStatus.RateLimitReached;\n                return null;\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Error checking for updates.\", ex);\n\n                Status = UpdateCheckStatus.Error;\n                return null;\n            }\n            finally\n            {\n                _lastUpdate = DateTime.UtcNow;\n                _updateCheckSettings.Store.LastUpdateCheckDateTime = _lastUpdate;\n                _updateCheckSettings.SynchronizeStore();\n            }\n        }\n    }\n\n    public async Task<Update[]> GetUpdatesAsync()\n    {\n        using (await _updateSemaphore.LockAsync().ConfigureAwait(false))\n            return _updates;\n    }\n\n    public async Task<string> DownloadLatestUpdateAsync(IProgress<float>? progress = null, CancellationToken cancellationToken = default)\n    {\n        using (await _updateSemaphore.LockAsync(cancellationToken).ConfigureAwait(false))\n        {\n            var tempPath = Path.Combine(Folders.Temp, $\"LenovoLegionToolkitSetup_{Guid.NewGuid()}.exe\");\n            var latestUpdate = _updates.OrderByDescending(u => u.Version).FirstOrDefault();\n\n            if (latestUpdate.Equals(default))\n                throw new InvalidOperationException(\"No updates available\");\n\n            if (latestUpdate.Url is null)\n                throw new InvalidOperationException(\"Setup file URL could not be found\");\n\n            await using var fileStream = File.OpenWrite(tempPath);\n            using var httpClient = _httpClientFactory.Create();\n            await httpClient.DownloadAsync(latestUpdate.Url, fileStream, progress, cancellationToken).ConfigureAwait(false);\n\n            return tempPath;\n        }\n    }\n\n    public void UpdateMinimumTimeSpanForRefresh() => _minimumTimeSpanForRefresh = _updateCheckSettings.Store.UpdateCheckFrequency switch\n    {\n        UpdateCheckFrequency.PerHour => TimeSpan.FromHours(1),\n        UpdateCheckFrequency.PerThreeHours => TimeSpan.FromHours(3),\n        UpdateCheckFrequency.PerTwelveHours => TimeSpan.FromHours(13),\n        UpdateCheckFrequency.PerDay => TimeSpan.FromDays(1),\n        UpdateCheckFrequency.PerWeek => TimeSpan.FromDays(7),\n        UpdateCheckFrequency.PerMonth => TimeSpan.FromDays(30),\n        _ => throw new ArgumentException(nameof(_updateCheckSettings.Store.UpdateCheckFrequency))\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib/Utils/WarrantyChecker.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Net.Http.Json;\nusing System.Text.Json.Nodes;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Settings;\n\nnamespace LenovoLegionToolkit.Lib.Utils;\n\npublic class WarrantyChecker(ApplicationSettings settings, HttpClientFactory httpClientFactory)\n{\n    public async Task<WarrantyInfo?> GetWarrantyInfo(MachineInformation machineInformation, bool forceRefresh = false, CancellationToken token = default)\n    {\n        if (!forceRefresh && settings.Store.WarrantyInfo.HasValue)\n            return settings.Store.WarrantyInfo.Value;\n\n        using var httpClient = httpClientFactory.Create();\n\n        var warrantyInfo = await GetStandardWarrantyInfo(httpClient, machineInformation, token).ConfigureAwait(false);\n\n        settings.Store.WarrantyInfo = warrantyInfo;\n        settings.SynchronizeStore();\n\n        return warrantyInfo;\n    }\n\n    private static async Task<WarrantyInfo?> GetStandardWarrantyInfo(HttpClient httpClient, MachineInformation machineInformation, CancellationToken token)\n    {\n        var content = JsonContent.Create(new { serialNumber = machineInformation.SerialNumber, machineType = machineInformation.MachineType });\n        var response = await httpClient.PostAsync(\"https://pcsupport.lenovo.com/dk/en/api/v4/upsell/redport/getIbaseInfo\", content, token).ConfigureAwait(false);\n        var responseContent = await response.Content.ReadAsStringAsync(token).ConfigureAwait(false);\n        var node = JsonNode.Parse(responseContent);\n\n        if (node is null || node[\"code\"]?.GetValue<int>() != 0)\n            return null;\n\n        var baseWarranties = node[\"data\"]?[\"baseWarranties\"]?.AsArray() ?? [];\n        var upgradeWarranties = node[\"data\"]?[\"upgradeWarranties\"]?.AsArray() ?? [];\n\n        var startDate = baseWarranties.Concat(upgradeWarranties)\n            .Select(n => n?[\"startDate\"])\n            .Where(n => n is not null)\n            .Select(n => DateTime.Parse(n!.ToString()))\n            .Min();\n        var endDate = baseWarranties.Concat(upgradeWarranties)\n            .Select(n => n?[\"endDate\"])\n            .Where(n => n is not null)\n            .Select(n => DateTime.Parse(n!.ToString()))\n            .Max();\n\n        var productString = await httpClient.GetStringAsync($\"https://pcsupport.lenovo.com/dk/en/api/v4/mse/getproducts?productId={machineInformation.SerialNumber}\", token).ConfigureAwait(false);\n        var productNode = JsonNode.Parse(productString);\n        var firstProductNode = (productNode as JsonArray)?.FirstOrDefault();\n        var id = firstProductNode?[\"Id\"];\n        var link = id is null ? null : new Uri($\"https://pcsupport.lenovo.com/products/{id}\");\n\n        return new WarrantyInfo(startDate, endDate, link);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/AutomationContext.cs",
    "content": "﻿namespace LenovoLegionToolkit.Lib.Automation;\n\npublic class AutomationContext\n{\n    public string? LastRunOutput { get; set; }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/AutomationEnvironment.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace LenovoLegionToolkit.Lib.Automation;\n\npublic class AutomationEnvironment\n{\n    private const string AC_ADAPTER_CONNECTED = \"LLT_IS_AC_ADAPTER_CONNECTED\";\n    private const string LOW_POWER_AC_ADAPTER = \"LLT_IS_AC_ADAPTER_LOW_POWER\";\n    private const string DISPLAY_ON = \"LLT_IS_DISPLAY_ON\";\n    private const string EXTERNAL_DISPLAY_CONNECTED = \"LLT_IS_EXTERNAL_DISPLAY_CONNECTED\";\n    private const string GAME_RUNNING = \"LLT_IS_GAME_RUNNING\";\n    private const string HDR_ON = \"LLT_IS_HDR_ON\";\n    private const string LID_OPEN = \"LLT_IS_LID_OPEN\";\n    private const string STARTUP = \"LLT_STARTUP\";\n    private const string RESUME = \"LLT_RESUME\";\n    private const string POWER_MODE = \"LLT_POWER_MODE\";\n    private const string POWER_MODE_NAME = \"LLT_POWER_MODE_NAME\";\n    private const string PROCESSES_STARTED = \"LLT_PROCESSES_STARTED\";\n    private const string PROCESSES = \"LLT_PROCESSES\";\n    private const string DEVICE_CONNECTED = \"LLT_DEVICE_CONNECTED\";\n    private const string DEVICE_INSTANCE_IDS = \"LLT_DEVICE_INSTANCE_IDS\";\n    private const string IS_SUNSET = \"LLT_IS_SUNSET\";\n    private const string IS_SUNRISE = \"LLT_IS_SUNRISE\";\n    private const string TIME = \"LLT_TIME\";\n    private const string DAYS = \"LLT_DAYS\";\n    private const string PERIOD = \"LLT_PERIOD\";\n    private const string USER_ACTIVE = \"LLT_IS_USER_ACTIVE\";\n    private const string WIFI_CONNECTED = \"LLT_WIFI_CONNECTED\";\n    private const string WIFI_SSID = \"LLT_WIFI_SSID\";\n    private const string SESSION_LOCKED = \"LLT_SESSION_LOCKED\";\n\n    private const string VALUE_TRUE = \"TRUE\";\n    private const string VALUE_FALSE = \"FALSE\";\n\n    public bool AcAdapterConnected { set => _dictionary[AC_ADAPTER_CONNECTED] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool LowPowerAcAdapter { set => _dictionary[LOW_POWER_AC_ADAPTER] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool DisplayOn { set => _dictionary[DISPLAY_ON] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool ExternalDisplayConnected { set => _dictionary[EXTERNAL_DISPLAY_CONNECTED] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool GameRunning { set => _dictionary[GAME_RUNNING] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool HDROn { set => _dictionary[HDR_ON] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool LidOpen { set => _dictionary[LID_OPEN] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool Startup { set => _dictionary[STARTUP] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool Resume { set => _dictionary[RESUME] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public PowerModeState PowerMode\n    {\n        set\n        {\n            _dictionary[POWER_MODE] = value switch\n            {\n                PowerModeState.Quiet => \"1\",\n                PowerModeState.Balance => \"2\",\n                PowerModeState.Performance => \"3\",\n                PowerModeState.GodMode => \"255\",\n                _ => string.Empty\n            };\n            _dictionary[POWER_MODE_NAME] = value switch\n            {\n                PowerModeState.Quiet => \"QUIET\",\n                PowerModeState.Balance => \"BALANCE\",\n                PowerModeState.Performance => \"PERFORMANCE\",\n                PowerModeState.GodMode => \"CUSTOM\",\n                _ => string.Empty\n            };\n        }\n    }\n\n    public bool ProcessesStarted { set => _dictionary[PROCESSES_STARTED] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public ProcessInfo[] Processes { set => _dictionary[PROCESSES] = string.Join(\",\", value.Select(p => p.Name)); }\n\n    public bool DeviceConnected { set => _dictionary[DEVICE_CONNECTED] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public string[] DeviceInstanceIds { set => _dictionary[DEVICE_INSTANCE_IDS] = string.Join(\",\", value); }\n\n    public bool IsSunset { set => _dictionary[IS_SUNSET] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool IsSunrise { set => _dictionary[IS_SUNRISE] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public Time? Time { set => _dictionary[TIME] = value is null ? null : $\"{value.Value.Hour}:{value.Value.Minute}\"; }\n\n    public DayOfWeek[] Days { set => _dictionary[DAYS] = value.Length < 1 ? null : string.Join(\",\", value.Select(v => v.ToString().ToUpperInvariant())); }\n\n    public TimeSpan Period { set => _dictionary[PERIOD] = $\"{(int)value.TotalSeconds}\"; }\n\n    public bool UserActive { set => _dictionary[USER_ACTIVE] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public bool WiFiConnected { set => _dictionary[WIFI_CONNECTED] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public string? WiFiSsid { set => _dictionary[WIFI_SSID] = value; }\n\n    public bool SessionLocked { set => _dictionary[SESSION_LOCKED] = value ? VALUE_TRUE : VALUE_FALSE; }\n\n    public Dictionary<string, string?> Dictionary => new(_dictionary);\n\n    private readonly Dictionary<string, string?> _dictionary = [];\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/AutomationProcessor.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.AutoListeners;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Automation.Utils;\nusing LenovoLegionToolkit.Lib.Controllers.GodMode;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Utils;\nusing NeoSmart.AsyncLock;\n\nnamespace LenovoLegionToolkit.Lib.Automation;\n\npublic class AutomationProcessor(\n    AutomationSettings settings,\n    DisplayConfigurationListener displayConfigurationListener,\n    NativeWindowsMessageListener nativeWindowsMessageListener,\n    PowerStateListener powerStateListener,\n    PowerModeListener powerModeListener,\n    GodModeController godModeController,\n    GameAutoListener gameAutoListener,\n    ProcessAutoListener processAutoListener,\n    SessionLockUnlockListener sessionLockUnlockListener,\n    TimeAutoListener timeAutoListener,\n    UserInactivityAutoListener userInactivityAutoListener,\n    WiFiAutoListener wifiAutoListener)\n{\n    private readonly AsyncLock _ioLock = new();\n    private readonly AsyncLock _runLock = new();\n\n    private List<AutomationPipeline> _pipelines = [];\n    private CancellationTokenSource? _cts;\n\n    public bool IsEnabled => settings.Store.IsEnabled;\n\n    public event EventHandler<List<AutomationPipeline>>? PipelinesChanged;\n\n    #region Initialization / pipeline reloading\n\n    public async Task InitializeAsync()\n    {\n        using (await _ioLock.LockAsync().ConfigureAwait(false))\n        {\n            displayConfigurationListener.Changed += DisplayConfigurationListener_Changed;\n            nativeWindowsMessageListener.Changed += NativeWindowsMessageListener_Changed;\n            powerStateListener.Changed += PowerStateListener_Changed;\n            powerModeListener.Changed += PowerModeListener_Changed;\n            godModeController.PresetChanged += GodModeController_PresetChanged;\n            sessionLockUnlockListener.Changed += SessionLockUnlockListener_Changed;\n\n            _pipelines = [.. settings.Store.Pipelines];\n\n            RaisePipelinesChanged();\n\n            await UpdateListenersAsync().ConfigureAwait(false);\n        }\n    }\n\n    public async Task SetEnabledAsync(bool enabled)\n    {\n        using (await _ioLock.LockAsync().ConfigureAwait(false))\n        {\n            settings.Store.IsEnabled = enabled;\n            settings.SynchronizeStore();\n\n            await UpdateListenersAsync().ConfigureAwait(false);\n        }\n    }\n\n    public async Task ReloadPipelinesAsync(List<AutomationPipeline> pipelines)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Pipelines reload pending...\");\n\n        using (await _ioLock.LockAsync().ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Pipelines reloading...\");\n\n            _pipelines = pipelines.Select(p => p.DeepCopy()).ToList();\n\n            settings.Store.Pipelines = pipelines;\n            settings.SynchronizeStore();\n\n            RaisePipelinesChanged();\n\n            await UpdateListenersAsync().ConfigureAwait(false);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Pipelines reloaded.\");\n        }\n    }\n\n    public async Task<List<AutomationPipeline>> GetPipelinesAsync()\n    {\n        using (await _ioLock.LockAsync().ConfigureAwait(false))\n            return _pipelines.Select(p => p.DeepCopy()).ToList();\n    }\n\n    #endregion\n\n    #region Run\n\n    public void RunOnStartup()\n    {\n        if (!IsEnabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not enabled. Pipeline run on startup ignored.\");\n\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Pipeline run on startup pending...\");\n\n        Task.Run(() => ProcessEvent(new StartupAutomationEvent()));\n    }\n\n    public async Task RunNowAsync(AutomationPipeline pipeline)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Pipeline run now pending...\");\n\n        using (await _runLock.LockAsync().ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Pipeline run starting...\");\n\n            try\n            {\n                List<AutomationPipeline> pipelines;\n                using (await _ioLock.LockAsync().ConfigureAwait(false))\n                    pipelines = _pipelines.ToList();\n\n                var otherPipelines = pipelines.Where(p => p.Id != pipeline.Id).ToList();\n                await pipeline.DeepCopy().RunAsync(otherPipelines).ConfigureAwait(false);\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Pipeline run finished successfully.\");\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Pipeline run failed.\", ex);\n\n                throw;\n            }\n        }\n    }\n\n    public async Task RunNowAsync(Guid pipelineId)\n    {\n        AutomationPipeline? pipeline;\n        using (await _ioLock.LockAsync().ConfigureAwait(false))\n            pipeline = _pipelines.Where(p => p.Trigger is null).FirstOrDefault(p => p.Id == pipelineId);\n\n        if (pipeline is null)\n            return;\n\n        await RunNowAsync(pipeline).ConfigureAwait(false);\n    }\n\n    private async Task RunAsync(IAutomationEvent automationEvent)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Run pending...\");\n\n        using (await _runLock.LockAsync().ConfigureAwait(false))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Run starting...\");\n\n            if (_cts is not null)\n                await _cts.CancelAsync().ConfigureAwait(false);\n\n            if (!IsEnabled)\n                return;\n\n            List<AutomationPipeline> pipelines;\n            using (await _ioLock.LockAsync().ConfigureAwait(false))\n                pipelines = _pipelines.ToList();\n\n            _cts = new CancellationTokenSource();\n            var ct = _cts.Token;\n\n            foreach (var pipeline in pipelines)\n            {\n                if (ct.IsCancellationRequested)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Run interrupted.\");\n                    break;\n                }\n\n                try\n                {\n                    if (pipeline.Trigger is null || !await pipeline.Trigger.IsMatchingEvent(automationEvent).ConfigureAwait(false))\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Pipeline triggers not satisfied. [name={pipeline.Name}, trigger={pipeline.Trigger}, steps.Count={pipeline.Steps.Count}]\");\n                        continue;\n                    }\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Running pipeline... [name={pipeline.Name}, trigger={pipeline.Trigger}, steps.Count={pipeline.Steps.Count}]\");\n\n                    var otherPipelines = pipelines.Where(p => p.Id != pipeline.Id).ToList();\n                    await pipeline.RunAsync(otherPipelines, ct).ConfigureAwait(false);\n\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Pipeline completed successfully. [name={pipeline.Name}, trigger={pipeline.Trigger}]\");\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Pipeline run failed. [name={pipeline.Name}, trigger={pipeline.Trigger}]\", ex);\n                }\n\n                if (pipeline.IsExclusive)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Pipeline is exclusive. Breaking. [name={pipeline.Name}, trigger={pipeline.Trigger}, steps.Count={pipeline.Steps.Count}]\");\n                    break;\n                }\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Run finished successfully.\");\n        }\n    }\n\n    #endregion\n\n    #region Listeners\n\n    private async void DisplayConfigurationListener_Changed(object? sender, DisplayConfigurationListener.ChangedEventArgs args)\n    {\n        var e = new HDRAutomationEvent(args.HDR);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void NativeWindowsMessageListener_Changed(object? sender, NativeWindowsMessageListener.ChangedEventArgs args)\n    {\n        var e = new NativeWindowsMessageEvent(args.Message, args.Data);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void PowerStateListener_Changed(object? sender, PowerStateListener.ChangedEventArgs args)\n    {\n        var e = new PowerStateAutomationEvent(args.PowerStateEvent, args.PowerAdapterStateChanged);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void PowerModeListener_Changed(object? sender, PowerModeListener.ChangedEventArgs args)\n    {\n        var e = new PowerModeAutomationEvent(args.State);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void GodModeController_PresetChanged(object? sender, Guid presetId)\n    {\n        var e = new CustomModePresetAutomationEvent(presetId);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void GameAutoListener_Changed(object? sender, GameAutoListener.ChangedEventArgs args)\n    {\n        var e = new GameAutomationEvent(args.Running);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void ProcessAutoListener_Changed(object? sender, ProcessAutoListener.ChangedEventArgs args)\n    {\n        var e = new ProcessAutomationEvent(args.Type, args.ProcessInfo);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void SessionLockUnlockListener_Changed(object? sender, SessionLockUnlockListener.ChangedEventArgs args)\n    {\n        var e = new SessionLockUnlockAutomationEvent(args.Locked);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void TimeAutoListener_Changed(object? sender, TimeAutoListener.ChangedEventArgs args)\n    {\n        var e = new TimeAutomationEvent(args.Time, args.Day);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void UserInactivityAutoListener_Changed(object? sender, UserInactivityAutoListener.ChangedEventArgs args)\n    {\n        var e = new UserInactivityAutomationEvent(args.TimerResolution * args.TickCount);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    private async void WiFiAutoListener_Changed(object? sender, WiFiAutoListener.ChangedEventArgs args)\n    {\n        var e = new WiFiAutomationEvent(args.IsConnected, args.Ssid);\n        await ProcessEvent(e).ConfigureAwait(false);\n    }\n\n    #endregion\n\n    #region Event processing\n\n    private async Task ProcessEvent(IAutomationEvent e)\n    {\n        var potentialMatch = _pipelines.SelectMany(p => p.AllTriggers)\n            .Select(async t => await t.IsMatchingEvent(e).ConfigureAwait(false))\n            .Select(t => t.Result)\n            .Where(t => t)\n            .Any();\n\n        if (!potentialMatch)\n            return;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Processing event {e}... [type={e.GetType().Name}]\");\n\n        await RunAsync(e).ConfigureAwait(false);\n    }\n\n    #endregion\n\n    #region Helper methods\n\n    private async Task UpdateListenersAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopping listeners...\");\n\n        await gameAutoListener.UnsubscribeChangedAsync(GameAutoListener_Changed).ConfigureAwait(false);\n        await processAutoListener.UnsubscribeChangedAsync(ProcessAutoListener_Changed).ConfigureAwait(false);\n        await timeAutoListener.UnsubscribeChangedAsync(TimeAutoListener_Changed).ConfigureAwait(false);\n        await userInactivityAutoListener.UnsubscribeChangedAsync(UserInactivityAutoListener_Changed).ConfigureAwait(false);\n        await wifiAutoListener.UnsubscribeChangedAsync(WiFiAutoListener_Changed).ConfigureAwait(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopped listeners...\");\n\n        if (!IsEnabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not enabled. Will not start listeners.\");\n            return;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Starting listeners...\");\n\n        var triggers = _pipelines.SelectMany(p => p.AllTriggers).ToArray();\n\n        if (triggers.OfType<IGameAutomationPipelineTrigger>().Any())\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Starting game listener...\");\n\n            await gameAutoListener.SubscribeChangedAsync(GameAutoListener_Changed).ConfigureAwait(false);\n        }\n\n        if (triggers.OfType<IProcessesAutomationPipelineTrigger>().Any())\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Starting process listener...\");\n\n            await processAutoListener.SubscribeChangedAsync(ProcessAutoListener_Changed).ConfigureAwait(false);\n        }\n\n        if (triggers.OfType<ITimeAutomationPipelineTrigger>().Any() || triggers.OfType<IPeriodicAutomationPipelineTrigger>().Any())\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Starting time listener...\");\n\n            await timeAutoListener.SubscribeChangedAsync(TimeAutoListener_Changed).ConfigureAwait(false);\n        }\n\n        if (triggers.OfType<IUserInactivityPipelineTrigger>().Any())\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Starting user inactivity listener...\");\n\n            await userInactivityAutoListener.SubscribeChangedAsync(UserInactivityAutoListener_Changed).ConfigureAwait(false);\n        }\n\n        if (triggers.OfType<IWiFiConnectedPipelineTrigger>().Any() || triggers.OfType<WiFiDisconnectedAutomationPipelineTrigger>().Any())\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Starting WiFi listener...\");\n\n            await wifiAutoListener.SubscribeChangedAsync(WiFiAutoListener_Changed).ConfigureAwait(false);\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Started relevant listeners.\");\n    }\n\n    private void RaisePipelinesChanged()\n    {\n        PipelinesChanged?.Invoke(this, _pipelines.Select(p => p.DeepCopy()).ToList());\n    }\n\n    #endregion\n\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Enums.cs",
    "content": "﻿using System.ComponentModel.DataAnnotations;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\n\nnamespace LenovoLegionToolkit.Lib.Automation;\n\npublic enum DeactivateGPUAutomationStepState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"DeactivateGPUAutomationStepState_KillApps\")]\n    KillApps,\n    [Display(ResourceType = typeof(Resource), Name = \"DeactivateGPUAutomationStepState_RestartGPU\")]\n    RestartGPU,\n}\n\npublic enum MacroAutomationStepState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"MacroAutomationStepState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"MacroAutomationStepState_On\")]\n    On\n}\n\npublic enum OverclockDiscreteGPUAutomationStepState\n{\n    [Display(ResourceType = typeof(Resource), Name = \"OverclockDiscreteGPUAutomationStepState_Off\")]\n    Off,\n    [Display(ResourceType = typeof(Resource), Name = \"OverclockDiscreteGPUAutomationStepState_On\")]\n    On\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/GlobalSuppressions.cs",
    "content": "﻿// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Project-level suppressions either have no target or are given\n// a specific target and scoped to a namespace, type, member, etc.\n\nusing System.Diagnostics.CodeAnalysis;\n\n[assembly: SuppressMessage(\"Performance\", \"CA1822:Mark members as static\")]\n[assembly: SuppressMessage(\"Interoperability\", \"CA1416:Validate platform compatibility\")]\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/IAutomationEvent.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.Lib.Automation;\n\npublic interface IAutomationEvent;\n\npublic readonly struct HDRAutomationEvent(bool? isHDROn) : IAutomationEvent\n{\n    public bool? IsHDROn { get; } = isHDROn;\n}\n\npublic readonly struct NativeWindowsMessageEvent(NativeWindowsMessage message, object? data) : IAutomationEvent\n{\n    public NativeWindowsMessage Message { get; } = message;\n    public object? Data { get; } = data;\n}\n\npublic struct StartupAutomationEvent : IAutomationEvent;\n\npublic readonly struct PowerStateAutomationEvent(PowerStateEvent powerStateEvent, bool powerAdapterStateChanged)\n    : IAutomationEvent\n{\n    public PowerStateEvent PowerStateEvent { get; } = powerStateEvent;\n    public bool PowerAdapterStateChanged { get; } = powerAdapterStateChanged;\n}\n\npublic readonly struct PowerModeAutomationEvent(PowerModeState powerModeState) : IAutomationEvent\n{\n    public PowerModeState PowerModeState { get; } = powerModeState;\n}\n\npublic readonly struct CustomModePresetAutomationEvent(Guid id) : IAutomationEvent\n{\n    public Guid Id { get; } = id;\n}\n\npublic readonly struct GameAutomationEvent(bool running) : IAutomationEvent\n{\n    public bool Running { get; } = running;\n}\n\npublic readonly struct ProcessAutomationEvent(ProcessEventInfoType type, ProcessInfo processInfo) : IAutomationEvent\n{\n    public ProcessEventInfoType Type { get; } = type;\n\n    public ProcessInfo ProcessInfo { get; } = processInfo;\n}\n\npublic readonly struct SessionLockUnlockAutomationEvent(bool locked) : IAutomationEvent\n{\n    public bool Locked { get; } = locked;\n}\n\npublic readonly struct TimeAutomationEvent(Time time, DayOfWeek day) : IAutomationEvent\n{\n    public Time Time { get; } = time;\n    public DayOfWeek Day { get; } = day;\n}\n\npublic readonly struct UserInactivityAutomationEvent(TimeSpan inactivityTimeSpan)\n    : IAutomationEvent\n{\n    public TimeSpan InactivityTimeSpan { get; } = inactivityTimeSpan;\n}\n\npublic readonly struct WiFiAutomationEvent(bool isConnected, string? ssid) : IAutomationEvent\n{\n    public bool IsConnected { get; } = isConnected;\n    public string? Ssid { get; } = ssid;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/IoCModule.cs",
    "content": "﻿using Autofac;\nusing LenovoLegionToolkit.Lib.Automation.Utils;\nusing LenovoLegionToolkit.Lib.Extensions;\n\nnamespace LenovoLegionToolkit.Lib.Automation;\n\npublic class IoCModule : Module\n{\n    protected override void Load(ContainerBuilder builder)\n    {\n        builder.Register<AutomationSettings>();\n        builder.Register<AutomationProcessor>();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/LenovoLegionToolkit.Lib.Automation.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<TargetFramework>net8.0-windows</TargetFramework>\n\t\t<RuntimeIdentifier>win-x64</RuntimeIdentifier>\n\t\t<Platforms>x64</Platforms>\n\t\t<Nullable>enable</Nullable>\n\t\t<Copyright>© 2024 Bartosz Cichecki</Copyright>\n\t\t<AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n\t\t<NeutralLanguage>en</NeutralLanguage>\n\t</PropertyGroup>\n\t<ItemGroup>\n\t\t<PackageReference Include=\"Autofac\" Version=\"8.2.0\" />\n\t\t<PackageReference Include=\"Microsoft.CSharp\" Version=\"4.7.0\" />\n\t\t<PackageReference Include=\"NeoSmart.AsyncLock\" Version=\"3.2.1\" />\n\t\t<PackageReference Include=\"Newtonsoft.Json\" Version=\"13.0.3\" />\n\t</ItemGroup>\n\t<ItemGroup>\n\t  <ProjectReference Include=\"..\\LenovoLegionToolkit.Lib.Macro\\LenovoLegionToolkit.Lib.Macro.csproj\" />\n\t  <ProjectReference Include=\"..\\LenovoLegionToolkit.Lib\\LenovoLegionToolkit.Lib.csproj\" />\n\t</ItemGroup>\n\t<ItemGroup>\n\t  <Compile Update=\"Resources\\Resource.Designer.cs\">\n\t    <DesignTime>True</DesignTime>\n\t    <AutoGen>True</AutoGen>\n\t    <DependentUpon>Resource.resx</DependentUpon>\n\t  </Compile>\n\t</ItemGroup>\n\t<ItemGroup>\n\t  <EmbeddedResource Update=\"Resources\\Resource.resx\">\n\t    <Generator>PublicResXFileCodeGenerator</Generator>\n\t    <LastGenOutput>Resource.Designer.cs</LastGenOutput>\n\t  </EmbeddedResource>\n\t</ItemGroup>\n</Project>\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/LenovoLegionToolkit.Lib.Automation.csproj.DotSettings",
    "content": "﻿<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namespace:System;assembly=mscorlib\" xmlns:ss=\"urn:shemas-jetbrains-com:settings-storage-xaml\" xmlns:wpf=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">\n\t<s:String x:Key=\"/Default/CodeInspection/Daemon/ConfigureAwaitAnalysisMode/@EntryValue\">Library</s:String></wpf:ResourceDictionary>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/AutomationPipeline.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline;\n\npublic class AutomationPipeline\n{\n    public Guid Id { get; init; } = Guid.NewGuid();\n\n    public string? IconName { get; set; }\n\n    public string? Name { get; set; }\n\n    public IAutomationPipelineTrigger? Trigger { get; set; }\n\n    public List<IAutomationStep> Steps { get; init; } = [];\n\n    public bool IsExclusive { get; init; } = true;\n\n    [JsonIgnore]\n    public IEnumerable<IAutomationPipelineTrigger> AllTriggers\n    {\n        get\n        {\n            if (Trigger is not null && Trigger is not ICompositeAutomationPipelineTrigger)\n                yield return Trigger;\n\n            if (Trigger is ICompositeAutomationPipelineTrigger compositeTrigger)\n                foreach (var trigger in compositeTrigger.Triggers)\n                    yield return trigger;\n        }\n    }\n\n    public AutomationPipeline() { }\n\n    public AutomationPipeline(string name) => Name = name;\n\n    public AutomationPipeline(IAutomationPipelineTrigger trigger) => Trigger = trigger;\n\n    internal async Task RunAsync(List<AutomationPipeline> otherPipelines, CancellationToken token = default)\n    {\n        if (token.IsCancellationRequested)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Pipeline interrupted.\");\n            return;\n        }\n\n        var context = new AutomationContext();\n        var environment = new AutomationEnvironment();\n        var stepExceptions = new List<Exception>();\n\n        AllTriggers.ForEach(t => t.UpdateEnvironment(environment));\n\n        foreach (var step in GetAllSteps(otherPipelines))\n        {\n            if (token.IsCancellationRequested)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Pipeline interrupted.\");\n                break;\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Running step... [type={step.GetType().Name}]\");\n\n            try\n            {\n                await step.RunAsync(context, environment, token).ConfigureAwait(false);\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Step run failed. [name={step.GetType().Name}]\", ex);\n\n                stepExceptions.Add(ex);\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Step completed successfully. [type={step.GetType().Name}]\");\n        }\n\n        if (stepExceptions.Count != 0)\n            throw new AggregateException(stepExceptions);\n    }\n\n    private IEnumerable<IAutomationStep> GetAllSteps(List<AutomationPipeline> pipelines)\n    {\n        foreach (var step in Steps)\n        {\n            if (step is QuickActionAutomationStep qas)\n            {\n                var matchingPipeline = pipelines.FirstOrDefault(p => p.Id != Id && p.Id == qas.PipelineId && p.AllTriggers.IsEmpty());\n                if (matchingPipeline is null)\n                    continue;\n\n                foreach (var matchingPipelineStep in matchingPipeline.GetAllSteps(pipelines))\n                    yield return matchingPipelineStep;\n            }\n\n            yield return step;\n        }\n    }\n\n    public AutomationPipeline DeepCopy() => new()\n    {\n        Id = Id,\n        IconName = IconName,\n        Name = Name,\n        Trigger = Trigger?.DeepCopy(),\n        Steps = Steps.Select(s => s.DeepCopy()).ToList(),\n        IsExclusive = IsExclusive,\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/ACAdapterConnectedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.System;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class ACAdapterConnectedAutomationPipelineTrigger : IPowerStateAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.ACAdapterConnectedAutomationPipelineTrigger_DisplayName;\n\n    public async Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not (PowerStateAutomationEvent { PowerStateEvent: PowerStateEvent.StatusChange, PowerAdapterStateChanged: true } or StartupAutomationEvent))\n            return false;\n\n        var status = await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false);\n        return status == PowerAdapterStatus.Connected;\n    }\n\n    public async Task<bool> IsMatchingState()\n    {\n        var status = await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false);\n        return status == PowerAdapterStatus.Connected;\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.AcAdapterConnected = true;\n\n    public IAutomationPipelineTrigger DeepCopy() => new ACAdapterConnectedAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is ACAdapterConnectedAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/ACAdapterDisconnectedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.System;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class ACAdapterDisconnectedAutomationPipelineTrigger : IPowerStateAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName;\n\n    public async Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not (PowerStateAutomationEvent { PowerStateEvent: PowerStateEvent.StatusChange, PowerAdapterStateChanged: true } or StartupAutomationEvent))\n            return false;\n\n        var status = await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false);\n        return status == PowerAdapterStatus.Disconnected;\n    }\n\n    public async Task<bool> IsMatchingState()\n    {\n        var status = await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false);\n        return status == PowerAdapterStatus.Disconnected;\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.AcAdapterConnected = false;\n\n    public IAutomationPipelineTrigger DeepCopy() => new ACAdapterDisconnectedAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is ACAdapterDisconnectedAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/AndAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class AndAutomationPipelineTrigger(IAutomationPipelineTrigger[] triggers) : ICompositeAutomationPipelineTrigger\n{\n    public string DisplayName => string.Join(Environment.NewLine, Triggers.Select(t => t.DisplayName));\n\n    public IAutomationPipelineTrigger[] Triggers { get; } = triggers;\n\n    public async Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        foreach (var trigger in Triggers)\n        {\n            if (!await trigger.IsMatchingEvent(automationEvent).ConfigureAwait(false))\n                continue;\n\n            foreach (var otherTrigger in Triggers.Where(t => !ReferenceEquals(t, trigger)))\n            {\n                if (!await otherTrigger.IsMatchingState().ConfigureAwait(false))\n                    return false;\n            }\n\n            return true;\n        }\n\n        return false;\n    }\n\n    public Task<bool> IsMatchingState() => Task.FromResult(false);\n\n    public void UpdateEnvironment(AutomationEnvironment environment)\n    {\n        foreach (var trigger in Triggers)\n            trigger.UpdateEnvironment(environment);\n    }\n\n    public IAutomationPipelineTrigger DeepCopy() => new AndAutomationPipelineTrigger(Triggers);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/DeviceConnectedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class DeviceConnectedAutomationPipelineTrigger(string[]? instanceIds) : IDeviceAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.DeviceConnectedAutomationPipelineTrigger_DisplayName;\n\n    public string[] InstanceIds { get; } = instanceIds ?? [];\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not NativeWindowsMessageEvent { Message: NativeWindowsMessage.DeviceConnected, Data: string deviceInstanceId })\n            return Task.FromResult(false);\n\n        return Task.FromResult(InstanceIds.Contains(deviceInstanceId));\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var result = Devices.GetAll()\n            .Where(d => !d.IsDisconnected)\n            .Select(d => d.DeviceInstanceId)\n            .Intersect(InstanceIds)\n            .Any();\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment)\n    {\n        environment.DeviceConnected = true;\n        environment.DeviceInstanceIds = InstanceIds;\n    }\n\n    public IAutomationPipelineTrigger DeepCopy() => new DeviceConnectedAutomationPipelineTrigger(InstanceIds);\n\n    public IDeviceAutomationPipelineTrigger DeepCopy(string[] instanceIds) => new DeviceConnectedAutomationPipelineTrigger(instanceIds);\n\n    public override bool Equals(object? obj) => obj is DeviceConnectedAutomationPipelineTrigger t && InstanceIds.SequenceEqual(t.InstanceIds);\n\n    public override int GetHashCode()\n    {\n        var hc = new HashCode();\n        InstanceIds.ForEach(id => hc.Add(id));\n        return hc.ToHashCode();\n    }\n\n    public override string ToString() => $\"{nameof(InstanceIds)}: {string.Join(\", \", InstanceIds)}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/DeviceDisconnectedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class DeviceDisconnectedAutomationPipelineTrigger(string[]? instanceIds) : IDeviceAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.DeviceDisconnectedAutomationPipelineTrigger_DisplayName;\n\n    public string[] InstanceIds { get; } = instanceIds ?? [];\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not NativeWindowsMessageEvent { Message: NativeWindowsMessage.DeviceDisconnected, Data: string deviceInstanceId })\n            return Task.FromResult(false);\n\n        return Task.FromResult(InstanceIds.Contains(deviceInstanceId));\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var result = Devices.GetAll()\n            .Where(d => !d.IsDisconnected)\n            .Select(d => d.DeviceInstanceId)\n            .Intersect(InstanceIds)\n            .IsEmpty();\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment)\n    {\n        environment.DeviceConnected = false;\n        environment.DeviceInstanceIds = InstanceIds;\n    }\n\n    public IAutomationPipelineTrigger DeepCopy() => new DeviceDisconnectedAutomationPipelineTrigger(InstanceIds);\n\n    public IDeviceAutomationPipelineTrigger DeepCopy(string[] instanceIds) => new DeviceDisconnectedAutomationPipelineTrigger(instanceIds);\n\n    public override bool Equals(object? obj) => obj is DeviceDisconnectedAutomationPipelineTrigger t && InstanceIds.SequenceEqual(t.InstanceIds);\n\n    public override int GetHashCode()\n    {\n        var hc = new HashCode();\n        InstanceIds.ForEach(id => hc.Add(id));\n        return hc.ToHashCode();\n    }\n\n    public override string ToString() => $\"{nameof(InstanceIds)}: {string.Join(\", \", InstanceIds)}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/DisplayOffAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class DisplayOffAutomationPipelineTrigger : INativeWindowsMessagePipelineTrigger, IDisallowDuplicatesAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.DisplayOffAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is NativeWindowsMessageEvent { Message: NativeWindowsMessage.MonitorOff };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<NativeWindowsMessageListener>();\n        var result = !listener.IsMonitorOn;\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.DisplayOn = false;\n\n    public IAutomationPipelineTrigger DeepCopy() => new DisplayOffAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is DisplayOffAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/DisplayOnAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class DisplayOnAutomationPipelineTrigger : INativeWindowsMessagePipelineTrigger, IDisallowDuplicatesAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.DisplayOnAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is NativeWindowsMessageEvent { Message: NativeWindowsMessage.MonitorOn };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<NativeWindowsMessageListener>();\n        var result = listener.IsMonitorOn;\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.DisplayOn = true;\n\n    public IAutomationPipelineTrigger DeepCopy() => new DisplayOnAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is DisplayOnAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/ExternalDisplayConnectedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.System;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class ExternalDisplayConnectedAutomationPipelineTrigger : INativeWindowsMessagePipelineTrigger, IDisallowDuplicatesAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is NativeWindowsMessageEvent { Message: NativeWindowsMessage.ExternalMonitorConnected };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var result = ExternalDisplays.Get().Length > 0;\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.ExternalDisplayConnected = true;\n\n    public IAutomationPipelineTrigger DeepCopy() => new ExternalDisplayConnectedAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is ExternalDisplayConnectedAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/ExternalDisplayDisconnectedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.System;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class ExternalDisplayDisconnectedAutomationPipelineTrigger : INativeWindowsMessagePipelineTrigger, IDisallowDuplicatesAutomationPipelineTrigger\n{\n    [JsonIgnore] public string DisplayName => Resource.ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is NativeWindowsMessageEvent { Message: NativeWindowsMessage.ExternalMonitorDisconnected };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var result = ExternalDisplays.Get().Length < 1;\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.ExternalDisplayConnected = false;\n\n    public IAutomationPipelineTrigger DeepCopy() => new ExternalDisplayDisconnectedAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is ExternalDisplayDisconnectedAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/GamesAreRunningAutomationPipelineTrigger.cs",
    "content": "﻿using System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.AutoListeners;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class GamesAreRunningAutomationPipelineTrigger : IGameAutomationPipelineTrigger\n{\n    public string DisplayName => Resource.GamesAreRunningAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is GameAutomationEvent { Running: true };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<GameAutoListener>();\n        var result = listener.AreGamesRunning();\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.GameRunning = true;\n\n    public IAutomationPipelineTrigger DeepCopy() => new GamesAreRunningAutomationPipelineTrigger();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/GamesStopAutomationPipelineTrigger.cs",
    "content": "﻿using System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.AutoListeners;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class GamesStopAutomationPipelineTrigger : IGameAutomationPipelineTrigger\n{\n    public string DisplayName => Resource.GamesStopAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is GameAutomationEvent { Running: false };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<GameAutoListener>();\n        var result = !listener.AreGamesRunning();\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.GameRunning = false;\n\n    public IAutomationPipelineTrigger DeepCopy() => new GamesStopAutomationPipelineTrigger();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/GodModePresetChangedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Controllers.GodMode;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class GodModePresetChangedAutomationPipelineTrigger(Guid presetId)\n    : IGodModePresetChangedAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.GodModePresetChangedAutomationPipelineTrigger_DisplayName;\n\n    public Guid PresetId { get; } = presetId;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not CustomModePresetAutomationEvent e)\n            return Task.FromResult(false);\n\n        return Task.FromResult(e.Id == PresetId);\n    }\n\n    public async Task<bool> IsMatchingState()\n    {\n        var controller = IoCContainer.Resolve<GodModeController>();\n        return PresetId == await controller.GetActivePresetIdAsync().ConfigureAwait(false);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) { /* Ignored */ }\n\n    public IAutomationPipelineTrigger DeepCopy() => new GodModePresetChangedAutomationPipelineTrigger(PresetId);\n\n    public IGodModePresetChangedAutomationPipelineTrigger DeepCopy(Guid presetId) => new GodModePresetChangedAutomationPipelineTrigger(presetId);\n\n    public override bool Equals(object? obj)\n    {\n        return obj is GodModePresetChangedAutomationPipelineTrigger t && PresetId == t.PresetId;\n    }\n\n    public override int GetHashCode() => HashCode.Combine(PresetId);\n\n    public override string ToString() => $\"{nameof(PresetId)}: {PresetId}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/HDROffAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class HDROffAutomationPipelineTrigger : IHDRPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.HDROffAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is HDRAutomationEvent { IsHDROn: false };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n        var result = listener.IsHDROn;\n        return Task.FromResult(result.HasValue && !result.Value);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.HDROn = false;\n\n    public IAutomationPipelineTrigger DeepCopy() => new HDROffAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is HDROffAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/HDROnAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class HDROnAutomationPipelineTrigger : IHDRPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.HDROnAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is HDRAutomationEvent { IsHDROn: true };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n        var result = listener.IsHDROn;\n        return Task.FromResult(result.HasValue && result.Value);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.HDROn = true;\n\n    public IAutomationPipelineTrigger DeepCopy() => new HDROnAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is HDROnAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/IAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic interface IAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    string DisplayName { get; }\n\n    Task<bool> IsMatchingEvent(IAutomationEvent automationEvent);\n\n    Task<bool> IsMatchingState();\n\n    void UpdateEnvironment(AutomationEnvironment environment);\n\n    IAutomationPipelineTrigger DeepCopy();\n}\n\npublic interface IDisallowDuplicatesAutomationPipelineTrigger : IAutomationPipelineTrigger;\n\npublic interface ICompositeAutomationPipelineTrigger : IAutomationPipelineTrigger\n{\n    public IAutomationPipelineTrigger[] Triggers { get; }\n}\n\npublic interface IHDRPipelineTrigger : IDisallowDuplicatesAutomationPipelineTrigger;\n\npublic interface INativeWindowsMessagePipelineTrigger : IAutomationPipelineTrigger;\n\npublic interface IDeviceAutomationPipelineTrigger : INativeWindowsMessagePipelineTrigger\n{\n    string[] InstanceIds { get; }\n\n    IDeviceAutomationPipelineTrigger DeepCopy(string[] instanceIds);\n}\n\npublic interface IOnStartupAutomationPipelineTrigger : IDisallowDuplicatesAutomationPipelineTrigger;\n\npublic interface IOnResumeAutomationPipelineTrigger : IDisallowDuplicatesAutomationPipelineTrigger;\n\npublic interface IPowerStateAutomationPipelineTrigger : IDisallowDuplicatesAutomationPipelineTrigger;\n\npublic interface IPowerModeAutomationPipelineTrigger : IAutomationPipelineTrigger\n{\n    PowerModeState PowerModeState { get; }\n\n    IPowerModeAutomationPipelineTrigger DeepCopy(PowerModeState powerModeState);\n}\n\npublic interface IGodModePresetChangedAutomationPipelineTrigger : IAutomationPipelineTrigger\n{\n    Guid PresetId { get; }\n\n    IGodModePresetChangedAutomationPipelineTrigger DeepCopy(Guid powerModeState);\n}\n\npublic interface IGameAutomationPipelineTrigger : IDisallowDuplicatesAutomationPipelineTrigger;\n\npublic interface IProcessesAutomationPipelineTrigger : IAutomationPipelineTrigger\n{\n    ProcessInfo[] Processes { get; }\n\n    IProcessesAutomationPipelineTrigger DeepCopy(ProcessInfo[] processes);\n}\n\npublic interface ISessionLockPipelineTrigger : IDisallowDuplicatesAutomationPipelineTrigger;\n\npublic interface ISessionUnlockPipelineTrigger : IDisallowDuplicatesAutomationPipelineTrigger;\n\npublic interface ITimeAutomationPipelineTrigger : IAutomationPipelineTrigger\n{\n    bool IsSunrise { get; }\n    bool IsSunset { get; }\n    Time? Time { get; }\n    DayOfWeek[] Days { get; }\n\n    ITimeAutomationPipelineTrigger DeepCopy(bool isSunrise, bool isSunset, Time? time, DayOfWeek[] day);\n}\n\npublic interface IUserInactivityPipelineTrigger : IAutomationPipelineTrigger\n{\n    TimeSpan InactivityTimeSpan { get; }\n\n    IUserInactivityPipelineTrigger DeepCopy(TimeSpan timeSpan);\n}\n\npublic interface IWiFiConnectedPipelineTrigger : IAutomationPipelineTrigger\n{\n    string[] Ssids { get; }\n\n    IWiFiConnectedPipelineTrigger DeepCopy(string[] ssids);\n}\n\npublic interface IWiFiDisconnectedPipelineTrigger : IDisallowDuplicatesAutomationPipelineTrigger;\n\npublic interface IPeriodicAutomationPipelineTrigger : IAutomationPipelineTrigger\n{\n    public TimeSpan Period { get; }\n\n    IPeriodicAutomationPipelineTrigger DeepCopy(TimeSpan period);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/LidClosedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class LidClosedAutomationPipelineTrigger : INativeWindowsMessagePipelineTrigger, IDisallowDuplicatesAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.LidClosedAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is NativeWindowsMessageEvent { Message: NativeWindowsMessage.LidClosed };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<NativeWindowsMessageListener>();\n        var result = !listener.IsLidOpen;\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.LidOpen = false;\n\n    public IAutomationPipelineTrigger DeepCopy() => new LidClosedAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is LidClosedAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/LidOpenedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class LidOpenedAutomationPipelineTrigger : INativeWindowsMessagePipelineTrigger, IDisallowDuplicatesAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.LidOpenedAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is NativeWindowsMessageEvent { Message: NativeWindowsMessage.LidOpened };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<NativeWindowsMessageListener>();\n        var result = listener.IsLidOpen;\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.LidOpen = true;\n\n    public IAutomationPipelineTrigger DeepCopy() => new LidOpenedAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is LidOpenedAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/LowWattageACAdapterConnectedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.System;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class LowWattageACAdapterConnectedAutomationPipelineTrigger : IPowerStateAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName;\n\n    public async Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not (PowerStateAutomationEvent or StartupAutomationEvent))\n            return false;\n\n        var result = await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false);\n        return result == PowerAdapterStatus.ConnectedLowWattage;\n    }\n\n    public async Task<bool> IsMatchingState()\n    {\n        var result = await Power.IsPowerAdapterConnectedAsync().ConfigureAwait(false);\n        return result == PowerAdapterStatus.ConnectedLowWattage;\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment)\n    {\n        environment.AcAdapterConnected = true;\n        environment.LowPowerAcAdapter = true;\n    }\n\n    public IAutomationPipelineTrigger DeepCopy() => new LowWattageACAdapterConnectedAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is LowWattageACAdapterConnectedAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/OnResumeAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class OnResumeAutomationPipelineTrigger : IOnResumeAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.OnResumeAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        return Task.FromResult(automationEvent is PowerStateAutomationEvent { PowerStateEvent: PowerStateEvent.Resume, PowerAdapterStateChanged: false });\n    }\n\n    public Task<bool> IsMatchingState() => Task.FromResult(false);\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.Resume = true;\n\n    public IAutomationPipelineTrigger DeepCopy() => new OnResumeAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is OnResumeAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/OnStartupAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class OnStartupAutomationPipelineTrigger : IOnStartupAutomationPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.OnStartupAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        return Task.FromResult(automationEvent is StartupAutomationEvent);\n    }\n\n    public Task<bool> IsMatchingState() => Task.FromResult(false);\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.Startup = true;\n\n    public IAutomationPipelineTrigger DeepCopy() => new OnStartupAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is OnStartupAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/PeriodicAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Text.Json.Serialization;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class PeriodicAutomationPipelineTrigger(TimeSpan period) : IPeriodicAutomationPipelineTrigger\n{\n    public string DisplayName => Resource.PeriodicActionPipelineTrigger_DisplayName;\n\n    public TimeSpan Period { get; } = period;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        return automationEvent is not TimeAutomationEvent ? Task.FromResult(false) : IsMatching();\n    }\n\n    public Task<bool> IsMatchingState() => IsMatching();\n\n    public IAutomationPipelineTrigger DeepCopy() => new PeriodicAutomationPipelineTrigger(Period);\n\n    public IPeriodicAutomationPipelineTrigger DeepCopy(TimeSpan period) => new PeriodicAutomationPipelineTrigger(period);\n\n    private Task<bool> IsMatching()\n    {\n        var currentDayMinutes = (int)DateTime.Now.TimeOfDay.TotalMinutes;\n        var isPeriod = currentDayMinutes % Period.TotalMinutes == 0;\n\n        return Task.FromResult(isPeriod);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.Period = Period;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/PowerModeAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Features;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class PowerModeAutomationPipelineTrigger(PowerModeState powerModeState) : IPowerModeAutomationPipelineTrigger\n{\n    public string DisplayName => Resource.PowerModeAutomationPipelineTrigger_DisplayName;\n\n    public PowerModeState PowerModeState { get; } = powerModeState;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not PowerModeAutomationEvent e)\n            return Task.FromResult(false);\n\n        var result = e.PowerModeState == PowerModeState;\n        return Task.FromResult(result);\n    }\n\n    public async Task<bool> IsMatchingState()\n    {\n        var feature = IoCContainer.Resolve<PowerModeFeature>();\n        return await feature.GetStateAsync().ConfigureAwait(false) == PowerModeState;\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.PowerMode = PowerModeState;\n\n    public IAutomationPipelineTrigger DeepCopy() => new PowerModeAutomationPipelineTrigger(PowerModeState);\n\n    public IPowerModeAutomationPipelineTrigger DeepCopy(PowerModeState powerModeState) => new PowerModeAutomationPipelineTrigger(powerModeState);\n\n    public override bool Equals(object? obj)\n    {\n        return obj is PowerModeAutomationPipelineTrigger t && PowerModeState == t.PowerModeState;\n    }\n\n    public override int GetHashCode() => HashCode.Combine(PowerModeState);\n\n    public override string ToString() => $\"{nameof(PowerModeState)}: {PowerModeState}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/ProcessesAreRunningAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class ProcessesAreRunningAutomationPipelineTrigger(ProcessInfo[]? processes) : IProcessesAutomationPipelineTrigger\n{\n    public string DisplayName => Resource.ProcessesAreRunningAutomationPipelineTrigger_DisplayName;\n\n    public ProcessInfo[] Processes { get; } = processes ?? [];\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not ProcessAutomationEvent { Type: ProcessEventInfoType.Started } e)\n            return Task.FromResult(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Checking for {e.ProcessInfo.Name}... [processes={string.Join(\",\", Processes.Select(p => p.Name))}]\");\n\n        if (!Processes.Contains(e.ProcessInfo) && !Processes.Select(p => p.Name).Contains(e.ProcessInfo.Name))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Process name {e.ProcessInfo.Name} not in the list.\");\n\n            return Task.FromResult(false);\n        }\n\n        var result = Processes.SelectMany(p => Process.GetProcessesByName(p.Name)).Any();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Process name {e.ProcessInfo.Name} found in process list: {result}.\");\n\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var result = Processes.SelectMany(p => Process.GetProcessesByName(p.Name)).Any();\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment)\n    {\n        environment.ProcessesStarted = true;\n        environment.Processes = Processes;\n    }\n\n    public IAutomationPipelineTrigger DeepCopy() => new ProcessesAreRunningAutomationPipelineTrigger(Processes);\n\n    public IProcessesAutomationPipelineTrigger DeepCopy(ProcessInfo[] processes) => new ProcessesAreRunningAutomationPipelineTrigger(processes);\n\n    public override bool Equals(object? obj)\n    {\n        return obj is ProcessesAreRunningAutomationPipelineTrigger t && Processes.SequenceEqual(t.Processes);\n    }\n\n    public override int GetHashCode()\n    {\n        var hc = new HashCode();\n        Processes.ForEach(p => hc.Add(p));\n        return hc.ToHashCode();\n    }\n\n    public override string ToString() => $\"{nameof(Processes)}: {string.Join(\", \", Processes)}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/ProcessesStopRunningAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class ProcessesStopRunningAutomationPipelineTrigger(ProcessInfo[]? processes)\n    : IProcessesAutomationPipelineTrigger\n{\n    public string DisplayName => Resource.ProcessesStopRunningAutomationPipelineTrigger_DisplayName;\n\n    public ProcessInfo[] Processes { get; } = processes ?? [];\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not ProcessAutomationEvent { Type: ProcessEventInfoType.Stopped } e)\n            return Task.FromResult(false);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Checking for {e.ProcessInfo.Name}... [processes={string.Join(\", \", Processes.Select(p => p.Name))}]\");\n\n        if (!Processes.Contains(e.ProcessInfo) && !Processes.Select(p => p.Name).Contains(e.ProcessInfo.Name))\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Process name {e.ProcessInfo.Name} not in the list.\");\n\n            return Task.FromResult(false);\n        }\n\n        var result = Processes.SelectMany(p => Process.GetProcessesByName(p.Name)).IsEmpty();\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Process name {e.ProcessInfo.Name} found in process list: {!result}.\");\n\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var result = Processes.SelectMany(p => Process.GetProcessesByName(p.Name)).IsEmpty();\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment)\n    {\n        environment.ProcessesStarted = false;\n        environment.Processes = Processes;\n    }\n\n    public IAutomationPipelineTrigger DeepCopy() => new ProcessesStopRunningAutomationPipelineTrigger(Processes);\n\n    public IProcessesAutomationPipelineTrigger DeepCopy(ProcessInfo[] processes) => new ProcessesStopRunningAutomationPipelineTrigger(processes);\n\n    public override bool Equals(object? obj)\n    {\n        return obj is ProcessesStopRunningAutomationPipelineTrigger t && Processes.SequenceEqual(t.Processes);\n    }\n\n    public override int GetHashCode()\n    {\n        var hc = new HashCode();\n        Processes.ForEach(p => hc.Add(p));\n        return hc.ToHashCode();\n    }\n\n    public override string ToString() => $\"{nameof(Processes)}: {string.Join(\", \", Processes)}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/SessionLockAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class SessionLockAutomationPipelineTrigger : ISessionLockPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.SessionLockAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is SessionLockUnlockAutomationEvent { Locked: true };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<SessionLockUnlockListener>();\n        var result = listener.IsLocked;\n        return Task.FromResult(result.HasValue && result.Value);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.SessionLocked = true;\n\n    public IAutomationPipelineTrigger DeepCopy() => new SessionLockAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is SessionLockAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/SessionUnlockAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class SessionUnlockAutomationPipelineTrigger : ISessionUnlockPipelineTrigger\n{\n    [JsonIgnore]\n    public string DisplayName => Resource.SessionUnlockAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is SessionLockUnlockAutomationEvent { Locked: false };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<SessionLockUnlockListener>();\n        var result = listener.IsLocked;\n        return Task.FromResult(result.HasValue && !result.Value);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.SessionLocked = false;\n\n    public IAutomationPipelineTrigger DeepCopy() => new SessionUnlockAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is SessionUnlockAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/TimeAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class TimeAutomationPipelineTrigger(bool isSunrise, bool isSunset, Time? time, DayOfWeek[]? days)\n    : ITimeAutomationPipelineTrigger\n{\n    public bool IsSunrise { get; } = isSunrise;\n\n    public bool IsSunset { get; } = isSunset;\n\n    public Time? Time { get; } = time;\n\n    public DayOfWeek[] Days { get; } = days ?? [];\n\n    public string DisplayName => Resource.TimeAutomationPipelineTrigger_DisplayName;\n\n    private readonly SunriseSunset _sunriseSunset = IoCContainer.Resolve<SunriseSunset>();\n\n    public async Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not TimeAutomationEvent e)\n            return false;\n\n        return await IsMatching(e.Time, e.Day).ConfigureAwait(false);\n    }\n\n    public async Task<bool> IsMatchingState()\n    {\n        var now = DateTime.UtcNow;\n        var time = new Time(now.Hour, now.Minute);\n        var day = now.DayOfWeek;\n\n        return await IsMatching(time, day).ConfigureAwait(false);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment)\n    {\n        environment.IsSunset = IsSunset;\n        environment.IsSunrise = IsSunrise;\n        environment.Time = Time;\n        environment.Days = Days;\n    }\n\n    private async Task<bool> IsMatching(Time time, DayOfWeek dayOfWeek)\n    {\n        if (Time == time && (Days.IsEmpty() || Days.Contains(dayOfWeek)))\n            return true;\n\n        var (sunrise, sunset) = await _sunriseSunset.GetSunriseSunsetAsync().ConfigureAwait(false);\n\n        if (IsSunrise && sunrise == time)\n            return true;\n\n        if (IsSunset && sunset == time)\n            return true;\n\n        return false;\n    }\n    public IAutomationPipelineTrigger DeepCopy() => new TimeAutomationPipelineTrigger(IsSunrise, IsSunset, Time, Days);\n\n    public ITimeAutomationPipelineTrigger DeepCopy(bool isSunrise, bool isSunset, Time? time, DayOfWeek[] days) => new TimeAutomationPipelineTrigger(isSunrise, isSunset, time, days);\n\n    public override bool Equals(object? obj)\n    {\n        return obj is TimeAutomationPipelineTrigger t &&\n               IsSunrise == t.IsSunrise &&\n               IsSunset == t.IsSunset &&\n               Time == t.Time &&\n               Days == t.Days;\n    }\n\n    public override int GetHashCode() => HashCode.Combine(IsSunrise, IsSunset, Time, Days);\n\n    public override string ToString() =>\n        $\"{nameof(IsSunrise)}: {IsSunrise},\" +\n        $\" {nameof(IsSunset)}: {IsSunset},\" +\n        $\" {nameof(Time)}: {Time},\" +\n        $\" {nameof(Days)}: {Days}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/UserInactivityAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.AutoListeners;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class UserInactivityAutomationPipelineTrigger(TimeSpan inactivityTimeSpan) : IUserInactivityPipelineTrigger\n{\n    public string DisplayName => InactivityTimeSpan == TimeSpan.Zero\n        ? Resource.UserInactivityAutomationPipelineTrigger_DisplayName_Zero\n        : Resource.UserInactivityAutomationPipelineTrigger_DisplayName;\n\n    public TimeSpan InactivityTimeSpan { get; } = inactivityTimeSpan;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not UserInactivityAutomationEvent e)\n            return Task.FromResult(false);\n\n        var result = InactivityTimeSpan == e.InactivityTimeSpan;\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var listener = IoCContainer.Resolve<UserInactivityAutoListener>();\n        var result = InactivityTimeSpan == listener.InactivityTimeSpan;\n        return Task.FromResult(result);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.UserActive = InactivityTimeSpan == TimeSpan.Zero;\n\n    public IAutomationPipelineTrigger DeepCopy() => new UserInactivityAutomationPipelineTrigger(InactivityTimeSpan);\n\n    public IUserInactivityPipelineTrigger DeepCopy(TimeSpan timeSpan) => new UserInactivityAutomationPipelineTrigger(timeSpan);\n\n    public override bool Equals(object? obj) => obj is UserInactivityAutomationPipelineTrigger t && InactivityTimeSpan == t.InactivityTimeSpan;\n\n    public override int GetHashCode() => InactivityTimeSpan.GetHashCode();\n\n    public override string ToString() => $\"{nameof(InactivityTimeSpan)}: {InactivityTimeSpan}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/WiFiConnectedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\n[method: JsonConstructor]\npublic class WiFiConnectedAutomationPipelineTrigger(string[] ssids) : IWiFiConnectedPipelineTrigger\n{\n    public string DisplayName => Resource.WiFiConnectedAutomationPipelineTrigger_DisplayName;\n\n    public string[] Ssids { get; } = ssids;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        if (automationEvent is not WiFiAutomationEvent { IsConnected: true } e)\n            return Task.FromResult(false);\n\n        return Task.FromResult(Ssids.IsEmpty() || Ssids.Contains(e.Ssid));\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var ssid = WiFi.GetConnectedNetworkSsid();\n\n        if (Ssids.IsEmpty() && ssid is not null)\n            return Task.FromResult(true);\n\n        return Task.FromResult(Ssids.Contains(ssid));\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment)\n    {\n        environment.WiFiConnected = true;\n        environment.WiFiSsid = string.Join(\",\", Ssids);\n    }\n\n    public IAutomationPipelineTrigger DeepCopy() => new WiFiConnectedAutomationPipelineTrigger(Ssids);\n\n    public IWiFiConnectedPipelineTrigger DeepCopy(string[] ssids) => new WiFiConnectedAutomationPipelineTrigger(ssids);\n\n    public override bool Equals(object? obj) => obj is WiFiConnectedAutomationPipelineTrigger t && Ssids.SequenceEqual(t.Ssids);\n\n    public override int GetHashCode() => HashCode.Combine(Ssids);\n\n    public override string ToString() => $\"{nameof(Ssids)}: {string.Join(\",\", Ssids)}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Pipeline/Triggers/WiFiDisconnectedAutomationPipelineTrigger.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\npublic class WiFiDisconnectedAutomationPipelineTrigger : IWiFiDisconnectedPipelineTrigger\n{\n    public string DisplayName => Resource.WiFiDisconnectedAutomationPipelineTrigger_DisplayName;\n\n    public Task<bool> IsMatchingEvent(IAutomationEvent automationEvent)\n    {\n        var result = automationEvent is WiFiAutomationEvent { IsConnected: false };\n        return Task.FromResult(result);\n    }\n\n    public Task<bool> IsMatchingState()\n    {\n        var ssid = WiFi.GetConnectedNetworkSsid();\n        return Task.FromResult(ssid is null);\n    }\n\n    public void UpdateEnvironment(AutomationEnvironment environment) => environment.WiFiConnected = false;\n\n    public IAutomationPipelineTrigger DeepCopy() => new WiFiDisconnectedAutomationPipelineTrigger();\n\n    public override bool Equals(object? obj) => obj is WiFiDisconnectedAutomationPipelineTrigger;\n\n    public override int GetHashCode() => HashCode.Combine(DisplayName);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.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 LenovoLegionToolkit.Lib.Automation.Resources {\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    public class Resource {\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 Resource() {\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        public 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(\"LenovoLegionToolkit.Lib.Automation.Resources.Resource\", typeof(Resource).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        public 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 string similar to When AC power adapter is connected.\n        /// </summary>\n        public static string ACAdapterConnectedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When AC power adapter is disconnected.\n        /// </summary>\n        public static string ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill apps.\n        /// </summary>\n        public static string DeactivateGPUAutomationStepState_KillApps {\n            get {\n                return ResourceManager.GetString(\"DeactivateGPUAutomationStepState_KillApps\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Restart GPU.\n        /// </summary>\n        public static string DeactivateGPUAutomationStepState_RestartGPU {\n            get {\n                return ResourceManager.GetString(\"DeactivateGPUAutomationStepState_RestartGPU\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deactivate GPU.\n        /// </summary>\n        public static string DeactivateGpuQuickAction_Title {\n            get {\n                return ResourceManager.GetString(\"DeactivateGpuQuickAction_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} second.\n        /// </summary>\n        public static string Delay_Second {\n            get {\n                return ResourceManager.GetString(\"Delay_Second\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} seconds.\n        /// </summary>\n        public static string Delay_Second_Many {\n            get {\n                return ResourceManager.GetString(\"Delay_Second_Many\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When device is connected.\n        /// </summary>\n        public static string DeviceConnectedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"DeviceConnectedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When device is disconnected.\n        /// </summary>\n        public static string DeviceDisconnectedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When displays turn off.\n        /// </summary>\n        public static string DisplayOffAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"DisplayOffAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When displays turn on.\n        /// </summary>\n        public static string DisplayOnAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"DisplayOnAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When external display is connected.\n        /// </summary>\n        public static string ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When external display is disconnected.\n        /// </summary>\n        public static string ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When game is running.\n        /// </summary>\n        public static string GamesAreRunningAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"GamesAreRunningAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When game closes.\n        /// </summary>\n        public static string GamesStopAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"GamesStopAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When Custom Mode preset changes.\n        /// </summary>\n        public static string GodModePresetChangedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When HDR turns off.\n        /// </summary>\n        public static string HDROffAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"HDROffAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When HDR turns on.\n        /// </summary>\n        public static string HDROnAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"HDROnAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lid closed.\n        /// </summary>\n        public static string LidClosedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"LidClosedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lid opened.\n        /// </summary>\n        public static string LidOpenedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"LidOpenedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When low wattage AC power adapter is connected.\n        /// </summary>\n        public static string LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string MacroAutomationStepState_Off {\n            get {\n                return ResourceManager.GetString(\"MacroAutomationStepState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string MacroAutomationStepState_On {\n            get {\n                return ResourceManager.GetString(\"MacroAutomationStepState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On resume.\n        /// </summary>\n        public static string OnResumeAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"OnResumeAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On startup.\n        /// </summary>\n        public static string OnStartupAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"OnStartupAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string OverclockDiscreteGPUAutomationStepState_Off {\n            get {\n                return ResourceManager.GetString(\"OverclockDiscreteGPUAutomationStepState_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On.\n        /// </summary>\n        public static string OverclockDiscreteGPUAutomationStepState_On {\n            get {\n                return ResourceManager.GetString(\"OverclockDiscreteGPUAutomationStepState_On\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Periodic action.\n        /// </summary>\n        public static string PeriodicActionPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"PeriodicActionPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When Power Mode is changed.\n        /// </summary>\n        public static string PowerModeAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"PowerModeAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When app starts.\n        /// </summary>\n        public static string ProcessesAreRunningAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When app closes.\n        /// </summary>\n        public static string ProcessesStopRunningAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Session locked.\n        /// </summary>\n        public static string SessionLockAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"SessionLockAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Session unlocked.\n        /// </summary>\n        public static string SessionUnlockAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"SessionUnlockAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At specified time.\n        /// </summary>\n        public static string TimeAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"TimeAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When user becomes inactive.\n        /// </summary>\n        public static string UserInactivityAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"UserInactivityAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When user becomes active.\n        /// </summary>\n        public static string UserInactivityAutomationPipelineTrigger_DisplayName_Zero {\n            get {\n                return ResourceManager.GetString(\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When Wi-Fi is connected.\n        /// </summary>\n        public static string WiFiConnectedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"WiFiConnectedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When Wi-Fi is disconnected.\n        /// </summary>\n        public static string WiFiDisconnectedAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.ar.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند اتصال كابل الشحن</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند ازالة كابل الشحن</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>قتل التطبيقات</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>أعادة تشغيل كرت الشاشة</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} ثوانى</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} ثانية</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند اتصال كابل شحن ذو قوة كهربائية منخفضة</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند بدء التشغيل</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند تغير وضع الطاقة</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عندما يبدأ التطبيق</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عندما يغلق تطبيق</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند أوقات محددة</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند توصيل شاشة خارجية</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند فصل الشاشة الخارجية</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند تشغيل الشاشات</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عندما تنطفئ شاشات</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عندما تغلق اللعبة</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عندما تكون اللعبة قيد التشغيل</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>عندما يصبح المستخدم نشطا</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عندما يصبح المستخدم غير نشط</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>إلغاء تفعيل GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند توصيل واي فاي</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند انقطاع اتصال واي فاي</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>إيقاف</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>مفعل</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند فصل الجهاز</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>عند توصيل الجهاز</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.bg.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При свързване на зарядно</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При изваждане на зарядното</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Спри приложенията</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Рестартирай видео картата</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} секунда</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} секунди</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При свързване на зарядно с ниска мощност</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При стартиране</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При промяна в режима на захранване</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При отваряне на приложение</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При затваряне на приложение</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>В определено време</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При свързване на външен дисплей</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При откачане на външен дисплей</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При включване на дисплеи</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При изключване на дисплеи</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При отваряне на капака</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При затваряне на капака</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При затваряне на игра</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>По време на игра</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Когато потребителят стане активен</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Когато потребителят стане неактивен</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Деактивиране на видеокартата</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Изключен</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Включен</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При промяна в предварително зададената настройка на режима по избор</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Периодично действие</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При свързване към Wi-Fi мрежа</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При изключване на Wi-Fi мрежа</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При възобновяване</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.bs.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad je punjač priključen</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad je punjač isključen</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Ugasi aplikacije</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Ponovo pokreni grafičku</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} sekunda</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} sekundi</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad je punjač manje snage priključen</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri pokretanju</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kada je aplikacija ugašen</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>U određeno vrijeme</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.ca.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.cs.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Když je AC nabíječka připojena</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Když je AC nabíječka odpojena</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Ukončit aplikace</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Restartovat GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} sekund</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} sekund</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Když je připojena AC nabíječka s nízkým výkonem</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Při spuštění</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Když je změněn režim výkonu</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Při spuštění aplikace</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Když se aplikace ukončí</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>V zadaný čas</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Při připojení externího monitoru</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Při odpojení externího monitoru</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Když se monitory zapnou</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Když se monitory vypnou</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Víko otevřeno</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Víko zavřeno</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Když se hra ukončí</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Když hra běží</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.de.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn Netzteil angeschlossen ist</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn Netzteil nicht angeschlossen ist</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Anwendungen schließen</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>GPU neustarten</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} Sekunde</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} Sekunden</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn Netzteil mit niedriger Leistung angeschlossen ist</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Beim Start</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn Energiemodus geändert wird</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn die App startet</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn Anwendung geschlossen wird</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Zur bestimmten Zeit</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn ein externer Monitor angeschlossen wird</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn ein externer Monitor getrennt wird</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn Bildschirme eingeschaltet werden</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn Bildschirme ausgeschaltet werden</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Deckel geöffnet</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Deckel geschlossen</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn das Spiel beendet wird</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn das Spiel ausgeführt wird</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Wenn ein Benutzer aktiv wird</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn ein Benutzer inaktiv wird</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Deaktiviere GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>An</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn sich die Vorlage des benutzerdefinierten Modus ändert</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Regelmäßige Aktion</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn eine WLAN-Verbindung besteht</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn die WLAN-Verbindung getrennt wird</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Beim aufwachen</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn HDR ausgeschaltet ist</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn HDR eingeschaltet ist</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>An</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn Gerät getrennt ist</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wenn Gerät verbunden ist</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.el.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν ο φορτιστής είναι συνδεδεμένος</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν ο φορτιστής είναι αποσυνδεδεμένος</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Τερματισμός εφαρμογών</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Επανεκκίνηση GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} δευτερόλεπτο</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} δευτερόλεπτα</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν είναι συνδεδεμένος φορτιστής χαμηλής ισχύος</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Κατά την εκκίνηση</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν αλλάξει η Λειτουργία Ισχύος</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν ξεκινά η εφαρμογή</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν κλείνει η εφαρμογή</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Σε καθορισμένη ώρα</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν συνδεθεί εξωτερική οθόνη</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν αποσυνδεθεί εξωτερική οθόνη</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν ανοίγουν οι οθόνες</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν σβήνουν οι οθόνες</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν ανοίγει το καπάκι</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν κλείνει το καπάκι</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν κλείνει το παιχνίδι</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν εκτελείται το παιχνίδι</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Όταν ο χρήστης γίνεται ενεργός</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν ο χρήστης γίνεται ανενεργός</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν η προεπιλογή Προσαρμοσμένης Λειτουργίας αλλάζει</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Περιοδική δράση</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν το Wi-Fi είναι συνδεδεμένο</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν το Wi-Fi είναι αποσυνδεδεμένο</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Στη συνέχιση</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν το HDR ενεργοποιείται</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν το HDR απενεργοποιείται</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Ενεργό</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν η συσκευή είναι αποσυνδεδεμένη</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Όταν η συσκευή είναι συνδεδεμένη</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.es.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando el adaptador de corriente alterna está conectado</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando el adaptador de corriente alterna está desconectado</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Terminar aplicaciones</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Reiniciar la GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} segundo</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} segundos</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Al conectar el adaptador de corriente alterna a baja potencia</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Al iniciar</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Al cambiar el modo de alimentación</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Al iniciarse la aplicación</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Al cerrar la aplicación</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>A la hora indicada</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando se conecta una pantalla externa</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando se desconecta una pantalla externa</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Al encender las pantallas</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Al apagar las pantallas</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Tapa abierta</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Tapa cerrada</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Al cerrar el juego</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando el juego está en marcha</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Cuando el usuario está activo</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando el usuario está inactivo</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Desactivar la GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Al cambiar el predefinido del modo personalizado</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Acción periódica</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Si el Wi-Fi está conectado</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Si el Wi-Fi está desconectado</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>En resumen</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando se apaga HDR</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando se enciende HDR</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Encendido</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando el dispositivo está desconectado</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cuando el dispositivo está conectado</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.fr.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsque le chargeur est connecté</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsque le chargeur est déconnecté</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Tuer les applications</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Redémarrer le GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} seconde</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} secondes</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsqu'une faible puissance d'alimentation est connectée</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Au démarrage</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsque le mode d’alimentation change</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quand l'application démarre</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lors de la fermeture d'une application</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>À l’heure spécifiée</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsque l'écran externe est connecté</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsque l'écran externe est déconnecté</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quand les écrans s'allument</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quand les écrans s'éteignent</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Capot ouvert</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Capot fermé</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>À la fermeture du jeu</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pendant l'exécution du jeu</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Quand l'utilisateur devient actif</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quand l'utilisateur devient inactif</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Désactiver le GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quand le Mode Personnalisé change</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Action périodique</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quand le Wifi est connecté</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quand le Wifi est déconnecté</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>À la reprise</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsque le HDR est désactivé</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsque le HDR est activé</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Désactivé</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Activé</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsque l'appareil est déconnecté</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lorsque l'appareil est connecté</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.hu.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha a töltőadapter csatlakoztatva van</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha a töltőadapter nincs csatlakoztatva</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Alkalmazások kilövése</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Videókártya újraindítása</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} másodperc</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} másodperc</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha alacsony teljesítményű töltőadapter van csatlakoztatva</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Indításkor</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Amikor a Teljesítmény üzemmód változik</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Alkalmazás indításakor</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Alkalmazás bezárásakor</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Megadott időben</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha külső kijelző csatlakoztatásra kerül</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha külső kijelző lecsatlakoztatásra kerül</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha a kijelző bekapcsol</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha a kijelző kikapcsol</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Fedél felnyitva</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Fedél lehajtva</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Játék bezárásánál</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Játék futtatásánál</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Amikor a felhasználó aktívvá válik</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Amikor a felhasználó inaktívvá válik</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Videókártya kikapcsolása</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Amikor az Egyéni üzemmód beállításai megváltoznak</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Rendszeres művelet</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha a Wi-Fi csatlakoztatva van</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha a Wi-Fi nincs csatlakoztatva</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Folytatásnál</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Amikor a HDR kikapcsol</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Amikor a HDR bekapcsol</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Be</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha a készüléket leválasztották</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ha a készülék csatlakoztatva van</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.it.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando l'alimentatore è collegato</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando l'alimentatore è scollegato</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Chiudi applicazioni</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Riavvia GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} secondo</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} secondi</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando è collegato un alimentatore di bassa potenza</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>All'avvio</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando si cambia la modalità di alimentazione</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>All'avvio dell'app</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando l'app si chiude</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>All'ora specificata</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando il display esterno è collegato</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando il display esterno è scollegato</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando lo schermo si accende</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando lo schermo si spegne</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Coperchio aperto</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Coperchio chiuso</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando l'utente diventa inattivo</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Disattiva GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.ja.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>ACアタブタが接続された時</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>ACアダプタが切断された時</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>アプリを強制終了</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>GPUを再起動</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} 秒</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} 秒</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>低出力なACアダプタが接続された時</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>起動した時</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>電源モードが変更された時</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>アプリケーションが起動した時</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>アプリケーションが終了した時</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>時間になったら</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>外部ディスプレイが接続された時</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>外部ディスプレイが切断された時</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>ディスプレイがオンになった時</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>ディスプレイがオフになった時</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>蓋が開いた時</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>蓋が閉じた時</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>ゲーム終了が終了した時</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>ゲームが起動した時</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>ユーザーがアクティブになった時</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>ユーザーが非アクティブになった時</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>GPUを非アクティブ化</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>カスタムモードのプリセットが変更された時</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>定期的なアクション</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wi-Fiが接続された時</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wi-Fiが切断された時</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>再開時</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>HDRがオフになった時</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>HDRがオンになった時</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>オン</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>デバイスが切断された時</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>デバイスが接続された時</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.ko.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.lv.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad ir pievienots maiņstrāvas adapteris</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad ir atvienots maiņstrāvas adapteris</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Nokaut lietotnes</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Restartēt GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} sekunde</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} sekundes</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ja ir pievienots zemas jaudas maiņstrāvas adapteris</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Palaišanas laikā</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ja tiek mainīts Enerģijas Režīms</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad aplikācija tiek palaista</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad aplikācija aizveras</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Noteiktā laikā</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad tiek pievienots papildus ekrāns</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad tiek atvienots papildus ekrāns</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad ekrāns ieslēdzas</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad ekrāns izslēdzas</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Vāks atveras</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Vāks aizveras</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad datorspēle aizveras</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad datorspēle ir atvērta</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Kad lietotājs kļūst aktīvs</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad lietotājs kļūst neaktīvs</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Deaktivizēt GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Iespējots</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kad Pielāgotā Režīma priekšiestatījums izmainās</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.nl-nl.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer de oplader is aangesloten</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer de oplader is losgekoppeld</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Apps stoppen</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>GPU Opnieuw Opstarten</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} seconde</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} seconden</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer een wisselstroomadapter met laag wattage is aangesloten</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Bij Opstarten</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer de energiemodus wordt gewijzigd</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Bij starten van app</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer app afgesloten</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Op bepaalde tijd</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer een extern beeldscherm is aangesloten</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer een extern beeldscherm is losgekoppeld</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer de schermen ingeschakeld worden</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer de schermen uitgeschakeld worden</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Deksel geopend</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Deksel gesloten</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer spel afgesloten wordt</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer het spel draait</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Wanneer gebruiker actief wordt</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer gebruiker inactief wordt</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>GPU uitschakelen</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer aangepaste modus wordt veranderd</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Periodieke actie</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer Wi-Fi verbinding is verbonden</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer Wi-Fi verbinding is verbroken</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Na het hervatten</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer HDR uitgeschakeld wordt</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer HDR ingeschakeld wordt</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Aan</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer apparaat niet verbonden is</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wanneer apparaat verbonden is</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.pl.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy zasilanie sieciowe jest podłączone</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy zasilanie sieciowe jest odłączone</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Zamknij aplikacje</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Zrestartuj GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} sekunda</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} sekund</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy jest podłączony zasilacz o słabej mocy</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Przy uruchomieniu</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy tryb zasilania ulegnie zmianie</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Przy uruchomieniu aplikacji</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Przy zamknięciu aplikacji</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>We wskazanym czasie</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy podłączono wyświetlacz zewnętrzny</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy odłączono wyświetlacz zewnętrzny</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy wyświetlacze zostaną włączone</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy wyświetlacze zostaną wyłączone</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pokrywa otwarta</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pokrywa zamknięta</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy gra się wyłączy</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy gra jest uruchomiona</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Gdy użytkownik staje się aktywny</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy użytkownik staje się nieaktywny</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Wyłącz GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy szablon trybu własnego ulegnie zmianie</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Akcja periodyczna</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy połączono z Wi-Fi</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy rozłączono z Wi-Fi</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Przy wybudzeniu</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy HDR jest wyłączony</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy HDR jest włączony</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Włączone</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy odłączane jest urządzenie</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gdy podłączane jest urządzenie</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.pt-br.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um carregador for conectado</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o carregador for desconectado</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Fechar todas aplicações</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Reiniciar GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} segundo</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} segundos</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o carregador de baixa potência for conectado</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ao iniciar</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o plano de energia for mudado</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um programa iniciar</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um programa for fechado</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Em um horário específico</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um monitor externo for conectado</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um monitor externo for desconectado</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando a tela ligar</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando a tela desligar</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Tampa aberta</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Tampa fechada</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um jogo fechar</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um jogo estiver sendo executado</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Quando usuário ficar ativo</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando usuário ficar inativo</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Desativar GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando uma Pré-definição de Modo Personalizado mudar</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ação Periódica</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o Wi-Fi estiver conectado</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o Wi-Fi está desconectado</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ao retomar</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o HDR for desligado</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o HDR for ligado</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Desativado</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Ativado</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o dispositivo for desconectado</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o dispositivo for conectado</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.pt.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o carregador for ligado</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o carregador for desligado</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Fechar apps</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Reiniciar GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} segundos</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} segundos</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um carregador de baixa voltagem for ligado</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ao ligar</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o esquema de energia é alterado</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando uma aplicação inicia</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando a app fecha</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>A uma hora específica</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um monitor externo é ligado</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um monitor externo é desligado</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando os ecrãs ligam</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando os ecrãs desligam</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Tampa é aberta</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Tampa fechada</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um jogo fecha</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando um jogo está a rodar</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Quando o utilizador fica ativo</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o utilizador fica inativo</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Desativar GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando a predefinição do Modo Customizado muda</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ação periódica</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o Wi-Fi estiver conectado</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o Wi-Fi estiver desconectado</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ao continuar</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o HDR for desligado</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o HDR for ligado</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Ligado</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o dispositivo estiver desconectado</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quando o dispositivo estiver conectado</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.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  <data name=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When AC power adapter is connected</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When AC power adapter is disconnected</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Kill apps</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Restart GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} second</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} seconds</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When low wattage AC power adapter is connected</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>On startup</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When Power Mode is changed</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When app starts</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When app closes</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>At specified time</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When external display is connected</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When external display is disconnected</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When displays turn on</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When displays turn off</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lid opened</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Lid closed</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When game closes</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When game is running</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>When user becomes active</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When user becomes inactive</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Deactivate GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When Custom Mode preset changes</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Periodic action</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When Wi-Fi is connected</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When Wi-Fi is disconnected</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>On resume</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When HDR turns off</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When HDR turns on</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>On</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When device is disconnected</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>When device is connected</value>\n  </data>\n  <data name=\"SessionLockAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Session locked</value>\n  </data>\n  <data name=\"SessionUnlockAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Session unlocked</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.ro.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când alimentatorul este conectat</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când alimentatorul este deconectat</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Închidere aplicații</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Repornire GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} secundă</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} secunde</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când alimentatorul de putere scăzută este conectat</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>La pornire</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când modul de putere este schimbat</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când pornește aplicația</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când o aplicație se închide</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>La timpul specificat</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când un afișaj extern este conectat</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când un afișaj extern este deconectat</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când afișajele se aprind</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când afișajele se opresc</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Capac deschis</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Capac închis</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când jocul se închide</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Când jocul rulează</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.ru.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Когда блок питания подключен</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Когда блок питания отключен</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Завершить процессы</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Перезапустить графический драйвер</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} секунда</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} секунд</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Когда малопотребляющий блок питания подключен</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При запуске системы</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Когда измененен режима питания</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При запуске приложения</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При закрытии приложения</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>В заданное время</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При подключении внешнего дисплея</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При отключении внешнего дисплея</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При включении дисплеев</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При отключении дисплеев</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Крышка ноутбука открыта</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Крышка ноутбука закрыта</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При закрытии игры</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При запущенной игре</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Когда пользователь проявляет активность</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Когда пользователь перестает проявлять активность</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Деактивировать GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Когда изменяется пресет пользовательского режима</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Периодическое действие</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Когда подключен Wi-Fi</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Когда отключен Wi-Fi</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При возобновлении</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При отключении HDR</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При включении HDR</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Вкл.</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При отсоединении устройства</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При соединении устройства</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.sk.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri pripojení sieťového napájania</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri odpojení sieťového napájania</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Ukončiť aplikácie</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Reštartovať GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} sekunda</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} sekúnd</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri pripojení nízkovýkonového sieťového napájania</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri štarte</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri zmene napájacieho režimu</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri štarte aplikácie</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri zatvorení aplikácie</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>V určený čas</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri pripojení externého displeja</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri odpojení externého displeja</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Keď sa zapnú displeje</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Keď sa vypnú displeje</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kryt otvorený</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kryt zatvorený</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Pri zatvorení hry</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Keď je hra spustená</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Deaktivovať GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.tr.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>AC güç adaptörü bağlanınca</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>AC güç adaptörü çıkarılınca</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Uygulamaları kapat</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>GPU'yu yeniden başlat</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} saniye</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} saniye</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Düşük voltajlı AC güç adaptörü bağlandığında</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Başlangıçta</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Güç Modu değiştirildiğinde</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Uygulama başlatıldığında</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Uygulama kapandığında</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Belirli bir zamanda</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Harici ekran bağlandığında</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Harici ekran bağlantısı kesildiğinde</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ekranlar açıldığında</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Ekranlar kapandığında</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kapak açıldığında</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kapak kapatıldığında</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Oyun kapandığında</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Oyun çalıştığında</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Kullanıcı aktif olduğunda</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kullanıcı etkin olmadığında</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>GPU Pasifleştir</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Özel mod ön ayarı değiştiğinde</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Süreli eylem</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wi-Fi bağlandığında</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wi-Fi bağlantısı kesildiğinde</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Özgeçmişte</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>HDR kapatıldığında</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>HDR açıldığında</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Açık</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cihaz bağlantısı kesildiğinde</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Cihaz bağlandığında</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.uk.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли блок живлення під'єднаний</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли блок живлення від'єднаний</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Примусово закрити застосунки</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Перезапустити ГП</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} секунда</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} секунд</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли малопотужний блок живлення під'єднаний</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При запуску</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли режим потужності змінений</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При запуску застосунку</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли застосунок закрито</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>У зазначений час</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли зовнішній дисплей підключений</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли зовнішній дисплей відключений</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли дисплей увімкнений</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли дисплей вимкнутий</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Кришка відкрита</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Кришка закрита</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли гра закривається</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли гра запущена</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Коли користувач стає активним</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли користувач стає неактивним</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Вимкнути графічний процесор</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Вимкнений</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Увімкнений</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли змінюється попереднє налаштування користувальницького режиму</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Періодична дія</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли під'єднано до Wi-Fi</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли від'єднано від Wi-Fi</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>При поновленні</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли HDR вимкнено</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли HDR увімкнено</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Вимкнути</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Увімкнути</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли пристрій від'єднано</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Коли пристрій під'єднано</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.uz-latn-uz.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quwatlaw adapteri jalǵanǵanda</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quwatlaw adapteri úzilgende</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Proceslerdi juwmaqlaw</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Grafikalıq drayverdı qayta iske qosıw</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} sekund</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} sekund</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kem vattlı quwatlaw blogı jalǵanǵanda</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Iske túsirgende</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Quwatlılıq rejimi ózgergende</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Baǵdarlama iske túskende</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Baǵdarlama jabılǵanda</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Belgilengen waqıtta</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Sırtqı display qosılǵanda</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Sırtqı display óshirilgende</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Displeydi qosqanda</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Displeydi óshirgende</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Noutbuk qaqpaǵı ashıldı</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Noutbuk qaqpaǵı jawıldı</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Oyın jabılǵanda</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Oyın iske túsirilgende</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Paydalanıwshı online bolǵanda</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Paydalanıwshı óshik bolǵanında</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>GIQQın isten alıw</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Óshik</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Janıq</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Kostyum rejimi aldınnan ornatılǵanda</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.vi.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi kết nối với nguồn điện</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi ngắt kết nối nguồn điện</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>Tắt app dùng GPU rời</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>Khởi động lại GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} giây</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} giây</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi kết nối với nguồn điện công suất thấp</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi khởi động</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi đổi chế độ hoạt động</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi chạy ứng dụng</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi ứng dụng được tắt đi</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Tại một thời điểm nhất định</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi kết nối với màn hình ngoài</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi ngắt kết nối với màn hình ngoài</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi bật màn hình</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi tắt màn hình</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Mở màn hình</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gập màn hình</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi tắt game</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi game khởi chạy</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>Khi người dùng có mặt</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi người dùng rời đi</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>Ngắt GPU rời</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi thay đổi thiết lập trong chế độ Tùy Chỉnh</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Hành động định kỳ</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi kết nối Wi-Fi</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi ngắt kết nối Wi-Fi</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi tạm dừng</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi HDR tắt</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi HDR bật</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>Bật</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi ngắt kết nối thiết bị</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Khi kết nối thiết bị</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.zh-hans.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当电源适配器插入时</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当电源适配器断开时</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>强制关闭应用</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>重启显卡</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} 秒</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} 秒</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当较低功率电源适配器插入时</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当开机时</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当性能模式改变时</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当应用程序启动时</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当指定的应用关闭时</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>在特定的时间</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当连接了外置屏幕后</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当断开了外置屏幕后</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当显示器打开时</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当显示器关闭时</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>打开盖子时</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>合上盖子时</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当关闭游戏后</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当打开游戏时</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>当用户重新开始操作电脑后</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当用户长时间未操作电脑后</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>强制休眠独显</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>开</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当自定义模式预设切换时</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>循环自动化</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当与 Wi-Fi 连接时</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当与 Wi-Fi 断开连接时</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当唤醒时</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当 HDR 关闭时</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当 HDR 开启时</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>关</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>开</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当与设备断开连接时</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>当与设备连接时</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Resources/Resource.zh-hant.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當與電源供應器連接時</value>\n  </data>\n  <data name=\"ACAdapterDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當與電源供應器中斷連接時</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_KillApps\" xml:space=\"preserve\">\n    <value>強制關閉應用程式</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepState_RestartGPU\" xml:space=\"preserve\">\n    <value>重新啟動 GPU</value>\n  </data>\n  <data name=\"Delay_Second\" xml:space=\"preserve\">\n    <value>{0} 秒</value>\n  </data>\n  <data name=\"Delay_Second_Many\" xml:space=\"preserve\">\n    <value>{0} 秒</value>\n  </data>\n  <data name=\"LowWattageACAdapterConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當與較低功率電源供應器連接時</value>\n  </data>\n  <data name=\"OnStartupAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當啟動時</value>\n  </data>\n  <data name=\"PowerModeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當電源模式變更時</value>\n  </data>\n  <data name=\"ProcessesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當應用程式啟動時</value>\n  </data>\n  <data name=\"ProcessesStopRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當應用程式關閉後</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>指定時間</value>\n  </data>\n  <data name=\"ExternalDisplayConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當與外接顯示器連接時</value>\n  </data>\n  <data name=\"ExternalDisplayDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當與外接顯示器中斷連接時</value>\n  </data>\n  <data name=\"DisplayOnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當顯示器開啟時</value>\n  </data>\n  <data name=\"DisplayOffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當顯示器關閉時</value>\n  </data>\n  <data name=\"LidOpenedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>開啟上蓋時</value>\n  </data>\n  <data name=\"LidClosedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>關閉上蓋時</value>\n  </data>\n  <data name=\"GamesStopAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當關閉遊戲後</value>\n  </data>\n  <data name=\"GamesAreRunningAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當執行遊戲時</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName_Zero\" xml:space=\"preserve\">\n    <value>當使用者處於活動狀態</value>\n  </data>\n  <data name=\"UserInactivityAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當使用者處於非活動狀態時</value>\n  </data>\n  <data name=\"DeactivateGpuQuickAction_Title\" xml:space=\"preserve\">\n    <value>休眠 GPU</value>\n    <comment>The display name of the default Quick Action that is presented to the user upon first installation.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n  </data>\n  <data name=\"GodModePresetChangedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當客製化模式預設變更時</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>自動化循環</value>\n    <comment>The display name of the periodic automation action.</comment>\n  </data>\n  <data name=\"WiFiConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當與 Wi-Fi 連接時</value>\n  </data>\n  <data name=\"WiFiDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當與 Wi-Fi 中斷連接時</value>\n  </data>\n  <data name=\"OnResumeAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當喚醒時</value>\n  </data>\n  <data name=\"HDROffAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當 HDR 關閉時</value>\n  </data>\n  <data name=\"HDROnAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當 HDR 開啟時</value>\n  </data>\n  <data name=\"MacroAutomationStepState_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"MacroAutomationStepState_On\" xml:space=\"preserve\">\n    <value>開啟</value>\n  </data>\n  <data name=\"DeviceDisconnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當與裝置中斷連接時</value>\n  </data>\n  <data name=\"DeviceConnectedAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>當與裝置連接時</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/AbstractFeatureAutomationStep.cs",
    "content": "﻿using System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic abstract class AbstractFeatureAutomationStep<T>(T state)\n    : IAutomationStep<T> where T : struct\n{\n    private readonly IFeature<T> _feature = IoCContainer.Resolve<IFeature<T>>();\n\n    public T State { get; } = state;\n\n    public Task<bool> IsSupportedAsync() => _feature.IsSupportedAsync();\n\n    public virtual async Task RunAsync(AutomationContext context, AutomationEnvironment environment,\n        CancellationToken token)\n    {\n        var currentState = await _feature.GetStateAsync().ConfigureAwait(false);\n        if (!State.Equals(currentState))\n            await _feature.SetStateAsync(State).ConfigureAwait(false);\n        MessagingCenter.Publish(new FeatureStateMessage<T>(State));\n    }\n\n    public Task<T[]> GetAllStatesAsync() => _feature.GetAllStatesAsync();\n\n    public abstract IAutomationStep DeepCopy();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/AlwaysOnUsbAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class AlwaysOnUsbAutomationStep(AlwaysOnUSBState state)\n    : AbstractFeatureAutomationStep<AlwaysOnUSBState>(state)\n{\n    public override IAutomationStep DeepCopy() => new AlwaysOnUsbAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/BatteryAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class BatteryAutomationStep(BatteryState state)\n    : AbstractFeatureAutomationStep<BatteryState>(state)\n{\n    public override IAutomationStep DeepCopy() => new BatteryAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/BatteryNightChargeAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class BatteryNightChargeAutomationStep(BatteryNightChargeState state)\n    : AbstractFeatureAutomationStep<BatteryNightChargeState>(state)\n{\n    public override IAutomationStep DeepCopy() => new BatteryNightChargeAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/DeactivateGPUAutomationStep.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic class DeactivateGPUAutomationStep(DeactivateGPUAutomationStepState state)\n    : IAutomationStep<DeactivateGPUAutomationStepState>\n{\n    private readonly GPUController _controller = IoCContainer.Resolve<GPUController>();\n\n    public DeactivateGPUAutomationStepState State { get; } = state;\n\n    public Task<DeactivateGPUAutomationStepState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<DeactivateGPUAutomationStepState>());\n\n    public Task<bool> IsSupportedAsync() => Task.FromResult(_controller.IsSupported());\n\n    public async Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        if (!_controller.IsSupported())\n            return;\n\n        var status = await _controller.RefreshNowAsync().ConfigureAwait(false);\n\n        switch (State)\n        {\n            case DeactivateGPUAutomationStepState.KillApps when status.State is GPUState.Active:\n                await _controller.KillGPUProcessesAsync().ConfigureAwait(false);\n                break;\n            case DeactivateGPUAutomationStepState.RestartGPU when status.State is GPUState.Active or GPUState.Inactive:\n                await _controller.RestartGPUAsync().ConfigureAwait(false);\n                break;\n        }\n    }\n\n    IAutomationStep IAutomationStep.DeepCopy() => new DeactivateGPUAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/DelayAutomationStep.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class DelayAutomationStep(Delay state)\n    : IAutomationStep<Delay>\n{\n    public Delay State { get; } = state;\n\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task<Delay[]> GetAllStatesAsync() => Task.FromResult(new Delay[] {\n        new(1),\n        new(2),\n        new(3),\n        new(5)\n    });\n\n    public IAutomationStep DeepCopy() => new DelayAutomationStep(State);\n\n    public Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token) => Task.Delay(TimeSpan.FromSeconds(State.DelaySeconds), token);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/DisplayBrightnessAutomationStep.cs",
    "content": "﻿using System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class DisplayBrightnessAutomationStep(int brightness)\n    : IAutomationStep\n{\n    private readonly DisplayBrightnessController _controller = IoCContainer.Resolve<DisplayBrightnessController>();\n    public int Brightness { get; } = brightness;\n\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        return _controller.SetBrightnessAsync(Brightness);\n    }\n\n    IAutomationStep IAutomationStep.DeepCopy() => new DisplayBrightnessAutomationStep(Brightness);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/DpiScaleAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class DpiScaleAutomationStep(DpiScale state)\n    : AbstractFeatureAutomationStep<DpiScale>(state)\n{\n    public override IAutomationStep DeepCopy() => new DpiScaleAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/FlipToStartAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class FlipToStartAutomationStep(FlipToStartState state)\n    : AbstractFeatureAutomationStep<FlipToStartState>(state)\n{\n    public override IAutomationStep DeepCopy() => new FlipToStartAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/FnLockAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class FnLockAutomationStep(FnLockState state)\n    : AbstractFeatureAutomationStep<FnLockState>(state)\n{\n    public override IAutomationStep DeepCopy() => new FnLockAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/GodModePresetAutomationStep.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers.GodMode;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class GodModePresetAutomationStep(Guid presetId)\n    : IAutomationStep\n{\n    private readonly PowerModeFeature _feature = IoCContainer.Resolve<PowerModeFeature>();\n    private readonly GodModeController _controller = IoCContainer.Resolve<GodModeController>();\n\n    public Guid PresetId { get; } = presetId;\n\n    public async Task<bool> IsSupportedAsync()\n    {\n        var mi = await Compatibility.GetMachineInformationAsync().ConfigureAwait(false);\n        return mi.Properties.SupportsGodMode;\n    }\n\n    public Task<GodModeState> GetStateAsync() => _controller.GetStateAsync();\n\n    public async Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        var state = await _controller.GetStateAsync().ConfigureAwait(false);\n        if (!state.Presets.ContainsKey(PresetId))\n            return;\n\n        var newState = state with { ActivePresetId = PresetId };\n\n        await _controller.SetStateAsync(newState).ConfigureAwait(false);\n\n        if (await _feature.GetStateAsync().ConfigureAwait(false) == PowerModeState.GodMode)\n            await _controller.ApplyStateAsync().ConfigureAwait(false);\n    }\n\n    public IAutomationStep DeepCopy() => new GodModePresetAutomationStep(PresetId);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/HDRAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class HDRAutomationStep(HDRState state)\n    : AbstractFeatureAutomationStep<HDRState>(state)\n{\n    public override IAutomationStep DeepCopy() => new HDRAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/HybridModeAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class HybridModeAutomationStep(HybridModeState state)\n    : AbstractFeatureAutomationStep<HybridModeState>(state)\n{\n    public override IAutomationStep DeepCopy() => new HybridModeAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/IAutomationStep.cs",
    "content": "﻿using System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic interface IAutomationStep\n{\n    Task<bool> IsSupportedAsync();\n\n    Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token);\n\n    IAutomationStep DeepCopy();\n}\n\npublic interface IAutomationStep<T> : IAutomationStep where T : struct\n{\n    T State { get; }\n\n    Task<T[]> GetAllStatesAsync();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/InstantBootAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class InstantBootAutomationStep(InstantBootState state)\n    : AbstractFeatureAutomationStep<InstantBootState>(state)\n{\n    public override IAutomationStep DeepCopy() => new InstantBootAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/MacroAutomationStep.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Macro;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic class MacroAutomationStep(MacroAutomationStepState state) : IAutomationStep<MacroAutomationStepState>\n{\n    private readonly MacroController _controller = IoCContainer.Resolve<MacroController>();\n\n    public MacroAutomationStepState State { get; set; } = state;\n\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task<MacroAutomationStepState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<MacroAutomationStepState>());\n\n    public Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        _controller.SetEnabled(State is MacroAutomationStepState.On);\n        return Task.CompletedTask;\n    }\n\n    public IAutomationStep DeepCopy() => new MacroAutomationStep(State);\n\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/MicrophoneAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class MicrophoneAutomationStep(MicrophoneState state)\n    : AbstractFeatureAutomationStep<MicrophoneState>(state)\n{\n    public override IAutomationStep DeepCopy() => new MicrophoneAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/NotificationAutomationStep.cs",
    "content": "﻿using System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class NotificationAutomationStep(string? text)\n    : IAutomationStep\n{\n    public string? Text { get; } = text;\n\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        if (!string.IsNullOrWhiteSpace(Text))\n        {\n            var text = Text.Replace(\"$RUN_OUTPUT$\", context.LastRunOutput);\n            MessagingCenter.Publish(new NotificationMessage(NotificationType.AutomationNotification, text));\n        }\n\n        return Task.CompletedTask;\n    }\n\n    IAutomationStep IAutomationStep.DeepCopy() => new NotificationAutomationStep(Text);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/OneLevelWhiteKeyboardBacklightAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class OneLevelWhiteKeyboardBacklightAutomationStep(OneLevelWhiteKeyboardBacklightState state)\n    : AbstractFeatureAutomationStep<OneLevelWhiteKeyboardBacklightState>(state)\n{\n    public override IAutomationStep DeepCopy() => new OneLevelWhiteKeyboardBacklightAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/OverDriveAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class OverDriveAutomationStep(OverDriveState state)\n    : AbstractFeatureAutomationStep<OverDriveState>(state)\n{\n    public override IAutomationStep DeepCopy() => new OverDriveAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/OverclockDiscreteGPUAutomationStep.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic class OverclockDiscreteGPUAutomationStep(OverclockDiscreteGPUAutomationStepState state)\n    : IAutomationStep<OverclockDiscreteGPUAutomationStepState>\n{\n    private readonly GPUOverclockController _controller = IoCContainer.Resolve<GPUOverclockController>();\n\n    public OverclockDiscreteGPUAutomationStepState State { get; } = state;\n\n    public Task<OverclockDiscreteGPUAutomationStepState[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<OverclockDiscreteGPUAutomationStepState>());\n\n    public Task<bool> IsSupportedAsync() => _controller.IsSupportedAsync();\n\n    public async Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        if (!await _controller.IsSupportedAsync().ConfigureAwait(false))\n            return;\n\n        var (_, info) = _controller.GetState();\n\n        switch (State)\n        {\n            case OverclockDiscreteGPUAutomationStepState.On:\n                _controller.SaveState(true, info);\n                break;\n            case OverclockDiscreteGPUAutomationStepState.Off:\n                _controller.SaveState(false, info);\n                break;\n        }\n\n        await _controller.ApplyStateAsync(true).ConfigureAwait(false);\n    }\n\n    IAutomationStep IAutomationStep.DeepCopy() => new OverclockDiscreteGPUAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/PanelLogoBacklightAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class PanelLogoBacklightAutomationStep(PanelLogoBacklightState state)\n    : AbstractFeatureAutomationStep<PanelLogoBacklightState>(state)\n{\n    public override IAutomationStep DeepCopy() => new PanelLogoBacklightAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/PlaySoundAutomationStep.cs",
    "content": "﻿using System.Media;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class PlaySoundAutomationStep(string? path) : IAutomationStep\n{\n    public string? Path { get; } = path;\n\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        if (Path is null)\n            return Task.CompletedTask;\n\n        return Task.Run(() =>\n        {\n            var player = new SoundPlayer(Path);\n            player.PlaySync();\n        }, token);\n    }\n\n    public IAutomationStep DeepCopy() => new PlaySoundAutomationStep(Path);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/PortsBacklightAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class PortsBacklightAutomationStep(PortsBacklightState state)\n    : AbstractFeatureAutomationStep<PortsBacklightState>(state)\n{\n    public override IAutomationStep DeepCopy() => new PortsBacklightAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/PowerModeAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class PowerModeAutomationStep(PowerModeState state)\n    : AbstractFeatureAutomationStep<PowerModeState>(state)\n{\n    public override IAutomationStep DeepCopy() => new PowerModeAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/QuickActionAutomationStep.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic class QuickActionAutomationStep(Guid? pipelineId)\n    : IAutomationStep\n{\n    public Guid? PipelineId { get; } = pipelineId;\n\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token) => Task.CompletedTask;\n\n    IAutomationStep IAutomationStep.DeepCopy() => new QuickActionAutomationStep(PipelineId);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/RGBKeyboardBacklightAutomationStep.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic class RGBKeyboardBacklightAutomationStep(RGBKeyboardBacklightPreset state)\n    : IAutomationStep<RGBKeyboardBacklightPreset>\n{\n    private readonly RGBKeyboardBacklightController _controller = IoCContainer.Resolve<RGBKeyboardBacklightController>();\n\n    public RGBKeyboardBacklightPreset State { get; } = state;\n\n    public Task<RGBKeyboardBacklightPreset[]> GetAllStatesAsync() => Task.FromResult(Enum.GetValues<RGBKeyboardBacklightPreset>());\n\n    public Task<bool> IsSupportedAsync() => _controller.IsSupportedAsync();\n\n    public async Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        if (!await _controller.IsSupportedAsync().ConfigureAwait(false))\n            return;\n\n        await _controller.SetLightControlOwnerAsync(true).ConfigureAwait(false);\n        await _controller.SetPresetAsync(State).ConfigureAwait(false);\n\n        MessagingCenter.Publish(new RGBKeyboardBacklightChangedMessage());\n    }\n\n    IAutomationStep IAutomationStep.DeepCopy() => new RGBKeyboardBacklightAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/RefreshRateAutomationStep.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Newtonsoft.Json;\nusing WindowsDisplayAPI.Exceptions;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class RefreshRateAutomationStep(RefreshRate state)\n    : AbstractFeatureAutomationStep<RefreshRate>(state)\n{\n    public override Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        return RetryHelper.RetryAsync(() => base.RunAsync(context, environment, token),\n            5,\n            TimeSpan.FromSeconds(1),\n            ex => ex is ModeChangeException,\n            nameof(RefreshRateAutomationStep));\n    }\n\n    public override IAutomationStep DeepCopy() => new RefreshRateAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/ResolutionAutomationStep.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Newtonsoft.Json;\nusing WindowsDisplayAPI.Exceptions;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class ResolutionAutomationStep(Resolution state)\n    : AbstractFeatureAutomationStep<Resolution>(state)\n{\n    public override Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        return RetryHelper.RetryAsync(() => base.RunAsync(context, environment, token),\n            5,\n            TimeSpan.FromSeconds(1),\n            ex => ex is ModeChangeException,\n            nameof(ResolutionAutomationStep));\n    }\n\n    public override IAutomationStep DeepCopy() => new ResolutionAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/RunAutomationStep.cs",
    "content": "﻿using System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class RunAutomationStep(string? scriptPath, string? scriptArguments, bool? runSilently, bool? waitUntilFinished)\n    : IAutomationStep\n{\n    public string? ScriptPath { get; } = scriptPath;\n\n    public string? ScriptArguments { get; } = scriptArguments;\n\n    public bool RunSilently { get; } = runSilently ?? true;\n\n    public bool WaitUntilFinished { get; } = waitUntilFinished ?? false;\n\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public async Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        if (string.IsNullOrWhiteSpace(ScriptPath))\n            return;\n\n        var (_, output) = await CMD.RunAsync(ScriptPath,\n            ScriptArguments ?? string.Empty,\n            RunSilently,\n            WaitUntilFinished,\n            environment.Dictionary,\n            token).ConfigureAwait(false);\n        context.LastRunOutput = output.TrimEnd();\n    }\n\n    IAutomationStep IAutomationStep.DeepCopy() => new RunAutomationStep(ScriptPath, ScriptArguments, RunSilently, WaitUntilFinished);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/SpeakerAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class SpeakerAutomationStep(SpeakerState state)\n    : AbstractFeatureAutomationStep<SpeakerState>(state)\n{\n    public override IAutomationStep DeepCopy() => new SpeakerAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/SpectrumKeyboardBacklightBrightnessAutomationStep.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class SpectrumKeyboardBacklightBrightnessAutomationStep(int state)\n    : IAutomationStep<int>\n{\n    private readonly SpectrumKeyboardBacklightController _controller = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();\n\n    private readonly int[] _allStates = Enumerable.Range(0, 10).ToArray();\n\n    public int State { get; } = state;\n\n    public Task<int[]> GetAllStatesAsync() => Task.FromResult(_allStates);\n\n    public Task<bool> IsSupportedAsync() => _controller.IsSupportedAsync();\n\n    public async Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        if (!await _controller.IsSupportedAsync().ConfigureAwait(false))\n            return;\n\n        if (!_allStates.Contains(State))\n            throw new InvalidOperationException(nameof(State));\n\n        await _controller.SetBrightnessAsync(State).ConfigureAwait(false);\n\n        MessagingCenter.Publish(new SpectrumBacklightChangedMessage());\n    }\n\n    public IAutomationStep DeepCopy() => new SpectrumKeyboardBacklightBrightnessAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/SpectrumKeyboardBacklightImportProfileAutomationStep.cs",
    "content": "﻿using System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class SpectrumKeyboardBacklightImportProfileAutomationStep(string? path)\n    : IAutomationStep\n{\n    private readonly SpectrumKeyboardBacklightController _controller = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();\n\n    public string? Path { get; } = path;\n\n    public Task<bool> IsSupportedAsync() => _controller.IsSupportedAsync();\n\n    public async Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        if (Path is null || !await _controller.IsSupportedAsync().ConfigureAwait(false))\n            return;\n\n        var profile = await _controller.GetProfileAsync().ConfigureAwait(false);\n        await _controller.ImportProfileDescription(profile, Path).ConfigureAwait(false);\n\n        MessagingCenter.Publish(new SpectrumBacklightChangedMessage());\n    }\n\n    IAutomationStep IAutomationStep.DeepCopy() => new SpectrumKeyboardBacklightImportProfileAutomationStep(Path);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/SpectrumKeyboardBacklightProfileAutomationStep.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class SpectrumKeyboardBacklightProfileAutomationStep(int state)\n    : IAutomationStep<int>\n{\n    private readonly SpectrumKeyboardBacklightController _controller = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();\n\n    private readonly int[] _allStates = Enumerable.Range(1, 6).ToArray();\n\n    public int State { get; } = state;\n\n    public Task<int[]> GetAllStatesAsync() => Task.FromResult(_allStates);\n\n    public Task<bool> IsSupportedAsync() => _controller.IsSupportedAsync();\n\n    public async Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        if (!await _controller.IsSupportedAsync().ConfigureAwait(false))\n            return;\n\n        if (!_allStates.Contains(State))\n            throw new InvalidOperationException(nameof(State));\n\n        await _controller.SetProfileAsync(State).ConfigureAwait(false);\n\n        MessagingCenter.Publish(new SpectrumBacklightChangedMessage());\n    }\n\n    public IAutomationStep DeepCopy() => new SpectrumKeyboardBacklightProfileAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/TouchpadLockAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class TouchpadLockAutomationStep(TouchpadLockState state)\n    : AbstractFeatureAutomationStep<TouchpadLockState>(state)\n{\n    public override IAutomationStep DeepCopy() => new TouchpadLockAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/TurnOffMonitorsAutomationStep.cs",
    "content": "﻿using System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Listeners;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic class TurnOffMonitorsAutomationStep : IAutomationStep\n{\n    private readonly NativeWindowsMessageListener _nativeWindowsMessageListener = IoCContainer.Resolve<NativeWindowsMessageListener>();\n\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token) => _nativeWindowsMessageListener.TurnOffMonitorAsync();\n\n    public IAutomationStep DeepCopy() => new TurnOffMonitorsAutomationStep();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/TurnOffWiFiAutomationStep.cs",
    "content": "﻿using System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic class TurnOffWiFiAutomationStep : IAutomationStep\n{\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        WiFi.TurnOff();\n        return Task.CompletedTask;\n    }\n\n    public IAutomationStep DeepCopy() => new TurnOffWiFiAutomationStep();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/TurnOnWiFiAutomationStep.cs",
    "content": "﻿using System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.System;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\npublic class TurnOnWiFiAutomationStep : IAutomationStep\n{\n    public Task<bool> IsSupportedAsync() => Task.FromResult(true);\n\n    public Task RunAsync(AutomationContext context, AutomationEnvironment environment, CancellationToken token)\n    {\n        WiFi.TurnOn();\n        return Task.CompletedTask;\n    }\n\n    public IAutomationStep DeepCopy() => new TurnOnWiFiAutomationStep();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/WhiteKeyboardBacklightAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class WhiteKeyboardBacklightAutomationStep(WhiteKeyboardBacklightState state)\n    : AbstractFeatureAutomationStep<WhiteKeyboardBacklightState>(state)\n{\n    public override IAutomationStep DeepCopy() => new WhiteKeyboardBacklightAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Steps/WinKeyAutomationStep.cs",
    "content": "﻿using Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Steps;\n\n[method: JsonConstructor]\npublic class WinKeyAutomationStep(WinKeyState state)\n    : AbstractFeatureAutomationStep<WinKeyState>(state)\n{\n    public override IAutomationStep DeepCopy() => new WinKeyAutomationStep(State);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Structs.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.Automation.Resources;\nusing Newtonsoft.Json;\n\nnamespace LenovoLegionToolkit.Lib.Automation;\n\n[method: JsonConstructor]\npublic readonly struct Delay(int delaySeconds) : IDisplayName\n{\n    public int DelaySeconds { get; } = delaySeconds;\n\n    public string DisplayName => string.Format(DelaySeconds == 1 ? Resource.Delay_Second : Resource.Delay_Second_Many, DelaySeconds);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Automation/Utils/AutomationSettings.cs",
    "content": "﻿using System.Collections.Generic;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Settings;\n\nnamespace LenovoLegionToolkit.Lib.Automation.Utils;\n\npublic class AutomationSettings() : AbstractSettings<AutomationSettings.AutomationSettingsStore>(\"automation.json\")\n{\n    public class AutomationSettingsStore\n    {\n        public bool IsEnabled { get; set; }\n\n        public List<AutomationPipeline> Pipelines { get; set; } = [];\n    }\n\n    protected override AutomationSettingsStore Default => new()\n    {\n        Pipelines =\n        {\n            new AutomationPipeline\n            {\n                Trigger = new ACAdapterConnectedAutomationPipelineTrigger(),\n                Steps = { new PowerModeAutomationStep(PowerModeState.Balance) },\n            },\n            new AutomationPipeline\n            {\n                Trigger = new ACAdapterDisconnectedAutomationPipelineTrigger(),\n                Steps = { new PowerModeAutomationStep(PowerModeState.Quiet) },\n            },\n            new AutomationPipeline\n            {\n                Name = Resource.DeactivateGpuQuickAction_Title,\n                Steps = { new DeactivateGPUAutomationStep(DeactivateGPUAutomationStepState.KillApps) },\n            },\n        },\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Enums.cs",
    "content": "﻿using System;\nusing System.ComponentModel.DataAnnotations;\nusing LenovoLegionToolkit.Lib.Macro.Resources;\n\nnamespace LenovoLegionToolkit.Lib.Macro;\n\npublic enum MacroDirection\n{\n    Unknown,\n    Down,\n    Up,\n    Wheel,\n    HorizontalWheel,\n    Move\n}\n\n[Flags]\npublic enum MacroRecorderSettings\n{\n    Keyboard = 1,\n    Mouse = 2,\n    Movement = 4\n}\n\npublic enum MacroSource\n{\n    Unknown,\n    [Display(ResourceType = typeof(Resource), Name = \"MacroSource_Keyboard\")]\n    Keyboard,\n    [Display(ResourceType = typeof(Resource), Name = \"MacroSource_Mouse\")]\n    Mouse\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/IoCModule.cs",
    "content": "﻿using Autofac;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Macro.Utils;\n\nnamespace LenovoLegionToolkit.Lib.Macro;\n\npublic class IoCModule : Module\n{\n    protected override void Load(ContainerBuilder builder)\n    {\n        builder.Register<MacroSettings>();\n        builder.Register<MacroController>();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/LenovoLegionToolkit.Lib.Macro.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<TargetFramework>net8.0-windows</TargetFramework>\n\t\t<RuntimeIdentifier>win-x64</RuntimeIdentifier>\n\t\t<Platforms>x64</Platforms>\n\t\t<Nullable>enable</Nullable>\n\t\t<Copyright>© 2024 Bartosz Cichecki</Copyright>\n\t\t<AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n\t\t<NeutralLanguage>en</NeutralLanguage>\n\t\t<UseWindowsForms>true</UseWindowsForms>\n\t</PropertyGroup>\n\t<ItemGroup>\n\t\t<ProjectReference Include=\"..\\LenovoLegionToolkit.Lib\\LenovoLegionToolkit.Lib.csproj\" />\n\t</ItemGroup>\n\t<ItemGroup>\n\t  <Compile Update=\"Resources\\Resource.Designer.cs\">\n\t    <DesignTime>True</DesignTime>\n\t    <AutoGen>True</AutoGen>\n\t    <DependentUpon>Resource.resx</DependentUpon>\n\t  </Compile>\n\t</ItemGroup>\n\t<ItemGroup>\n\t  <EmbeddedResource Update=\"Resources\\Resource.resx\">\n\t    <Generator>PublicResXFileCodeGenerator</Generator>\n\t    <LastGenOutput>Resource.Designer.cs</LastGenOutput>\n\t  </EmbeddedResource>\n\t</ItemGroup>\n</Project>\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/MacroController.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Runtime.CompilerServices;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Macro.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.UI.WindowsAndMessaging;\n\nnamespace LenovoLegionToolkit.Lib.Macro;\n\npublic class MacroController\n{\n    public class RecorderReceivedEventArgs : EventArgs\n    {\n        public MacroEvent MacroEvent { get; init; }\n    }\n\n    public class RecorderStoppedEventArgs : EventArgs\n    {\n        public bool Interrupted { get; init; }\n    }\n\n    private static readonly uint[] AllowedKeys = [0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69];\n    public static readonly int[] AllowedRepeatCounts = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\n\n    private readonly MacroRecorder _recorder = new();\n    private readonly MacroPlayer _player = new();\n\n    private readonly HOOKPROC _kbProc;\n    private readonly MacroSettings _settings;\n\n    private HHOOK _kbHook;\n\n    public event EventHandler<RecorderReceivedEventArgs>? RecorderReceived;\n    public event EventHandler<RecorderStoppedEventArgs>? RecorderStopped;\n\n    public bool IsEnabled => _settings.Store.IsEnabled;\n\n    public MacroController(MacroSettings settings)\n    {\n        _settings = settings;\n\n        _kbProc = LowLevelKeyboardProc;\n\n        _recorder.Received += Recorder_Received;\n        _recorder.Stopped += Recorder_Stopped;\n    }\n\n    private void Recorder_Received(object? sender, MacroRecorder.ReceivedEventArgs e) => RecorderReceived?.Invoke(this, new() { MacroEvent = e.MacroEvent });\n\n    private void Recorder_Stopped(object? sender, MacroRecorder.StoppedEventArgs e) => RecorderStopped?.Invoke(this, new() { Interrupted = e.Interrupted });\n\n    public void SetEnabled(bool enabled)\n    {\n        _settings.Store.IsEnabled = enabled;\n        _settings.SynchronizeStore();\n    }\n\n    public Dictionary<MacroIdentifier, MacroSequence> GetSequences() => _settings.Store.Sequences;\n\n    public void SetSequences(Dictionary<MacroIdentifier, MacroSequence> sequences)\n    {\n        CleanUp(ref sequences);\n\n        _settings.Store.Sequences = sequences;\n        _settings.SynchronizeStore();\n    }\n\n    public void Start()\n    {\n        if (_kbHook != default)\n            return;\n\n        _kbHook = PInvoke.SetWindowsHookEx(WINDOWS_HOOK_ID.WH_KEYBOARD_LL, _kbProc, HINSTANCE.Null, 0);\n    }\n\n    public void StartRecording(MacroRecorderSettings settings = MacroRecorderSettings.Keyboard) => _recorder.StartRecording(settings);\n\n    public void StopRecording() => _recorder.StopRecording();\n\n    private unsafe LRESULT LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)\n    {\n        if (nCode != PInvoke.HC_ACTION)\n            return PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam);\n\n        if (!IsEnabled)\n            return PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam);\n\n        ref var kbStruct = ref Unsafe.AsRef<KBDLLHOOKSTRUCT>((void*)lParam.Value);\n\n        _player.InterruptIfNeeded(kbStruct);\n\n        var shouldRun = !_recorder.IsRecording;\n        shouldRun &= kbStruct.flags == 0;\n        shouldRun &= _settings.Store.Sequences.GetValueOrNull(new(MacroSource.Keyboard, kbStruct.vkCode))?.Events?.Length > 0;\n        shouldRun &= AllowedKeys.Contains(kbStruct.vkCode);\n\n        if (!shouldRun)\n            return PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam);\n\n        var sequence = _settings.Store.Sequences[new(MacroSource.Keyboard, kbStruct.vkCode)];\n        Play(sequence);\n\n        return new LRESULT(96);\n    }\n\n    private void Play(MacroSequence sequence) => Task.Run(() => _player.StartPlayingAsync(sequence));\n\n    private static void CleanUp(ref Dictionary<MacroIdentifier, MacroSequence> sequences)\n    {\n        sequences = ClearDownsWithoutUps(sequences);\n        sequences = ClearEmptySequences(sequences);\n    }\n\n    private static Dictionary<MacroIdentifier, MacroSequence> ClearEmptySequences(Dictionary<MacroIdentifier, MacroSequence> sequences)\n    {\n        return sequences.Where(kv => kv.Value.Events?.Length > 0)\n            .ToDictionary(kv => kv.Key, kv => kv.Value);\n    }\n\n    private static Dictionary<MacroIdentifier, MacroSequence> ClearDownsWithoutUps(Dictionary<MacroIdentifier, MacroSequence> sequences)\n    {\n        var result = new Dictionary<MacroIdentifier, MacroSequence>();\n        foreach (var kv in sequences)\n            result[kv.Key] = ClearDownsWithoutUps(kv.Value);\n        return result;\n    }\n\n    private static MacroSequence ClearDownsWithoutUps(MacroSequence sequence)\n    {\n        var macroEvents = new List<MacroEvent>(sequence.Events ?? []);\n        for (var i = macroEvents.Count - 1; i >= 0; i--)\n        {\n            var macroEvent = macroEvents[i];\n\n            switch (macroEvent.Direction)\n            {\n                case MacroDirection.Down:\n                    {\n                        var remove = true;\n\n                        for (var j = i; j < macroEvents.Count; j++)\n                        {\n                            if (macroEvents[j].Direction != MacroDirection.Up || macroEvents[j].Key != macroEvent.Key || macroEvents[j].Source != macroEvent.Source)\n                                continue;\n\n                            remove = false;\n                            break;\n                        }\n\n                        if (remove)\n                            macroEvents.RemoveAt(i);\n                        break;\n                    }\n                case MacroDirection.Up:\n                case MacroDirection.Unknown:\n                default:\n                    continue;\n            }\n        }\n\n        return sequence with { Events = [.. macroEvents] };\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.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 LenovoLegionToolkit.Lib.Macro.Resources {\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    public class Resource {\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 Resource() {\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        public 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(\"LenovoLegionToolkit.Lib.Macro.Resources.Resource\", typeof(Resource).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        public 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 string similar to Keyboard.\n        /// </summary>\n        public static string MacroSource_Keyboard {\n            get {\n                return ResourceManager.GetString(\"MacroSource_Keyboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mouse.\n        /// </summary>\n        public static string MacroSource_Mouse {\n            get {\n                return ResourceManager.GetString(\"MacroSource_Mouse\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.ar.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>لوحة المفاتيح</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>فأرة</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.bg.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.bs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.cs.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.de.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Tastatur</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Maus</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.el.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Πληκτρολόγιο</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Ποντίκι</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.es.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Teclado</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Ratón</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.fr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Clavier</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Souris</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.hu.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Billentyűzet</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Egér</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.it.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.ja.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>キーボード</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>マウス</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.ko.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.lv.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.nl-nl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Toetsenbord</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Muis</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.pl.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Klawiatura</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Mysz</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.pt-br.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Teclado</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Mouse</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.pt.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Teclado</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Rato</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n\t<!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n\t\n\t<xsd:schema id=\"root\" xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\">\n\t\t<xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n\t\t\t<xsd:complexType>\n\t\t\t\t<xsd:choice maxOccurs=\"unbounded\">\n\t\t\t\t\t<xsd:element name=\"data\">\n\t\t\t\t\t\t<xsd:complexType>\n\t\t\t\t\t\t\t<xsd:sequence>\n\t\t\t\t\t\t\t\t<xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n\t\t\t\t\t\t\t\t<xsd:element name=\"comment\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"2\" />\n\t\t\t\t\t\t\t</xsd:sequence>\n\t\t\t\t\t\t\t<xsd:attribute name=\"name\" type=\"xsd:string\" msdata:Ordinal=\"1\" />\n\t\t\t\t\t\t\t<xsd:attribute name=\"type\" type=\"xsd:string\" msdata:Ordinal=\"3\" />\n\t\t\t\t\t\t\t<xsd:attribute name=\"mimetype\" type=\"xsd:string\" msdata:Ordinal=\"4\" />\n\t\t\t\t\t\t</xsd:complexType>\n\t\t\t\t\t</xsd:element>\n\t\t\t\t\t<xsd:element name=\"resheader\">\n\t\t\t\t\t\t<xsd:complexType>\n\t\t\t\t\t\t\t<xsd:sequence>\n\t\t\t\t\t\t\t\t<xsd:element name=\"value\" type=\"xsd:string\" minOccurs=\"0\" msdata:Ordinal=\"1\" />\n\t\t\t\t\t\t\t</xsd:sequence>\n\t\t\t\t\t\t\t<xsd:attribute name=\"name\" type=\"xsd:string\" use=\"required\" />\n\t\t\t\t\t\t</xsd:complexType>\n\t\t\t\t\t</xsd:element>\n\t\t\t\t</xsd:choice>\n\t\t\t</xsd:complexType>\n\t\t</xsd:element>\n\t</xsd:schema>\n\t<resheader name=\"resmimetype\">\n\t\t<value>text/microsoft-resx</value>\n\t</resheader>\n\t<resheader name=\"version\">\n\t\t<value>1.3</value>\n\t</resheader>\n\t<resheader name=\"reader\">\n\t\t<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n\t</resheader>\n\t<resheader name=\"writer\">\n\t\t<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n\t</resheader>\n\t<data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Keyboard</value>\n\t</data>\n\t<data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Mouse</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.ro.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.ru.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Клавиатура</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Мышь</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.sk.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.tr.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Klavye</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Fare</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.uk.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Клавіатура</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Миша</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.uz-latn-uz.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.vi.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>Bàn phím</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>Chuột</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.zh-hans.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>键盘</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>鼠标</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Resources/Resource.zh-hant.resx",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n\t\tMicrosoft ResX Schema\n\n\t\tVersion 1.3\n\n\t\tThe primary goals of this format is to allow a simple XML format \n\t\tthat is mostly human readable. The generation and parsing of the \n\t\tvarious data types are done through the TypeConverter classes \n\t\tassociated with the data types.\n\n\t\tExample:\n\n\t\t... ado.net/XML headers & schema ...\n\t\t<resheader name=\"resmimetype\">text/microsoft-resx</resheader>\n\t\t<resheader name=\"version\">1.3</resheader>\n\t\t<resheader name=\"reader\">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>\n\t\t<resheader name=\"writer\">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>\n\t\t<data name=\"Name1\">this is my long string</data>\n\t\t<data name=\"Color1\" type=\"System.Drawing.Color, System.Drawing\">Blue</data>\n\t\t<data name=\"Bitmap1\" mimetype=\"application/x-microsoft.net.object.binary.base64\">\n\t\t\t[base64 mime encoded serialized .NET Framework object]\n\t\t</data>\n\t\t<data name=\"Icon1\" type=\"System.Drawing.Icon, System.Drawing\" mimetype=\"application/x-microsoft.net.object.bytearray.base64\">\n\t\t\t[base64 mime encoded string representing a byte array form of the .NET Framework object]\n\t\t</data>\n\n\t\tThere are any number of \"resheader\" rows that contain simple \n\t\tname/value pairs.\n\n\t\tEach data row contains a name, and value. The row also contains a \n\t\ttype or mimetype. Type corresponds to a .NET class that support \n\t\ttext/value conversion through the TypeConverter architecture. \n\t\tClasses that don't support this are serialized and stored with the \n\t\tmimetype set.\n\n\t\tThe mimetype is used for serialized objects, and tells the \n\t\tResXResourceReader how to depersist the object. This is currently not \n\t\textensible. For a given mimetype the value must be set accordingly:\n\n\t\tNote - application/x-microsoft.net.object.binary.base64 is the format \n\t\tthat the ResXResourceWriter will generate, however the reader can \n\t\tread any of the formats listed below.\n\n\t\tmimetype: application/x-microsoft.net.object.binary.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Serialization.Formatters.Binary.BinaryFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.soap.base64\n\t\tvalue   : The object must be serialized with \n\t\t\t: System.Runtime.Serialization.Formatters.Soap.SoapFormatter\n\t\t\t: and then encoded with base64 encoding.\n\n\t\tmimetype: application/x-microsoft.net.object.bytearray.base64\n\t\tvalue   : The object must be serialized into a byte array \n\t\t\t: using a System.ComponentModel.TypeConverter\n\t\t\t: and then encoded with base64 encoding.\n\t-->\n  <xsd:schema xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\n    <xsd:element name=\"root\" msdata:IsDataSet=\"true\">\n      <xsd:complexType>\n        <xsd:choice maxOccurs=\"unbounded\">\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\" 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: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>1.3</value>\n  </resheader>\n  <resheader name=\"reader\">\n    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <resheader name=\"writer\">\n    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>\n  </resheader>\n  <data name=\"MacroSource_Keyboard\" xml:space=\"preserve\">\n\t\t<value>鍵盤</value>\n\t</data>\n  <data name=\"MacroSource_Mouse\" xml:space=\"preserve\">\n\t\t<value>滑鼠</value>\n\t</data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Structs.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Drawing;\nusing LenovoLegionToolkit.Lib.Macro.Utils.TypeConverters;\n\nnamespace LenovoLegionToolkit.Lib.Macro;\n\npublic readonly struct MacroEvent\n{\n    public MacroSource Source { get; init; }\n    public MacroDirection Direction { get; init; }\n    public uint Key { get; init; }\n    public Point Point { get; init; }\n    public TimeSpan Delay { get; init; }\n\n    public bool IsUndefined() => Source == MacroSource.Unknown || Direction == MacroDirection.Unknown;\n\n    public override string ToString() => $\"{nameof(Source)}:{Source}, {nameof(Direction)}: {Direction}, {nameof(Key)}: {Key}, {nameof(Delay)}: {Delay}\";\n}\n\n[TypeConverter(typeof(MacroIdentifierTypeConverter))]\npublic readonly struct MacroIdentifier(MacroSource source, ulong key)\n{\n    public MacroSource Source { get; } = source;\n\n    public ulong Key { get; } = key;\n\n    #region Equality\n\n    public override bool Equals(object? obj) => obj is MacroIdentifier other && Source == other.Source && Key == other.Key;\n\n    public override int GetHashCode() => HashCode.Combine((int)Source, Key);\n\n    public static bool operator ==(MacroIdentifier left, MacroIdentifier right) => left.Equals(right);\n\n    public static bool operator !=(MacroIdentifier left, MacroIdentifier right) => !(left == right);\n\n    #endregion\n}\n\npublic readonly struct MacroSequence\n{\n    public int RepeatCount { get; init; }\n    public bool IgnoreDelays { get; init; }\n    public bool InterruptOnOtherKey { get; init; }\n    public MacroEvent[]? Events { get; init; }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Utils/MacroPlayer.cs",
    "content": "﻿using System;\nusing System.Drawing;\nusing System.Runtime.InteropServices;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows.Forms;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.UI.Input.KeyboardAndMouse;\nusing Windows.Win32.UI.WindowsAndMessaging;\n\nnamespace LenovoLegionToolkit.Lib.Macro.Utils;\n\ninternal class MacroPlayer\n{\n    private const int MAGIC_NUMBER = 1337;\n\n    private readonly ThreadSafeBool _isPlayingInterruptableSequence = new();\n\n    private Task _playTask = Task.CompletedTask;\n    private CancellationTokenSource _cancellationTokenSource = new();\n\n    public void InterruptIfNeeded(KBDLLHOOKSTRUCT kbStruct)\n    {\n        if (!_isPlayingInterruptableSequence.Value)\n            return;\n        if (kbStruct.flags != 0)\n            return;\n        if (kbStruct.dwExtraInfo == MAGIC_NUMBER)\n            return;\n\n        _cancellationTokenSource.Cancel();\n    }\n\n    public async Task StartPlayingAsync(MacroSequence sequence)\n    {\n        await _cancellationTokenSource.CancelAsync();\n        try { await _playTask; }\n        catch (OperationCanceledException) { }\n\n        _cancellationTokenSource = new();\n        var token = _cancellationTokenSource.Token;\n\n        _playTask = Task.Run(async () =>\n        {\n            _isPlayingInterruptableSequence.Value = sequence.InterruptOnOtherKey;\n\n            for (var i = 0; i < sequence.RepeatCount; i++)\n            {\n                foreach (var macroEvent in sequence.Events ?? [])\n                {\n                    if (!sequence.IgnoreDelays)\n                        await Task.Delay(macroEvent.Delay, token).ConfigureAwait(false);\n\n                    token.ThrowIfCancellationRequested();\n\n                    try\n                    {\n                        var input = ToInput(macroEvent, Screen.PrimaryScreen?.WorkingArea ?? Rectangle.Empty);\n                        var result = PInvoke.SendInput(MemoryMarshal.CreateSpan(ref input, 1), Marshal.SizeOf<INPUT>());\n                        if (result == 0)\n                            PInvokeExtensions.ThrowIfWin32Error($\"Failed to send input. Return code was {result}.\");\n                    }\n                    catch (Exception ex)\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Failed to send input for event {macroEvent}\", ex);\n                    }\n                }\n            }\n        }, token);\n    }\n\n    private static INPUT ToInput(MacroEvent macroEvent, Rectangle screenArea) => macroEvent.Source switch\n    {\n        MacroSource.Keyboard => ToKeyboardInput(macroEvent),\n        MacroSource.Mouse => ToMouseInput(macroEvent, screenArea),\n        MacroSource.Unknown => throw new ArgumentException(null, nameof(macroEvent)),\n        _ => throw new ArgumentOutOfRangeException(nameof(macroEvent))\n    };\n\n    private static INPUT ToKeyboardInput(MacroEvent macroEvent) => new()\n    {\n        type = INPUT_TYPE.INPUT_KEYBOARD,\n        Anonymous = new INPUT._Anonymous_e__Union\n        {\n            ki = new KEYBDINPUT\n            {\n                wVk = (VIRTUAL_KEY)macroEvent.Key,\n                dwFlags = macroEvent.Direction switch\n                {\n                    MacroDirection.Up => KEYBD_EVENT_FLAGS.KEYEVENTF_KEYUP,\n                    _ => 0\n                },\n                dwExtraInfo = MAGIC_NUMBER\n            }\n        }\n    };\n\n    private static INPUT ToMouseInput(MacroEvent macroEvent, Rectangle screenArea) => new()\n    {\n        type = INPUT_TYPE.INPUT_MOUSE,\n        Anonymous = new INPUT._Anonymous_e__Union\n        {\n            mi = new MOUSEINPUT\n            {\n                dwFlags = (macroEvent.Direction, macroEvent.Key) switch\n                {\n                    (MacroDirection.Up, 1) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_LEFTUP,\n                    (MacroDirection.Down, 1) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_LEFTDOWN,\n                    (MacroDirection.Up, 2) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_RIGHTUP,\n                    (MacroDirection.Down, 2) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_RIGHTDOWN,\n                    (MacroDirection.Up, 3) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_MIDDLEUP,\n                    (MacroDirection.Down, 3) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_MIDDLEDOWN,\n                    (MacroDirection.Up, > 0xFF) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_XUP,\n                    (MacroDirection.Down, > 0xFF) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_XDOWN,\n                    (MacroDirection.Wheel, _) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_WHEEL,\n                    (MacroDirection.Move, _) => MOUSE_EVENT_FLAGS.MOUSEEVENTF_MOVE | MOUSE_EVENT_FLAGS.MOUSEEVENTF_ABSOLUTE,\n                    _ => 0\n                },\n                mouseData = (macroEvent.Direction, macroEvent.Key) switch\n                {\n                    (MacroDirection.Up, >= 0xFF) => macroEvent.Key >> 16,\n                    (MacroDirection.Down, >= 0xFF) => macroEvent.Key >> 16,\n                    (MacroDirection.Wheel, _) => macroEvent.Key,\n                    _ => 0\n                },\n                dx = macroEvent.Direction switch\n                {\n                    MacroDirection.Move => (int)(65535.0f * (macroEvent.Point.X / (float)screenArea.Width) + 0.5f),\n                    _ => 0\n                },\n                dy = macroEvent.Direction switch\n                {\n                    MacroDirection.Move => (int)(65535.0f * (macroEvent.Point.Y / (float)screenArea.Height) + 0.5f),\n                    _ => 0\n                },\n                dwExtraInfo = MAGIC_NUMBER\n            }\n        }\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Utils/MacroRecorder.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Drawing;\nusing System.Linq;\nusing System.Runtime.CompilerServices;\nusing Microsoft.Win32;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.UI.Input.KeyboardAndMouse;\nusing Windows.Win32.UI.WindowsAndMessaging;\n\nnamespace LenovoLegionToolkit.Lib.Macro.Utils;\n\ninternal class MacroRecorder\n{\n    public class ReceivedEventArgs : EventArgs\n    {\n        public MacroEvent MacroEvent { get; init; }\n    }\n\n    public class StoppedEventArgs : EventArgs\n    {\n        public bool Interrupted { get; init; }\n    }\n\n    private class MacroEventEqualityComparer : IEqualityComparer<MacroEvent>\n    {\n        public bool Equals(MacroEvent x, MacroEvent y) => x.Source == y.Source && x.Key == y.Key;\n\n        public int GetHashCode(MacroEvent obj) => HashCode.Combine(obj.Source, obj.Key);\n    }\n\n    private readonly HashSet<MacroEvent> _rolloverCache = new(new MacroEventEqualityComparer());\n\n    private readonly HOOKPROC _kbProc;\n    private readonly HOOKPROC _mouseProc;\n\n    private HHOOK _kbHook;\n    private HHOOK _mouseHook;\n    private TimeSpan _timeFromLastEvent;\n    private bool _interrupted;\n    private MacroRecorderSettings _settings;\n\n    public bool IsRecording => _kbHook != HHOOK.Null && _mouseHook != HHOOK.Null;\n\n    public event EventHandler<ReceivedEventArgs>? Received;\n    public event EventHandler<StoppedEventArgs>? Stopped;\n\n    public MacroRecorder()\n    {\n        _kbProc = LowLevelKeyboardProc;\n        _mouseProc = LowLevelMouseProc;\n    }\n\n    public void StartRecording(MacroRecorderSettings settings)\n    {\n        if (_kbHook != HHOOK.Null)\n            return;\n\n        _interrupted = false;\n        _timeFromLastEvent = TimeSpan.Zero;\n        _settings = settings;\n\n        _kbHook = PInvoke.SetWindowsHookEx(WINDOWS_HOOK_ID.WH_KEYBOARD_LL, _kbProc, HINSTANCE.Null, 0);\n        _mouseHook = PInvoke.SetWindowsHookEx(WINDOWS_HOOK_ID.WH_MOUSE_LL, _mouseProc, HINSTANCE.Null, 0);\n        SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;\n    }\n\n    public void StopRecording()\n    {\n        if (!IsRecording)\n            return;\n\n        var wasInterrupted = _interrupted;\n\n        SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch;\n\n        PInvoke.UnhookWindowsHookEx(_kbHook);\n        PInvoke.UnhookWindowsHookEx(_mouseHook);\n\n        _kbHook = default;\n        _mouseHook = default;\n\n        _interrupted = false;\n        _timeFromLastEvent = TimeSpan.Zero;\n        _settings = default;\n\n        Stopped?.Invoke(this, new() { Interrupted = wasInterrupted });\n    }\n\n    private void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)\n    {\n        var interrupt = new[]\n        {\n            SessionSwitchReason.ConsoleDisconnect,\n            SessionSwitchReason.SessionLock,\n            SessionSwitchReason.SessionLogoff,\n            SessionSwitchReason.SessionRemoteControl,\n            SessionSwitchReason.RemoteDisconnect\n        }.Contains(e.Reason);\n\n        if (!interrupt)\n            return;\n\n        _interrupted = true;\n        StopRecording();\n    }\n\n    private unsafe LRESULT LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)\n    {\n        if (nCode < 0)\n            return PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam);\n\n        var result = new LRESULT(69);\n\n        ref var kbStruct = ref Unsafe.AsRef<KBDLLHOOKSTRUCT>((void*)lParam.Value);\n\n        var macroEvent = ConvertToMacroEvent(wParam, kbStruct, _timeFromLastEvent);\n\n        if (macroEvent.IsUndefined())\n            return result;\n\n        if (macroEvent.Direction == MacroDirection.Down)\n        {\n            if (macroEvent.Key == (ulong)VIRTUAL_KEY.VK_ESCAPE)\n            {\n                StopRecording();\n                return result;\n            }\n\n            if (_rolloverCache.Contains(macroEvent))\n                return result;\n        }\n\n        if (!_settings.HasFlag(MacroRecorderSettings.Keyboard))\n            return result;\n\n        Received?.Invoke(this, new ReceivedEventArgs { MacroEvent = macroEvent });\n\n        _timeFromLastEvent = TimeSpan.FromMilliseconds(kbStruct.time);\n\n        if (macroEvent.Direction == MacroDirection.Down)\n            _rolloverCache.Add(macroEvent);\n        else\n            _rolloverCache.Remove(macroEvent);\n\n        return result;\n    }\n\n    private unsafe LRESULT LowLevelMouseProc(int nCode, WPARAM wParam, LPARAM lParam)\n    {\n        if (nCode < 0)\n            return PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam);\n\n        ref var mouseStruct = ref Unsafe.AsRef<MSLLHOOKSTRUCT>((void*)lParam.Value);\n\n        var macroEvent = ConvertToMacroEvent(wParam, mouseStruct, _timeFromLastEvent);\n\n        if (macroEvent.IsUndefined())\n            return Result();\n\n        if (macroEvent.Direction == MacroDirection.Down && _rolloverCache.Contains(macroEvent))\n            return Result();\n\n        if (!_settings.HasFlag(MacroRecorderSettings.Mouse))\n            return Result();\n\n        if (macroEvent.Direction == MacroDirection.Move && !_settings.HasFlag(MacroRecorderSettings.Movement))\n            return Result();\n\n        Received?.Invoke(this, new ReceivedEventArgs { MacroEvent = macroEvent });\n\n        _timeFromLastEvent = TimeSpan.FromMilliseconds(mouseStruct.time);\n\n        if (macroEvent.Direction == MacroDirection.Down)\n            _rolloverCache.Add(macroEvent);\n        else\n            _rolloverCache.Remove(macroEvent);\n\n        return Result();\n\n        LRESULT Result() => wParam == PInvoke.WM_MOUSEMOVE ? PInvoke.CallNextHookEx(HHOOK.Null, nCode, wParam, lParam) : new LRESULT(96);\n    }\n\n    private static MacroEvent ConvertToMacroEvent(WPARAM wParam, KBDLLHOOKSTRUCT kbStruct, TimeSpan timeFromLastEvent)\n    {\n        if (timeFromLastEvent == TimeSpan.Zero)\n            timeFromLastEvent = TimeSpan.FromMilliseconds(kbStruct.time);\n\n        var delay = TimeSpan.FromMilliseconds(kbStruct.time) - timeFromLastEvent;\n\n        var macroEvent = new MacroEvent\n        {\n            Source = MacroSource.Keyboard,\n            Direction = (uint)wParam switch\n            {\n                PInvoke.WM_KEYUP or PInvoke.WM_SYSKEYUP => MacroDirection.Up,\n                PInvoke.WM_KEYDOWN or PInvoke.WM_SYSKEYDOWN => MacroDirection.Down,\n                _ => MacroDirection.Unknown\n            },\n            Key = kbStruct.vkCode,\n            Delay = delay\n        };\n\n        return macroEvent;\n    }\n\n    private static MacroEvent ConvertToMacroEvent(WPARAM wParam, MSLLHOOKSTRUCT mouseStruct, TimeSpan timeFromLastEvent)\n    {\n        if (timeFromLastEvent == TimeSpan.Zero)\n            timeFromLastEvent = TimeSpan.FromMilliseconds(mouseStruct.time);\n\n        var delay = TimeSpan.FromMilliseconds(mouseStruct.time) - timeFromLastEvent;\n\n        var macroEvent = new MacroEvent\n        {\n            Source = MacroSource.Mouse,\n            Direction = (uint)wParam switch\n            {\n                PInvoke.WM_LBUTTONUP or PInvoke.WM_RBUTTONUP or PInvoke.WM_MBUTTONUP or PInvoke.WM_XBUTTONUP => MacroDirection.Up,\n                PInvoke.WM_LBUTTONDOWN or PInvoke.WM_RBUTTONDOWN or PInvoke.WM_MBUTTONDOWN or PInvoke.WM_XBUTTONDOWN => MacroDirection.Down,\n                PInvoke.WM_MOUSEWHEEL => MacroDirection.Wheel,\n                PInvoke.WM_MOUSEHWHEEL => MacroDirection.HorizontalWheel,\n                PInvoke.WM_MOUSEMOVE => MacroDirection.Move,\n                _ => MacroDirection.Unknown\n            },\n            Key = (uint)wParam switch\n            {\n                PInvoke.WM_LBUTTONUP or PInvoke.WM_LBUTTONDOWN => 1,\n                PInvoke.WM_RBUTTONUP or PInvoke.WM_RBUTTONDOWN => 2,\n                PInvoke.WM_MBUTTONUP or PInvoke.WM_MBUTTONDOWN => 3,\n                PInvoke.WM_XBUTTONUP or PInvoke.WM_XBUTTONDOWN => mouseStruct.mouseData,\n                PInvoke.WM_MOUSEWHEEL => (uint)((int)mouseStruct.mouseData >> 16),\n                PInvoke.WM_MOUSEHWHEEL => (uint)((int)mouseStruct.mouseData >> 16),\n                _ => 0\n            },\n            Point = (uint)wParam switch\n            {\n                PInvoke.WM_MOUSEMOVE => mouseStruct.pt,\n                _ => Point.Empty,\n            },\n            Delay = delay\n        };\n\n        return macroEvent;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Utils/MacroSettings.cs",
    "content": "﻿using System.Collections.Generic;\nusing LenovoLegionToolkit.Lib.Settings;\n\nnamespace LenovoLegionToolkit.Lib.Macro.Utils;\n\npublic class MacroSettings() : AbstractSettings<MacroSettings.MacroSettingsStore>(\"macro.json\")\n{\n    public class MacroSettingsStore\n    {\n        public bool IsEnabled { get; set; }\n\n        public Dictionary<MacroIdentifier, MacroSequence> Sequences { get; set; } = [];\n    }\n\n    protected override MacroSettingsStore Default => new();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.Lib.Macro/Utils/TypeConverters/MacroIdentifierTypeConverter.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Globalization;\n\nnamespace LenovoLegionToolkit.Lib.Macro.Utils.TypeConverters;\n\npublic class MacroIdentifierTypeConverter : TypeConverter\n{\n    public override bool CanConvertFrom(ITypeDescriptorContext? context, Type sourceType) => sourceType == typeof(string) || base.CanConvertFrom(context, sourceType);\n\n    public override bool CanConvertTo(ITypeDescriptorContext? context, Type? destinationType) => destinationType == typeof(string) || base.CanConvertTo(context, destinationType);\n\n    public override object? ConvertFrom(ITypeDescriptorContext? context, CultureInfo? culture, object value)\n    {\n        if (value is not string str)\n            return base.ConvertFrom(context, culture, value);\n\n        var split = str.Split(',');\n        if (split.Length != 2)\n            return base.ConvertFrom(context, culture, value);\n\n        if (!Enum.TryParse<MacroSource>(split[0], out var source))\n            return base.ConvertFrom(context, culture, value);\n\n        if (!ulong.TryParse(split[1], out var key))\n            return base.ConvertFrom(context, culture, value);\n\n        return new MacroIdentifier(source, key);\n    }\n\n    public override object? ConvertTo(ITypeDescriptorContext? context, CultureInfo? culture, object? value, Type destinationType)\n    {\n        if (destinationType != typeof(string) || value is not MacroIdentifier macroIdentifier)\n            return base.ConvertTo(context, culture, value, destinationType);\n\n        return $\"{macroIdentifier.Source},{macroIdentifier.Key}\";\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.SpectrumTester/LenovoLegionToolkit.SpectrumTester.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\n\t<PropertyGroup>\n\t\t<TargetFramework>net8.0-windows</TargetFramework>\n\t\t<RuntimeIdentifier>win-x64</RuntimeIdentifier>\n\t\t<Platforms>x64</Platforms>\n\t\t<OutputType>Exe</OutputType>\n\t\t<AssemblyName>SpectrumTester</AssemblyName>\n\t\t<ImplicitUsings>enable</ImplicitUsings>\n\t\t<Nullable>enable</Nullable>\n\t\t<SelfContained>false</SelfContained>\n\t\t<PublishSingleFile>false</PublishSingleFile>\n\t\t<PublishReadyToRun>false</PublishReadyToRun>\n\t\t<AllowUnsafeBlocks>true</AllowUnsafeBlocks>\n\t</PropertyGroup>\n\n\t<ItemGroup>\n\t\t<ProjectReference Include=\"..\\LenovoLegionToolkit.Lib\\LenovoLegionToolkit.Lib.csproj\" />\n\t</ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "LenovoLegionToolkit.SpectrumTester/Program.cs",
    "content": "﻿using System.Runtime.InteropServices;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing Windows.Win32;\n\n// ReSharper disable all\n\nConsole.WriteLine(@\"How to use:\n  1. Make sure Vantage and LLT is closed.\n  2. Set the keyboard brightness to maximum.\n\nWhen ready, press any key to continue...\n\");\nConsole.ReadKey();\n\nvar device = Devices.GetSpectrumRGBKeyboard();\n\nConsole.WriteLine(\"Finding Spectrum keyboard...\");\n\nif (device is null)\n{\n    Console.WriteLine(\"Spectrum not supported\");\n    Console.ReadKey();\n    return;\n}\n\n\nConsole.WriteLine(\"Spectrum keyboard found\");\nConsole.WriteLine();\n\nConsole.WriteLine(\"Reading response for 0xD1...\");\nSetFeature(device, new LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE.UnknownD1, 0, 0));\nGetFeature(device, out LENOVO_SPECTRUM_GENERIC_RESPONSE resD1);\nPrint(resD1.Bytes);\nConsole.WriteLine();\n\nConsole.WriteLine(\"Reading response for 0xC6...\");\nSetFeature(device, new LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE.UnknownC6, 0, 0));\nGetFeature(device, out LENOVO_SPECTRUM_GENERIC_RESPONSE resC6);\nPrint(resC6.Bytes);\nConsole.WriteLine();\n\nConsole.WriteLine(\"Reading response for 0x04...\");\nSetFeature(device, new LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE.Unknown04, 0, 0));\nGetFeature(device, out LENOVO_SPECTRUM_GENERIC_RESPONSE res04);\nPrint(res04.Bytes);\nConsole.WriteLine();\n\nConsole.WriteLine(\"Reading response for 0xC7...\");\nSetFeature(device, new LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE.UnknownC7, 0, 0));\nGetFeature(device, out LENOVO_SPECTRUM_GENERIC_RESPONSE resC7);\nPrint(resC7.Bytes);\nConsole.WriteLine();\n\nConsole.WriteLine(\"Reading response for 0xC4 7...\");\nSetFeature(device, new LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE.UnknownC4, 7, 0));\nGetFeature(device, out LENOVO_SPECTRUM_GENERIC_RESPONSE resC47);\nPrint(resC47.Bytes);\nConsole.WriteLine();\n\nConsole.WriteLine(\"Reading response for 0xC4 8...\");\nSetFeature(device, new LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE.UnknownC4, 8, 0));\nGetFeature(device, out LENOVO_SPECTRUM_GENERIC_RESPONSE resC48);\nPrint(resC48.Bytes);\nConsole.WriteLine();\n\nfor (var i = 0; i < 10; i++)\n{\n    Console.WriteLine($\"Reading response for 0xC5 7 {i}...\");\n    SetFeature(device, new LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE.UnknownC5, 7, (byte)i));\n    GetFeature(device, out LENOVO_SPECTRUM_GENERIC_RESPONSE resC57);\n    Print(resC57.Bytes);\n    Console.WriteLine();\n}\n\nConsole.WriteLine($\"Reading response for 0xC5 8...\");\nSetFeature(device, new LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE.UnknownC5, 8, 0));\nGetFeature(device, out LENOVO_SPECTRUM_GENERIC_RESPONSE resC58);\nPrint(resC58.Bytes);\nConsole.WriteLine();\n\nConsole.WriteLine(resD1.Bytes[4] == 0 ? \"Keyboard is RGB.\" : \"Not compatible.\");\n\nvar spectrumLayout = (resC47.Bytes[6], resC47.Bytes[5]) switch\n{\n    (22, 9) => \"Full\",\n    (20, 8) => \"KeyboardAndFront\",\n    (20, 7) => \"KeyboardOnly\",\n    _ => \"Unknown\"\n};\nConsole.WriteLine($\"Layout is {spectrumLayout}.\");\nConsole.WriteLine(\"Reading config complete.\");\nConsole.WriteLine();\nConsole.ReadKey();\n\nConsole.WriteLine(@\"*** TEST 1***\n\nThis program will now try to control brightness of the keyboard. Keyboard should turn off and then gradually increase brightness and turn off at the end.\n\nWhen ready, press any key to continue...\n\");\n\nvar brightnessLevels = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };\n\nforeach (var level in brightnessLevels)\n{\n    Console.WriteLine($\"Setting brightness level to {level}...\");\n    SetFeature(device, new LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE.Brightness, level, 0));\n    await Task.Delay(250);\n}\n\nConsole.WriteLine(\"Test complete, press any key to continue...\");\nConsole.WriteLine();\nConsole.ReadKey();\n\nConsole.WriteLine(@\"***TEST 2***\n\nHow to find a keycode for a specific key:\n  1. Open Vantage\n  2. Select the key that you want to find keycode for\n  3. Set the key to plain white (Hex: #FFFFFF, RGB: 255,255,255)\n  4. Make sure all other keys don't have any effect set (are off)\n  5. Set the keyboard brightness to maximum\n\nWhen ready, press any key to continue...\n\");\nConsole.ReadKey();\n\nConsole.WriteLine(\"Reading white key keycodes...\");\nConsole.WriteLine();\n\nconst int Iterations = 5;\n\nfor (var i = 0; i < Iterations; i++)\n{\n    GetFeature(device, out LENOVO_SPECTRUM_STATE state);\n\n    var keys = state.Data\n        .Where(kv => HasColor(kv.Color))\n        .Select(kv => kv.Key)\n        .Select(k => \"0x\" + k.ToString(\"X4\"))\n        .Split(8);\n\n    await Task.Delay(1000);\n\n    if (keys.SelectMany(k => k).IsEmpty())\n    {\n        Console.WriteLine($\"[{i + 1}/{Iterations}] No keys found\");\n        continue;\n    }\n\n    Console.WriteLine($\"[{i + 1}/{Iterations}] Keys with color found:\");\n\n    foreach (var line in keys)\n        Console.WriteLine(\"    \" + string.Join(\", \", line));\n\n}\n\nConsole.WriteLine();\nConsole.WriteLine(\"Test complete.\");\nConsole.WriteLine(\"Press any key to exit...\");\nConsole.ReadLine();\n\n#region Methods\n\nvoid Print(byte[] bytes)\n{\n    var length = bytes[2] + 4;\n    foreach (var i in bytes.Take(length).Split(16))\n        Console.WriteLine(string.Join(\" \", i.Select(i => $\"{i:X2}\")));\n}\n\nbool HasColor(LENOVO_SPECTRUM_COLOR rgbColor) => rgbColor.Red == 255 && rgbColor.Green == 255 && rgbColor.Blue == 255;\n\nunsafe void SetFeature<T>(SafeHandle handle, T str) where T : notnull\n{\n    var ptr = IntPtr.Zero;\n    try\n    {\n        int size;\n        if (str is byte[] bytes)\n        {\n            size = bytes.Length;\n            ptr = Marshal.AllocHGlobal(size);\n            Marshal.Copy(bytes, 0, ptr, size);\n        }\n        else\n        {\n            size = Marshal.SizeOf<T>();\n            ptr = Marshal.AllocHGlobal(size);\n            Marshal.StructureToPtr(str, ptr, false);\n        }\n\n        var result = PInvoke.HidD_SetFeature(handle, ptr.ToPointer(), (uint)size);\n        if (!result)\n            PInvokeExtensions.ThrowIfWin32Error(typeof(T).Name);\n    }\n    finally\n    {\n        Marshal.FreeHGlobal(ptr);\n    }\n}\n\nunsafe void GetFeature<T>(SafeHandle handle, out T str) where T : struct\n{\n    var ptr = IntPtr.Zero;\n    try\n    {\n        var size = Marshal.SizeOf<T>();\n        ptr = Marshal.AllocHGlobal(size);\n        Marshal.Copy(new byte[] { 7 }, 0, ptr, 1);\n\n        var result = PInvoke.HidD_GetFeature(handle, ptr.ToPointer(), (uint)size);\n        if (!result)\n            PInvokeExtensions.ThrowIfWin32Error(typeof(T).Name);\n\n        str = Marshal.PtrToStructure<T>(ptr);\n    }\n    finally\n    {\n        Marshal.FreeHGlobal(ptr);\n    }\n}\n\n#endregion\n\n#region Structs\n\n[StructLayout(LayoutKind.Sequential)]\ninternal struct LENOVO_SPECTRUM_HEADER(LENOVO_SPECTRUM_OPERATION_TYPE type, int size)\n{\n    public byte Head = 7;\n    public LENOVO_SPECTRUM_OPERATION_TYPE Type = type;\n    public byte Size = (byte)(size % 256);\n    public byte Tail = 3;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal struct LENOVO_SPECTRUM_GENERIC_REQUEST(LENOVO_SPECTRUM_OPERATION_TYPE operation, byte value, byte value2)\n{\n    public LENOVO_SPECTRUM_HEADER Header = new(operation, 0xC0);\n    public byte Value = value;\n    public byte Value2 = value2;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal struct LENOVO_SPECTRUM_GENERIC_RESPONSE\n{\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 960)]\n    public byte[] Bytes;\n}\n\ninternal enum LENOVO_SPECTRUM_OPERATION_TYPE : byte\n{\n    ProfileSet1 = 0xC8,\n    GetProfile = 0xCA,\n    EffectChange = 0xCB,\n    ProfileSet2 = 0xCC,\n    GetBrightness = 0xCD,\n    Brightness = 0xCE,\n    AuroraSendBitmap = 0xA1,\n    State = 0x03,\n    Unknown04 = 0x04,\n    UnknownC4 = 0xC4,\n    UnknownC5 = 0xC5,\n    UnknownC6 = 0xC6,\n    UnknownC7 = 0xC7,\n    UnknownD1 = 0xD1,\n}\n\n[StructLayout(LayoutKind.Sequential)]\ninternal struct LENOVO_SPECTRUM_COLOR\n{\n    public byte Red;\n    public byte Green;\n    public byte Blue;\n}\n\n[StructLayout(LayoutKind.Sequential, Pack = 1)]\ninternal struct LENOVO_SPECTRUM_KEY_STATE\n{\n    public ushort Key;\n    public LENOVO_SPECTRUM_COLOR Color;\n}\n\n[StructLayout(LayoutKind.Sequential, Size = 960)]\ninternal struct LENOVO_SPECTRUM_STATE\n{\n    public byte ReportId;\n    public LENOVO_SPECTRUM_OPERATION_TYPE Type;\n    public byte Unknown2;\n    public byte Unknown3;\n    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 191)]\n    public LENOVO_SPECTRUM_KEY_STATE[] Data;\n    public byte Unknown4;\n}\n\n#endregion\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/App.xaml",
    "content": "﻿<Application\n    x:Class=\"LenovoLegionToolkit.WPF.App\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    DispatcherUnhandledException=\"Application_DispatcherUnhandledException\"\n    Exit=\"Application_Exit\"\n    ShutdownMode=\"OnExplicitShutdown\"\n    Startup=\"Application_Startup\">\n    <Application.Resources>\n        <ResourceDictionary>\n            <ResourceDictionary.MergedDictionaries>\n                <wpfui:ControlsDictionary />\n                <wpfui:ThemesDictionary Theme=\"Dark\" />\n                <ResourceDictionary Source=\"pack://application:,,,/ColorPicker;component/Styles/DefaultColorPickerStyle.xaml\" />\n                <ResourceDictionary Source=\"pack://application:,,,/Styles/Badge.xaml\" />\n                <ResourceDictionary Source=\"pack://application:,,,/Styles/CardAction.xaml\" />\n                <ResourceDictionary Source=\"pack://application:,,,/Styles/CardControl.xaml\" />\n                <ResourceDictionary Source=\"pack://application:,,,/Styles/CardExpander.xaml\" />\n                <ResourceDictionary Source=\"pack://application:,,,/Styles/DynamicScrollBar.xaml\" />\n                <ResourceDictionary Source=\"pack://application:,,,/Styles/InfoBar.xaml\" />\n                <ResourceDictionary Source=\"pack://application:,,,/Styles/NavigationStore.xaml\" />\n            </ResourceDictionary.MergedDictionaries>\n        </ResourceDictionary>\n    </Application.Resources>\n</Application>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/App.xaml.cs",
    "content": "﻿#if !DEBUG\nusing LenovoLegionToolkit.Lib.System;\n#endif\nusing System;\nusing System.Diagnostics;\nusing System.Linq;\nusing System.Reflection;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Interop;\nusing System.Windows.Media;\nusing System.Windows.Threading;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Features.Hybrid;\nusing LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\nusing LenovoLegionToolkit.Lib.Features.PanelLogo;\nusing LenovoLegionToolkit.Lib.Features.WhiteKeyboardBacklight;\nusing LenovoLegionToolkit.Lib.Integrations;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Macro;\nusing LenovoLegionToolkit.Lib.Services;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.CLI;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Pages;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing LenovoLegionToolkit.WPF.Windows;\nusing LenovoLegionToolkit.WPF.Windows.Utils;\nusing Application = System.Windows.Application;\nusing MessageBox = System.Windows.MessageBox;\nusing WinFormsApp = System.Windows.Forms.Application;\nusing WinFormsHighDpiMode = System.Windows.Forms.HighDpiMode;\n\nnamespace LenovoLegionToolkit.WPF;\n\npublic partial class App\n{\n    private const string MUTEX_NAME = \"LenovoLegionToolkit_Mutex_6efcc882-924c-4cbc-8fec-f45c25696f98\";\n    private const string EVENT_NAME = \"LenovoLegionToolkit_Event_6efcc882-924c-4cbc-8fec-f45c25696f98\";\n\n    private Mutex? _singleInstanceMutex;\n    private EventWaitHandle? _singleInstanceWaitHandle;\n\n    public new static App Current => (App)Application.Current;\n\n    private async void Application_Startup(object sender, StartupEventArgs e)\n    {\n#if DEBUG\n        if (Debugger.IsAttached)\n        {\n            Process.GetProcessesByName(Process.GetCurrentProcess().ProcessName)\n                .Where(p => p.Id != Environment.ProcessId)\n                .ForEach(p =>\n                {\n                    p.Kill();\n                    p.WaitForExit();\n                });\n        }\n#endif\n\n        var flags = new Flags(e.Args);\n\n        Log.Instance.IsTraceEnabled = flags.IsTraceEnabled;\n\n        AppDomain.CurrentDomain.UnhandledException += AppDomain_UnhandledException;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Flags: {flags}\");\n\n        EnsureSingleInstance();\n\n        await LocalizationHelper.SetLanguageAsync(true);\n\n        if (!flags.SkipCompatibilityCheck)\n        {\n            try\n            {\n                if (!await CheckBasicCompatibilityAsync())\n                    return;\n                if (!await CheckCompatibilityAsync())\n                    return;\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Failed to check device compatibility\", ex);\n\n                MessageBox.Show(Resource.CompatibilityCheckError_Message, Resource.AppName, MessageBoxButton.OK, MessageBoxImage.Error);\n                Shutdown(200);\n                return;\n            }\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Starting... [version={Assembly.GetEntryAssembly()?.GetName().Version}, build={Assembly.GetEntryAssembly()?.GetBuildDateTimeString()}, os={Environment.OSVersion}, dotnet={Environment.Version}]\");\n\n        WinFormsApp.SetHighDpiMode(WinFormsHighDpiMode.PerMonitorV2);\n        RenderOptions.ProcessRenderMode = RenderMode.SoftwareOnly;\n\n        IoCContainer.Initialize(\n            new Lib.IoCModule(),\n            new Lib.Automation.IoCModule(),\n            new Lib.Macro.IoCModule(),\n            new IoCModule()\n        );\n\n        IoCContainer.Resolve<HttpClientFactory>().SetProxy(flags.ProxyUrl, flags.ProxyUsername, flags.ProxyPassword, flags.ProxyAllowAllCerts);\n\n        IoCContainer.Resolve<PowerModeFeature>().AllowAllPowerModesOnBattery = flags.AllowAllPowerModesOnBattery;\n        IoCContainer.Resolve<RGBKeyboardBacklightController>().ForceDisable = flags.ForceDisableRgbKeyboardSupport;\n        IoCContainer.Resolve<SpectrumKeyboardBacklightController>().ForceDisable = flags.ForceDisableSpectrumKeyboardSupport;\n        IoCContainer.Resolve<WhiteKeyboardLenovoLightingBacklightFeature>().ForceDisable = flags.ForceDisableLenovoLighting;\n        IoCContainer.Resolve<PanelLogoLenovoLightingBacklightFeature>().ForceDisable = flags.ForceDisableLenovoLighting;\n        IoCContainer.Resolve<PortsBacklightFeature>().ForceDisable = flags.ForceDisableLenovoLighting;\n        IoCContainer.Resolve<IGPUModeFeature>().ExperimentalGPUWorkingMode = flags.ExperimentalGPUWorkingMode;\n        IoCContainer.Resolve<DGPUNotify>().ExperimentalGPUWorkingMode = flags.ExperimentalGPUWorkingMode;\n        IoCContainer.Resolve<UpdateChecker>().Disable = flags.DisableUpdateChecker;\n\n        AutomationPage.EnableHybridModeAutomation = flags.EnableHybridModeAutomation;\n\n        await LogSoftwareStatusAsync();\n        await InitPowerModeFeatureAsync();\n        await InitBatteryFeatureAsync();\n        await InitRgbKeyboardControllerAsync();\n        await InitSpectrumKeyboardControllerAsync();\n        await InitGpuOverclockControllerAsync();\n        await InitHybridModeAsync();\n        await InitAutomationProcessorAsync();\n        InitMacroController();\n\n        await IoCContainer.Resolve<AIController>().StartIfNeededAsync();\n        await IoCContainer.Resolve<HWiNFOIntegration>().StartStopIfNeededAsync();\n        await IoCContainer.Resolve<IpcServer>().StartStopIfNeededAsync();\n        await IoCContainer.Resolve<BatteryDischargeRateMonitorService>().StartStopIfNeededAsync();\n\n#if !DEBUG\n        Autorun.Validate();\n#endif\n\n        var mainWindow = new MainWindow\n        {\n            WindowStartupLocation = WindowStartupLocation.CenterScreen,\n            TrayTooltipEnabled = !flags.DisableTrayTooltip,\n            DisableConflictingSoftwareWarning = flags.DisableConflictingSoftwareWarning\n        };\n        MainWindow = mainWindow;\n\n        IoCContainer.Resolve<ThemeManager>().Apply();\n\n        if (flags.Minimized)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Sending MainWindow to tray...\");\n\n            mainWindow.WindowState = WindowState.Minimized;\n            mainWindow.Show();\n            mainWindow.SendToTray();\n        }\n        else\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Showing MainWindow...\");\n\n            mainWindow.Show();\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Start up complete\");\n    }\n\n    private void Application_Exit(object sender, ExitEventArgs e)\n    {\n        _singleInstanceMutex?.Close();\n    }\n\n    public void RestartMainWindow()\n    {\n        if (MainWindow is MainWindow mw)\n        {\n            mw.SuppressClosingEventHandler = true;\n            mw.Close();\n        }\n\n        var mainWindow = new MainWindow\n        {\n            WindowStartupLocation = WindowStartupLocation.CenterScreen\n        };\n        MainWindow = mainWindow;\n        mainWindow.Show();\n    }\n\n    public async Task ShutdownAsync()\n    {\n        try\n        {\n            if (IoCContainer.TryResolve<AIController>() is { } aiController)\n                await aiController.StopAsync();\n        }\n        catch {  /* Ignored. */ }\n\n        try\n        {\n            if (IoCContainer.TryResolve<RGBKeyboardBacklightController>() is { } rgbKeyboardBacklightController)\n            {\n                if (await rgbKeyboardBacklightController.IsSupportedAsync())\n                    await rgbKeyboardBacklightController.SetLightControlOwnerAsync(false);\n            }\n        }\n        catch {  /* Ignored. */ }\n\n        try\n        {\n            if (IoCContainer.TryResolve<SpectrumKeyboardBacklightController>() is { } spectrumKeyboardBacklightController)\n            {\n                if (await spectrumKeyboardBacklightController.IsSupportedAsync())\n                    await spectrumKeyboardBacklightController.StopAuroraIfNeededAsync();\n            }\n        }\n        catch {  /* Ignored. */ }\n\n        try\n        {\n            if (IoCContainer.TryResolve<NativeWindowsMessageListener>() is { } nativeMessageWindowListener)\n            {\n                await nativeMessageWindowListener.StopAsync();\n            }\n        }\n        catch {  /* Ignored. */ }\n\n        try\n        {\n            if (IoCContainer.TryResolve<SessionLockUnlockListener>() is { } sessionLockUnlockListener)\n            {\n                await sessionLockUnlockListener.StopAsync();\n            }\n        }\n        catch { /* Ignored. */ }\n\n        try\n        {\n            if (IoCContainer.TryResolve<HWiNFOIntegration>() is { } hwinfoIntegration)\n            {\n                await hwinfoIntegration.StopAsync();\n            }\n        }\n        catch { /* Ignored. */ }\n\n        try\n        {\n            if (IoCContainer.TryResolve<IpcServer>() is { } ipcServer)\n            {\n                await ipcServer.StopAsync();\n            }\n        }\n        catch { /* Ignored. */ }\n\n        try\n        {\n            if (IoCContainer.TryResolve<BatteryDischargeRateMonitorService>() is { } batteryDischargeMon)\n            {\n                await batteryDischargeMon.StopAsync();\n            }\n        }\n        catch { /* Ignored. */ }\n\n        Shutdown();\n    }\n\n    private void AppDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)\n    {\n        var exception = e.ExceptionObject as Exception;\n\n        Log.Instance.ErrorReport(\"AppDomain_UnhandledException\", exception ?? new Exception($\"Unknown exception caught: {e.ExceptionObject}\"));\n        Log.Instance.Trace($\"Unhandled exception occurred.\", exception);\n\n        MessageBox.Show(string.Format(Resource.UnexpectedException, exception?.ToStringDemystified() ?? \"Unknown exception.\"),\n            \"Application Domain Error\",\n            MessageBoxButton.OK,\n            MessageBoxImage.Error);\n        Shutdown(100);\n    }\n\n    private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)\n    {\n        Log.Instance.ErrorReport(\"Application_DispatcherUnhandledException\", e.Exception);\n        Log.Instance.Trace($\"Unhandled exception occurred.\", e.Exception);\n\n        MessageBox.Show(string.Format(Resource.UnexpectedException, e.Exception.ToStringDemystified()),\n            \"Application Error\",\n            MessageBoxButton.OK,\n            MessageBoxImage.Error);\n        Shutdown(101);\n    }\n\n    private async Task<bool> CheckBasicCompatibilityAsync()\n    {\n        var isCompatible = await Compatibility.CheckBasicCompatibilityAsync();\n        if (isCompatible)\n            return true;\n\n        MessageBox.Show(Resource.IncompatibleDevice_Message, Resource.AppName, MessageBoxButton.OK, MessageBoxImage.Error);\n\n        Shutdown(201);\n        return false;\n    }\n\n    private async Task<bool> CheckCompatibilityAsync()\n    {\n        var (isCompatible, mi) = await Compatibility.IsCompatibleAsync();\n        if (isCompatible)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Compatibility check passed. [Vendor={mi.Vendor}, Model={mi.Model}, MachineType={mi.MachineType}, BIOS={mi.BiosVersion}]\");\n            return true;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Incompatible system detected. [Vendor={mi.Vendor}, Model={mi.Model}, MachineType={mi.MachineType}, BIOS={mi.BiosVersion}]\");\n\n        var unsupportedWindow = new UnsupportedWindow(mi);\n        unsupportedWindow.Show();\n\n        var result = await unsupportedWindow.ShouldContinue;\n        if (result)\n        {\n            Log.Instance.IsTraceEnabled = true;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Compatibility check OVERRIDE. [Vendor={mi.Vendor}, Model={mi.Model}, MachineType={mi.MachineType}, version={Assembly.GetEntryAssembly()?.GetName().Version}, build={Assembly.GetEntryAssembly()?.GetBuildDateTimeString() ?? string.Empty}]\");\n            return true;\n        }\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Shutting down... [Vendor={mi.Vendor}, Model={mi.Model}, MachineType={mi.MachineType}]\");\n\n        Shutdown(202);\n        return false;\n    }\n\n    private void EnsureSingleInstance()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Checking for other instances...\");\n\n        _singleInstanceMutex = new Mutex(true, MUTEX_NAME, out var isOwned);\n        _singleInstanceWaitHandle = new EventWaitHandle(false, EventResetMode.AutoReset, EVENT_NAME);\n\n        if (!isOwned)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Another instance running, closing...\");\n\n            _singleInstanceWaitHandle.Set();\n            Shutdown();\n            return;\n        }\n\n        new Thread(() =>\n        {\n            while (_singleInstanceWaitHandle.WaitOne())\n            {\n                Current.Dispatcher.BeginInvoke(async () =>\n                {\n                    if (Current.MainWindow is { } window)\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Another instance started, bringing this one to front instead...\");\n\n                        window.BringToForeground();\n                    }\n                    else\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"!!! PANIC !!! This instance is missing main window. Shutting down.\");\n\n                        await ShutdownAsync();\n                    }\n                });\n            }\n        })\n        {\n            IsBackground = true\n        }.Start();\n    }\n\n    private static async Task LogSoftwareStatusAsync()\n    {\n        if (!Log.Instance.IsTraceEnabled)\n            return;\n\n        var vantageStatus = await IoCContainer.Resolve<VantageDisabler>().GetStatusAsync();\n        Log.Instance.Trace($\"Vantage status: {vantageStatus}\");\n\n        var legionZoneStatus = await IoCContainer.Resolve<LegionZoneDisabler>().GetStatusAsync();\n        Log.Instance.Trace($\"LegionZone status: {legionZoneStatus}\");\n\n        var fnKeysStatus = await IoCContainer.Resolve<FnKeysDisabler>().GetStatusAsync();\n        Log.Instance.Trace($\"FnKeys status: {fnKeysStatus}\");\n    }\n\n    private static async Task InitHybridModeAsync()\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Initializing hybrid mode...\");\n\n            var feature = IoCContainer.Resolve<HybridModeFeature>();\n            await feature.EnsureDGPUEjectedIfNeededAsync();\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't initialize hybrid mode.\", ex);\n        }\n    }\n\n    private static async Task InitAutomationProcessorAsync()\n    {\n        try\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Initializing automation processor...\");\n\n            var automationProcessor = IoCContainer.Resolve<AutomationProcessor>();\n            await automationProcessor.InitializeAsync();\n            automationProcessor.RunOnStartup();\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't initialize automation processor.\", ex);\n        }\n    }\n\n    private static async Task InitPowerModeFeatureAsync()\n    {\n        try\n        {\n            var feature = IoCContainer.Resolve<PowerModeFeature>();\n            if (await feature.IsSupportedAsync())\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Ensuring god mode state is applied...\");\n\n                await feature.EnsureGodModeStateIsAppliedAsync();\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't ensure god mode state.\", ex);\n        }\n\n        try\n        {\n            var feature = IoCContainer.Resolve<PowerModeFeature>();\n            if (await feature.IsSupportedAsync())\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Ensuring correct power plan is set...\");\n\n                await feature.EnsureCorrectWindowsPowerSettingsAreSetAsync();\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't ensure correct power plan.\", ex);\n        }\n    }\n\n    private static async Task InitBatteryFeatureAsync()\n    {\n        try\n        {\n            var feature = IoCContainer.Resolve<BatteryFeature>();\n            if (await feature.IsSupportedAsync())\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Ensuring correct battery mode is set...\");\n\n                await feature.EnsureCorrectBatteryModeIsSetAsync();\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't ensure correct battery mode.\", ex);\n        }\n    }\n\n    private static async Task InitRgbKeyboardControllerAsync()\n    {\n        try\n        {\n            var controller = IoCContainer.Resolve<RGBKeyboardBacklightController>();\n            if (await controller.IsSupportedAsync())\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Setting light control owner and restoring preset...\");\n\n                await controller.SetLightControlOwnerAsync(true, true);\n            }\n            else\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"RGB keyboard is not supported.\");\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't set light control owner or current preset.\", ex);\n        }\n    }\n\n    private static async Task InitSpectrumKeyboardControllerAsync()\n    {\n        try\n        {\n            var controller = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();\n            if (await controller.IsSupportedAsync())\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Starting Aurora if needed...\");\n\n                var result = await controller.StartAuroraIfNeededAsync();\n                if (result)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Aurora started.\");\n                }\n                else\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Aurora not needed.\");\n                }\n            }\n            else\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Spectrum keyboard is not supported.\");\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't start Aurora if needed.\", ex);\n        }\n    }\n\n    private static async Task InitGpuOverclockControllerAsync()\n    {\n        try\n        {\n            var controller = IoCContainer.Resolve<GPUOverclockController>();\n            if (await controller.IsSupportedAsync())\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Ensuring GPU overclock is applied...\");\n\n                var result = await controller.EnsureOverclockIsAppliedAsync();\n                if (result)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"GPU overclock applied.\");\n                }\n                else\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"GPU overclock not needed.\");\n                }\n            }\n            else\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"GPU overclock is not supported.\");\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't overclock GPU.\", ex);\n        }\n    }\n\n    private static void InitMacroController()\n    {\n        var controller = IoCContainer.Resolve<MacroController>();\n        controller.Start();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Assets/AssetResources.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 LenovoLegionToolkit.WPF.Assets {\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 AssetResources {\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 AssetResources() {\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(\"LenovoLegionToolkit.WPF.Assets.AssetResources\", typeof(AssetResources).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 {\n            get {\n                object obj = ResourceManager.GetObject(\"icon\", resourceCulture);\n                return ((System.Drawing.Icon)(obj));\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Assets/AssetResources.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\" type=\"System.Resources.ResXFileRef, System.Windows.Forms\">\n\t  <!-- ReSharper disable once ResxNotResolved -->\n\t  <value>icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Behaviors/ProgressBarAnimateBehavior.cs",
    "content": "﻿using System;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Controls.Primitives;\nusing System.Windows.Media.Animation;\nusing Microsoft.Xaml.Behaviors;\n\nnamespace LenovoLegionToolkit.WPF.Behaviors;\n\npublic class ProgressBarAnimateBehavior : Behavior<ProgressBar>\n{\n    private bool _isAnimating;\n\n    protected override void OnAttached()\n    {\n        base.OnAttached();\n        AssociatedObject.ValueChanged += ProgressBar_ValueChanged;\n    }\n\n    protected override void OnDetaching()\n    {\n        base.OnDetaching();\n        AssociatedObject.ValueChanged -= ProgressBar_ValueChanged;\n    }\n\n    private void ProgressBar_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)\n    {\n        if (sender is not ProgressBar progressBar)\n            return;\n\n        if (_isAnimating)\n            return;\n\n        _isAnimating = true;\n\n        var doubleAnimation = new DoubleAnimation(e.OldValue,\n            e.NewValue,\n            new Duration(TimeSpan.FromMilliseconds(250)),\n            FillBehavior.Stop);\n        doubleAnimation.Completed += Completed;\n\n        progressBar.BeginAnimation(RangeBase.ValueProperty, doubleAnimation);\n\n        e.Handled = true;\n    }\n\n    private void Completed(object? sender, EventArgs e) => _isAnimating = false;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/CLI/Features/FeatureRegistration.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Features;\n\nnamespace LenovoLegionToolkit.WPF.CLI.Features;\n\npublic class FeatureRegistration<T>(string name, Func<T, string>? toStringConverter = null, Func<string, T>? fromStringConverter = null)\n    : IFeatureRegistration where T : struct\n{\n    public string Name { get; } = name;\n\n    private readonly Func<IFeature<T>> _feature = IoCContainer.Resolve<IFeature<T>>;\n\n    public Task<bool> IsSupportedAsync() => _feature().IsSupportedAsync();\n\n    public async Task<IEnumerable<string>> GetValuesAsync()\n    {\n        var feature = _feature();\n\n        if (!await feature.IsSupportedAsync().ConfigureAwait(false))\n            throw new InvalidOperationException(\"Feature is not supported\");\n\n        var states = await feature.GetAllStatesAsync().ConfigureAwait(false);\n        return states.Select(s => toStringConverter?.Invoke(s) ?? s.ToString()?.ToLowerInvariant()).OfType<string>();\n    }\n\n    public async Task<string> GetValueAsync()\n    {\n        var feature = _feature();\n\n        if (!await feature.IsSupportedAsync().ConfigureAwait(false))\n            throw new InvalidOperationException(\"Feature is not supported\");\n\n        var state = await feature.GetStateAsync().ConfigureAwait(false);\n\n        string result;\n\n        if (toStringConverter is not null)\n        {\n            result = toStringConverter(state);\n        }\n        else\n        {\n            result = state.ToString()?.ToLowerInvariant() ?? throw new InvalidOperationException(\"Null return value\");\n        }\n\n        return result;\n    }\n\n    public async Task SetValueAsync(string value)\n    {\n        var feature = _feature();\n\n        if (!await feature.IsSupportedAsync().ConfigureAwait(false))\n            throw new InvalidOperationException(\"Feature is not supported\");\n\n        var states = await feature.GetAllStatesAsync().ConfigureAwait(false);\n\n        T state;\n\n        if (fromStringConverter is not null)\n        {\n            state = fromStringConverter(value);\n        }\n        else\n        {\n            state = Enum.TryParse<T>(value, true, out var s)\n                ? s\n                : throw new InvalidOperationException(\"State is not supported\");\n        }\n\n        if (!states.Contains(state))\n            throw new InvalidOperationException(\"State is not supported\");\n\n        await feature.SetStateAsync(state).ConfigureAwait(false);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/CLI/Features/FeatureRegistry.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.CLI.Features;\n\npublic static class FeatureRegistry\n{\n    public static readonly IFeatureRegistration[] All =\n    [\n        new FeatureRegistration<AlwaysOnUSBState>(\"always-on-usb\"),\n        new FeatureRegistration<BatteryState>(\"battery\"),\n        new FeatureRegistration<BatteryNightChargeState>(\"battery-night-charge\"),\n        new FeatureRegistration<FlipToStartState>(\"flip-to-start\"),\n        new FeatureRegistration<FnLockState>(\"fn-lock\"),\n        new FeatureRegistration<HDRState>(\"hdr\"),\n        new FeatureRegistration<HybridModeState>(\"hybrid-mode\"),\n        new FeatureRegistration<InstantBootState>(\"instant-boot\"),\n        new FeatureRegistration<MicrophoneState>(\"microphone\"),\n        new FeatureRegistration<OneLevelWhiteKeyboardBacklightState>(\"one-level-white-keyboard-backlight\"),\n        new FeatureRegistration<OverDriveState>(\"over-drive\"),\n        new FeatureRegistration<PanelLogoBacklightState>(\"panel-logo-backlight\"),\n        new FeatureRegistration<PortsBacklightState>(\"ports-backlight\"),\n        new FeatureRegistration<PowerModeState>(\"power-mode\"),\n        new FeatureRegistration<RefreshRate>(\"refresh-rate\",\n            s => s.Frequency.ToString(),\n            s => new(Convert.ToInt32(s))),\n        new FeatureRegistration<Resolution>(\"resolution\",\n            s => $\"{s.Width}x{s.Height}\",\n            s =>\n            {\n                var split = s.Split('x');\n                return new(Convert.ToInt32(split.FirstOrDefault()), Convert.ToInt32(split.LastOrDefault()));\n            }),\n        new FeatureRegistration<SpeakerState>(\"speaker\"),\n        new FeatureRegistration<TouchpadLockState>(\"touchpad-lock\"),\n        new FeatureRegistration<WinKeyState>(\"win-key\"),\n        new FeatureRegistration<WhiteKeyboardBacklightState>(\"white-keyboard-backlight\"),\n    ];\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/CLI/Features/IFeatureRegistration.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace LenovoLegionToolkit.WPF.CLI.Features;\n\npublic interface IFeatureRegistration\n{\n    string Name { get; }\n    Task<bool> IsSupportedAsync();\n    Task<IEnumerable<string>> GetValuesAsync();\n    Task<string> GetValueAsync();\n    Task SetValueAsync(string value);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/CLI/IpcServer.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO.Pipes;\nusing System.Linq;\nusing System.Security.AccessControl;\nusing System.Security.Principal;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.CLI.Lib;\nusing LenovoLegionToolkit.CLI.Lib.Extensions;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.CLI.Features;\n\nnamespace LenovoLegionToolkit.WPF.CLI;\n\npublic class IpcServer(\n    AutomationProcessor automationProcessor,\n    SpectrumKeyboardBacklightController spectrumKeyboardBacklightController,\n    RGBKeyboardBacklightController rgbKeyboardBacklightController,\n    IntegrationsSettings settings\n    )\n{\n    private CancellationTokenSource _cancellationTokenSource = new();\n    private Task _handler = Task.CompletedTask;\n\n    public async Task StartStopIfNeededAsync()\n    {\n        await StopAsync().ConfigureAwait(false);\n\n        if (!settings.Store.CLI)\n            return;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Starting...\");\n\n        _cancellationTokenSource = new();\n\n        var token = _cancellationTokenSource.Token;\n        _handler = Task.Run(() => Handler(token), token);\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Started\");\n    }\n\n    public async Task StopAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopping...\");\n\n        await _cancellationTokenSource.CancelAsync();\n        await _handler;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Stopped\");\n    }\n\n    private async Task Handler(CancellationToken token)\n    {\n        try\n        {\n            var identity = new SecurityIdentifier(WellKnownSidType.AuthenticatedUserSid, null);\n            var security = new PipeSecurity();\n            security.AddAccessRule(new(identity, PipeAccessRights.ReadWrite, AccessControlType.Allow));\n\n            await using var pipe = NamedPipeServerStreamAcl.Create(LenovoLegionToolkit.CLI.Lib.Constants.PIPE_NAME,\n                PipeDirection.InOut,\n                1,\n                PipeTransmissionMode.Message,\n                PipeOptions.None,\n                0,\n                0,\n                security);\n\n            while (!token.IsCancellationRequested)\n            {\n                await pipe.WaitForConnectionAsync(token).ConfigureAwait(false);\n\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Connection received.\");\n\n                try\n                {\n                    var req = await pipe.ReadObjectAsync<IpcRequest>(token).ConfigureAwait(false);\n\n                    if (req?.Operation is null)\n                        throw new IpcException(\"Failed to deserialize request\");\n\n                    var res = await HandleRequest(req).ConfigureAwait(false);\n                    await pipe.WriteObjectAsync(res, token).ConfigureAwait(false);\n                }\n                catch (OperationCanceledException)\n                {\n                    throw;\n                }\n                catch (Exception ex)\n                {\n                    var res = new IpcResponse { Success = false, Message = ex.Message };\n                    await pipe.WriteObjectAsync(res, token).ConfigureAwait(false);\n                }\n                finally\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Disconnecting...\");\n\n                    pipe.Disconnect();\n                }\n            }\n        }\n        catch (OperationCanceledException) { }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Unknown failure.\", ex);\n        }\n    }\n\n    private async Task<IpcResponse> HandleRequest(IpcRequest req)\n    {\n        string? message;\n\n        switch (req.Operation)\n        {\n            case IpcRequest.OperationType.ListQuickActions:\n                message = await ListQuickActionsAsync().ConfigureAwait(false);\n                return new IpcResponse { Success = true, Message = message };\n            case IpcRequest.OperationType.QuickAction when req is { Name: not null }:\n                await RunQuickActionAsync(req.Name).ConfigureAwait(false);\n                return new IpcResponse { Success = true };\n            case IpcRequest.OperationType.ListFeatures:\n                message = await ListFeaturesAsync();\n                return new IpcResponse { Success = true, Message = message };\n            case IpcRequest.OperationType.ListFeatureValues when req is { Name: not null }:\n                message = await ListFeatureValuesAsync(req.Name);\n                return new IpcResponse { Success = true, Message = message };\n            case IpcRequest.OperationType.GetFeatureValue when req is { Name: not null }:\n                message = await GetFeatureValueAsync(req.Name);\n                return new IpcResponse { Success = true, Message = message };\n            case IpcRequest.OperationType.SetFeatureValue when req is { Name: not null, Value: not null }:\n                await SetFeatureValueAsync(req.Name, req.Value).ConfigureAwait(false);\n                return new IpcResponse { Success = true };\n            case IpcRequest.OperationType.GetSpectrumProfile:\n                message = await GetSpectrumProfileAsync();\n                return new IpcResponse { Success = true, Message = message };\n            case IpcRequest.OperationType.SetSpectrumProfile when req is { Value: not null }:\n                await SetSpectrumProfileAsync(req.Value);\n                return new IpcResponse { Success = true };\n            case IpcRequest.OperationType.GetSpectrumBrightness:\n                message = await GetSpectrumBrightnessAsync();\n                return new IpcResponse { Success = true, Message = message };\n            case IpcRequest.OperationType.SetSpectrumBrightness when req is { Value: not null }:\n                await SetSpectrumBrightnessAsync(req.Value);\n                return new IpcResponse { Success = true };\n            case IpcRequest.OperationType.GetRGBPreset:\n                message = await GetRGBPresetAsync();\n                return new IpcResponse { Success = true, Message = message };\n            case IpcRequest.OperationType.SetRGBPreset when req is { Value: not null }:\n                await SetRGBPresetAsync(req.Value);\n                return new IpcResponse { Success = true };\n            default:\n                throw new IpcException(\"Invalid request\");\n        }\n    }\n\n    private async Task<string> ListQuickActionsAsync()\n    {\n        var pipelines = await automationProcessor.GetPipelinesAsync().ConfigureAwait(false);\n        var quickActions = pipelines\n            .Where(p => p.Trigger is null)\n            .Select(p => p.Name);\n\n        return string.Join('\\n', quickActions);\n    }\n\n    private async Task RunQuickActionAsync(string name)\n    {\n        var pipelines = await automationProcessor.GetPipelinesAsync().ConfigureAwait(false);\n        var quickAction = pipelines\n                              .Where(p => p.Trigger is null)\n                              .FirstOrDefault(p => p.Name == name)\n                          ?? throw new InvalidOperationException($\"Quick Action \\\"{name}\\\" not found\");\n\n        await automationProcessor.RunNowAsync(quickAction.Id);\n    }\n\n    private static async Task<string?> ListFeaturesAsync()\n    {\n        var features = new List<string>();\n\n        foreach (var feature in FeatureRegistry.All)\n        {\n            if (await feature.IsSupportedAsync().ConfigureAwait(false))\n                features.Add(feature.Name);\n        }\n\n        return string.Join('\\n', features);\n    }\n\n    private static async Task<string?> ListFeatureValuesAsync(string name)\n    {\n        var feature = FeatureRegistry.All.FirstOrDefault(f => f.Name == name)\n                      ?? throw new IpcException(\"Invalid feature\");\n        var values = await feature.GetValuesAsync().ConfigureAwait(false);\n        return string.Join('\\n', values);\n    }\n\n    private static async Task<string> GetFeatureValueAsync(string name)\n    {\n        var feature = FeatureRegistry.All.FirstOrDefault(f => f.Name == name)\n                      ?? throw new IpcException(\"Invalid feature\");\n        return await feature.GetValueAsync().ConfigureAwait(false);\n    }\n\n    private static async Task SetFeatureValueAsync(string name, string value)\n    {\n        var feature = FeatureRegistry.All.FirstOrDefault(f => f.Name == name)\n                      ?? throw new IpcException(\"Invalid feature\");\n        await feature.SetValueAsync(value).ConfigureAwait(false);\n    }\n\n    private async Task<string> GetSpectrumProfileAsync()\n    {\n        if (!await spectrumKeyboardBacklightController.IsSupportedAsync().ConfigureAwait(false))\n            throw new InvalidOperationException(\"Spectrum is not supported\");\n\n        var profile = await spectrumKeyboardBacklightController.GetProfileAsync().ConfigureAwait(false);\n        return $\"{profile}\";\n    }\n\n    private async Task SetSpectrumProfileAsync(string value)\n    {\n        if (!await spectrumKeyboardBacklightController.IsSupportedAsync().ConfigureAwait(false))\n            throw new InvalidOperationException(\"Spectrum is not supported\");\n\n        await spectrumKeyboardBacklightController.SetProfileAsync(Convert.ToInt32(value)).ConfigureAwait(false);\n\n        MessagingCenter.Publish(new SpectrumBacklightChangedMessage());\n    }\n\n    private async Task<string> GetSpectrumBrightnessAsync()\n    {\n        if (!await spectrumKeyboardBacklightController.IsSupportedAsync().ConfigureAwait(false))\n            throw new InvalidOperationException(\"Spectrum is not supported\");\n\n        var profile = await spectrumKeyboardBacklightController.GetBrightnessAsync().ConfigureAwait(false);\n        return $\"{profile}\";\n    }\n\n    private async Task SetSpectrumBrightnessAsync(string value)\n    {\n        if (!await spectrumKeyboardBacklightController.IsSupportedAsync().ConfigureAwait(false))\n            throw new InvalidOperationException(\"Spectrum is not supported\");\n\n        await spectrumKeyboardBacklightController.SetBrightnessAsync(Convert.ToInt32(value)).ConfigureAwait(false);\n\n        MessagingCenter.Publish(new SpectrumBacklightChangedMessage());\n    }\n\n    private async Task<string> GetRGBPresetAsync()\n    {\n        if (!await rgbKeyboardBacklightController.IsSupportedAsync().ConfigureAwait(false))\n            throw new InvalidOperationException(\"RGB is not supported\");\n\n        var state = await rgbKeyboardBacklightController.GetStateAsync().ConfigureAwait(false);\n        return $\"{(int)state.SelectedPreset + 1}\";\n    }\n\n    private async Task SetRGBPresetAsync(string value)\n    {\n        if (!await rgbKeyboardBacklightController.IsSupportedAsync().ConfigureAwait(false))\n            throw new InvalidOperationException(\"RGB is not supported\");\n\n        var preset = (RGBKeyboardBacklightPreset)(Convert.ToInt32(value) - 1);\n\n        if (!Enum.IsDefined(preset))\n            throw new InvalidOperationException(\"Invalid preset\");\n\n        await rgbKeyboardBacklightController.SetLightControlOwnerAsync(true).ConfigureAwait(false);\n        await rgbKeyboardBacklightController.SetPresetAsync(preset).ConfigureAwait(false);\n\n        MessagingCenter.Publish(new RGBKeyboardBacklightChangedMessage());\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Constants.cs",
    "content": "﻿using System;\n\nnamespace LenovoLegionToolkit.WPF;\n\npublic static class Constants\n{\n    public static readonly Uri LatestReleaseUri = new(\"https://github.com/BartoszCichecki/LenovoLegionToolkit/releases/latest\");\n    public static readonly Uri PayPalUri = new(\"https://www.paypal.com/donate/?hosted_button_id=22AZE2NBP3HTL\");\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/AbstractComboBoxFeatureCardControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Controls.Custom;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic abstract class AbstractComboBoxFeatureCardControl<T> : AbstractRefreshingControl where T : struct\n{\n    protected readonly IFeature<T> Feature = IoCContainer.Resolve<IFeature<T>>();\n\n    private readonly CardControl _cardControl = new();\n\n    private readonly CardHeaderControl _cardHeaderControl = new();\n\n    private readonly ComboBox _comboBox = new();\n\n    protected SymbolRegular Icon\n    {\n        get => _cardControl.Icon;\n        set => _cardControl.Icon = value;\n    }\n\n    protected string Title\n    {\n        get => _cardHeaderControl.Title;\n        set\n        {\n            _cardHeaderControl.Title = value;\n            AutomationProperties.SetName(_comboBox, value);\n        }\n    }\n\n    protected string Subtitle\n    {\n        get => _cardHeaderControl.Subtitle;\n        set => _cardHeaderControl.Subtitle = value;\n    }\n\n    protected string Warning\n    {\n        get => _cardHeaderControl.Warning;\n        set => _cardHeaderControl.Warning = value;\n    }\n\n    protected AbstractComboBoxFeatureCardControl() => InitializeComponent();\n\n    private void InitializeComponent()\n    {\n        _comboBox.SelectionChanged += ComboBox_SelectionChanged;\n        _comboBox.MinWidth = 165;\n        _comboBox.Visibility = Visibility.Hidden;\n        _comboBox.Margin = new(8, 0, 0, 0);\n\n        _cardHeaderControl.Accessory = GetAccessory(_comboBox);\n        _cardControl.Header = _cardHeaderControl;\n        _cardControl.Margin = new(0, 0, 0, 8);\n\n        Content = _cardControl;\n    }\n\n    private async void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        await OnStateChangeAsync(_comboBox, Feature, e.GetNewValue<T>(), e.GetOldValue<T>());\n    }\n\n    protected bool TryGetSelectedItem(out T value) => _comboBox.TryGetSelectedItem(out value);\n\n    protected int ItemsCount => _comboBox.Items.Count;\n\n    protected virtual FrameworkElement GetAccessory(ComboBox comboBox) => comboBox;\n\n    protected virtual string ComboBoxItemDisplayName(T value) => value switch\n    {\n        IDisplayName dn => dn.DisplayName,\n        Enum e => e.GetDisplayName(),\n        _ => value.ToString() ?? throw new InvalidOperationException(\"Unsupported type\")\n    };\n\n    protected override async Task OnRefreshAsync()\n    {\n        if (!await Feature.IsSupportedAsync())\n            throw new NotSupportedException();\n\n        var items = await Feature.GetAllStatesAsync();\n        var selectedItem = await Feature.GetStateAsync();\n\n        _comboBox.SetItems(items, selectedItem, ComboBoxItemDisplayName);\n        _comboBox.IsEnabled = items.Length != 0;\n        _comboBox.Visibility = Visibility.Visible;\n    }\n\n    protected override void OnFinishedLoading()\n    {\n        MessagingCenter.Subscribe<FeatureStateMessage<T>>(this, () => Dispatcher.InvokeTask(async () =>\n        {\n            if (!IsVisible)\n                return;\n\n            await RefreshAsync();\n        }));\n    }\n\n    protected virtual async Task OnStateChangeAsync(ComboBox comboBox, IFeature<T> feature, T? newValue, T? oldValue)\n    {\n        var exceptionOccurred = false;\n\n        try\n        {\n            if (IsRefreshing)\n                return;\n\n            _comboBox.IsEnabled = false;\n\n            if (oldValue is null)\n                return;\n\n            if (!comboBox.TryGetSelectedItem(out T selectedState))\n                return;\n\n            var currentState = await feature.GetStateAsync();\n\n            if (selectedState.Equals(currentState))\n                return;\n\n            await feature.SetStateAsync(selectedState);\n        }\n        catch (Exception ex)\n        {\n            exceptionOccurred = true;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to change state. [feature={GetType().Name}]\", ex);\n\n            OnStateChangeException(ex);\n        }\n        finally\n        {\n            var delay = AdditionalStateChangeDelay(oldValue, newValue);\n            if (delay > TimeSpan.Zero)\n                await Task.Delay(delay);\n\n            _comboBox.IsEnabled = true;\n        }\n\n        if (exceptionOccurred)\n            await RefreshAsync();\n    }\n\n    protected virtual void OnStateChangeException(Exception exception) { }\n\n    protected virtual TimeSpan AdditionalStateChangeDelay(T? oldValue, T? newValue) => TimeSpan.Zero;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/AbstractRefreshingControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic abstract class AbstractRefreshingControl : UserControl\n{\n    private Task? _refreshTask;\n\n    protected bool IsRefreshing => _refreshTask is not null;\n\n    protected virtual bool DisablesWhileRefreshing => true;\n\n    protected AbstractRefreshingControl()\n    {\n        IsEnabled = false;\n\n        Loaded += RefreshingControl_Loaded;\n        IsVisibleChanged += RefreshingControl_IsVisibleChanged;\n    }\n\n    private void RefreshingControl_Loaded(object sender, RoutedEventArgs e)\n    {\n        OnFinishedLoading();\n    }\n\n    protected abstract void OnFinishedLoading();\n\n    private async void RefreshingControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    protected async Task RefreshAsync()\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Refreshing control... [feature={GetType().Name}]\");\n\n        var exceptions = false;\n\n        try\n        {\n            if (DisablesWhileRefreshing)\n                IsEnabled = false;\n\n            _refreshTask ??= OnRefreshAsync();\n            await _refreshTask;\n        }\n        catch (NotSupportedException)\n        {\n            exceptions = true;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Unsupported. [feature={GetType().Name}]\");\n        }\n        catch (Exception ex)\n        {\n            exceptions = true;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Exception when refreshing control. [feature={GetType().Name}]\", ex);\n        }\n        finally\n        {\n            _refreshTask = null;\n\n            if (exceptions)\n                Visibility = Visibility.Collapsed;\n            else\n                IsEnabled = true;\n        }\n    }\n\n    protected abstract Task OnRefreshAsync();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/AbstractToggleFeatureCardControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing CardControl = LenovoLegionToolkit.WPF.Controls.Custom.CardControl;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic abstract class AbstractToggleFeatureCardControl<T> : AbstractRefreshingControl where T : struct\n{\n    protected readonly IFeature<T> Feature = IoCContainer.Resolve<IFeature<T>>();\n\n    private readonly CardControl _cardControl = new();\n\n    private readonly CardHeaderControl _cardHeaderControl = new();\n\n    private readonly ToggleSwitch _toggle = new();\n\n    protected SymbolRegular Icon\n    {\n        get => _cardControl.Icon;\n        set => _cardControl.Icon = value;\n    }\n\n    protected string Title\n    {\n        get => _cardHeaderControl.Title;\n        set\n        {\n            _cardHeaderControl.Title = value;\n            AutomationProperties.SetName(_toggle, value);\n        }\n    }\n\n    protected string Subtitle\n    {\n        get => _cardHeaderControl.Subtitle;\n        set => _cardHeaderControl.Subtitle = value;\n    }\n\n    protected string Warning\n    {\n        get => _cardHeaderControl.Warning;\n        set => _cardHeaderControl.Warning = value;\n    }\n\n    public bool IsToggleEnabled\n    {\n        get => _toggle.IsEnabled;\n        set => _toggle.IsEnabled = value;\n    }\n\n    protected abstract T OnState { get; }\n\n    protected abstract T OffState { get; }\n\n    protected virtual TimeSpan AdditionalStateChangeDelay => TimeSpan.Zero;\n\n    protected AbstractToggleFeatureCardControl()\n    {\n        InitializeComponent();\n    }\n\n    private void InitializeComponent()\n    {\n        _toggle.Click += Toggle_Click;\n        _toggle.Visibility = Visibility.Hidden;\n        _toggle.Margin = new(8, 0, 0, 0);\n\n        _cardHeaderControl.Accessory = _toggle;\n        _cardControl.Header = _cardHeaderControl;\n        _cardControl.Margin = new(0, 0, 0, 8);\n\n        Content = _cardControl;\n    }\n\n    private async void Toggle_Click(object sender, RoutedEventArgs e) => await OnStateChange(_toggle, Feature);\n\n    protected override async Task OnRefreshAsync()\n    {\n        if (!await Feature.IsSupportedAsync())\n            throw new NotSupportedException();\n\n        _toggle.IsChecked = OnState.Equals(await Feature.GetStateAsync());\n        _toggle.Visibility = Visibility.Visible;\n    }\n\n    protected override void OnFinishedLoading()\n    {\n        MessagingCenter.Subscribe<FeatureStateMessage<T>>(this, () => Dispatcher.InvokeTask(async () =>\n        {\n            if (!IsVisible)\n                return;\n\n            await RefreshAsync();\n        }));\n    }\n\n    protected virtual async Task OnStateChange(ToggleSwitch toggle, IFeature<T> feature)\n    {\n        var exceptionOccurred = false;\n\n        try\n        {\n            if (IsRefreshing || toggle.IsChecked is null)\n                return;\n\n            _toggle.IsEnabled = false;\n\n            var state = toggle.IsChecked.Value ? OnState : OffState;\n            if (state.Equals(await feature.GetStateAsync()))\n                return;\n\n            await feature.SetStateAsync(state);\n        }\n        catch (Exception ex)\n        {\n            exceptionOccurred = true;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to change state. [feature={GetType().Name}]\", ex);\n\n            OnStateChangeException(ex);\n        }\n        finally\n        {\n            if (AdditionalStateChangeDelay > TimeSpan.Zero)\n                await Task.Delay(AdditionalStateChangeDelay);\n\n            _toggle.IsEnabled = true;\n        }\n\n        if (exceptionOccurred)\n            await RefreshAsync();\n    }\n\n    protected virtual void OnStateChangeException(Exception exception) { }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/AbstractAutomationStepControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\nusing CardControl = LenovoLegionToolkit.WPF.Controls.Custom.CardControl;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation;\n\npublic abstract class AbstractAutomationStepControl<T>(T automationStep) : AbstractAutomationStepControl(automationStep)\n    where T : IAutomationStep\n{\n    protected new T AutomationStep => (T)base.AutomationStep;\n}\n\npublic abstract class AbstractAutomationStepControl : UserControl\n{\n    protected IAutomationStep AutomationStep { get; }\n\n    private readonly CardControl _cardControl = new()\n    {\n        Margin = new(0, 0, 0, 8),\n    };\n\n    private readonly CardHeaderControl _cardHeaderControl = new();\n\n    private readonly StackPanel _stackPanel = new()\n    {\n        Orientation = Orientation.Horizontal,\n    };\n\n    private readonly Button _deleteButton = new()\n    {\n        Icon = SymbolRegular.Dismiss24,\n        ToolTip = Resource.AbstractAutomationStepControl_Delete,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0),\n    };\n\n    public SymbolRegular Icon\n    {\n        get => _cardControl.Icon;\n        set => _cardControl.Icon = value;\n    }\n\n    public string Title\n    {\n        get => _cardHeaderControl.Title;\n        set => _cardHeaderControl.Title = value;\n    }\n\n    public string Subtitle\n    {\n        get => _cardHeaderControl.Subtitle;\n        set => _cardHeaderControl.Subtitle = value;\n    }\n\n    public VerticalAlignment TitleVerticalAlignment\n    {\n        get => _cardHeaderControl.TitleVerticalAlignment;\n        set => _cardHeaderControl.TitleVerticalAlignment = value;\n    }\n\n    public VerticalAlignment SubtitleVerticalAlignment\n    {\n        get => _cardHeaderControl.SubtitleVerticalAlignment;\n        set => _cardHeaderControl.SubtitleVerticalAlignment = value;\n    }\n\n    public event EventHandler? Changed;\n    public event EventHandler? Delete;\n\n    protected AbstractAutomationStepControl(IAutomationStep automationStep)\n    {\n        AutomationStep = automationStep;\n\n        InitializeComponent();\n\n        Loaded += RefreshingControl_Loaded;\n    }\n\n    private void InitializeComponent()\n    {\n        _deleteButton.Click += (_, _) => Delete?.Invoke(this, EventArgs.Empty);\n\n        var control = GetCustomControl();\n        if (control is not null)\n            _stackPanel.Children.Add(control);\n        _stackPanel.Children.Add(_deleteButton);\n\n        _cardHeaderControl.Accessory = _stackPanel;\n        _cardControl.Header = _cardHeaderControl;\n\n        Content = _cardControl;\n    }\n\n    private async void RefreshingControl_Loaded(object sender, RoutedEventArgs e)\n    {\n        await RefreshAsync();\n        OnFinishedLoading();\n    }\n\n    public abstract IAutomationStep CreateAutomationStep();\n\n    protected abstract UIElement? GetCustomControl();\n\n    protected abstract void OnFinishedLoading();\n\n    protected abstract Task RefreshAsync();\n\n    protected void RaiseChanged() => Changed?.Invoke(this, EventArgs.Empty);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/AbstractComboBoxAutomationStepControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.WPF.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation;\n\npublic abstract class AbstractComboBoxAutomationStepCardControl<T>(IAutomationStep<T> step)\n    : AbstractAutomationStepControl<IAutomationStep<T>>(step) where T : struct\n{\n    private readonly ComboBox _comboBox = new()\n    {\n        MinWidth = 150,\n        Visibility = Visibility.Hidden,\n        Margin = new(8, 0, 0, 0)\n    };\n\n    private T _state;\n\n    protected override UIElement GetCustomControl()\n    {\n        _comboBox.SelectionChanged += ComboBox_SelectionChanged;\n\n        return _comboBox;\n    }\n\n    private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (!_comboBox.TryGetSelectedItem(out T selectedState) || _state.Equals(selectedState))\n            return;\n\n        _state = selectedState;\n\n        RaiseChanged();\n    }\n\n    public override IAutomationStep CreateAutomationStep()\n    {\n        var obj = Activator.CreateInstance(AutomationStep.GetType(), _state);\n        if (obj is not IAutomationStep<T> step)\n            throw new InvalidOperationException(\"Couldn't create automation step\");\n        return step;\n    }\n\n    protected virtual string ComboBoxItemDisplayName(T value) => value switch\n    {\n        IDisplayName dn => dn.DisplayName,\n        Enum e => e.GetDisplayName(),\n        _ => value.ToString() ?? throw new InvalidOperationException(\"Unsupported type\")\n    };\n\n    protected override async Task RefreshAsync()\n    {\n        AutomationProperties.SetName(_comboBox, Title);\n\n        var items = await AutomationStep.GetAllStatesAsync();\n        var selectedItem = AutomationStep.State;\n\n        _state = selectedItem;\n        _comboBox.SetItems(items, selectedItem, ComboBoxItemDisplayName);\n        _comboBox.IsEnabled = items.Length != 0;\n    }\n\n    protected override void OnFinishedLoading() => _comboBox.Visibility = Visibility.Visible;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/AutomationPipelineControl.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing Humanizer;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Controls.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing LenovoLegionToolkit.WPF.Windows.Automation;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\nusing CardExpander = LenovoLegionToolkit.WPF.Controls.Custom.CardExpander;\nusing MenuItem = Wpf.Ui.Controls.MenuItem;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation;\n\npublic class AutomationPipelineControl : UserControl\n{\n    private readonly TaskCompletionSource _initializedTaskCompletionSource = new();\n\n    private readonly AutomationProcessor _automationProcessor = IoCContainer.Resolve<AutomationProcessor>();\n    private readonly GodModeSettings _godModeSettings = IoCContainer.Resolve<GodModeSettings>();\n\n    private readonly CardExpander _cardExpander = new()\n    {\n        Margin = new(0, 0, 0, 8),\n    };\n\n    private readonly CardHeaderControl _cardHeaderControl = new();\n\n    private readonly StackPanel _stackPanel = new();\n\n    private readonly StackPanel _stepsStackPanel = new();\n\n    private readonly Grid _buttonsStackPanel = new()\n    {\n        Margin = new(0, 16, 0, 0),\n        ColumnDefinitions =\n        {\n            new() { Width = new(1, GridUnitType.Star) },\n            new() { Width = GridLength.Auto },\n            new() { Width = GridLength.Auto },\n            new() { Width = GridLength.Auto },\n        }\n    };\n\n    private readonly CheckBox _isExclusiveCheckBox = new()\n    {\n        HorizontalAlignment = HorizontalAlignment.Left,\n        Content = Resource.AutomationPipelineControl_Exclusive,\n        ToolTip = Resource.AutomationPipelineControl_Exclusive_ToolTip,\n        MinWidth = 100,\n        Margin = new(0, 0, 8, 0),\n    };\n\n    private readonly Button _runNowButton = new()\n    {\n        Content = Resource.AutomationPipelineControl_RunNow,\n        MinWidth = 100,\n        Margin = new(0, 0, 8, 0),\n    };\n\n    private readonly Button _addStepButton = new()\n    {\n        Content = Resource.AutomationPipelineControl_AddStep,\n        MinWidth = 100,\n        Margin = new(0, 0, 8, 0),\n    };\n\n    private readonly Button _deletePipelineButton = new()\n    {\n        Content = Resource.Delete,\n        MinWidth = 100,\n    };\n\n    private readonly IAutomationStep[] _supportedAutomationSteps;\n\n    public AutomationPipeline AutomationPipeline { get; }\n\n    public event EventHandler? OnChanged;\n    public event EventHandler? OnDelete;\n\n    public Task InitializedTask => _initializedTaskCompletionSource.Task;\n\n    public AutomationPipelineControl(AutomationPipeline automationPipeline, IAutomationStep[] supportedAutomationSteps)\n    {\n        AutomationPipeline = automationPipeline;\n        _supportedAutomationSteps = supportedAutomationSteps;\n\n        Initialized += AutomationPipelineControl_Initialized;\n    }\n\n    public AutomationPipeline CreateAutomationPipeline() => new()\n    {\n        Id = AutomationPipeline.Id,\n        IconName = AutomationPipeline.IconName,\n        Name = AutomationPipeline.Name,\n        Trigger = AutomationPipeline.Trigger,\n        Steps = _stepsStackPanel.Children.ToArray()\n            .OfType<AbstractAutomationStepControl>()\n            .Select(s => s.CreateAutomationStep())\n            .ToList(),\n        IsExclusive = _isExclusiveCheckBox.IsChecked ?? false,\n    };\n\n    public string? GetName() => AutomationPipeline.Name;\n\n    public void SetName(string? name)\n    {\n        AutomationPipeline.Name = name;\n        _cardHeaderControl.Title = GenerateHeader();\n        _cardHeaderControl.Subtitle = GenerateSubtitle();\n        _cardHeaderControl.SubtitleToolTip = _cardHeaderControl.Subtitle;\n\n        OnChanged?.Invoke(this, EventArgs.Empty);\n    }\n\n    public void SetIcon(SymbolRegular? icon)\n    {\n        AutomationPipeline.IconName = icon.HasValue ? Enum.GetName(icon.Value) : null;\n        _cardExpander.Icon = GenerateIcon();\n\n        OnChanged?.Invoke(this, EventArgs.Empty);\n    }\n\n    private async void AutomationPipelineControl_Initialized(object? sender, EventArgs e)\n    {\n        _cardExpander.Header = _cardHeaderControl;\n\n        foreach (var step in AutomationPipeline.Steps)\n        {\n            var control = await GenerateStepControlAsync(step);\n            _stepsStackPanel.Children.Add(control);\n        }\n\n        if (AutomationPipeline.Trigger is not null)\n        {\n            _isExclusiveCheckBox.IsChecked = AutomationPipeline.IsExclusive;\n            _isExclusiveCheckBox.Checked += (_, _) => OnChanged?.Invoke(this, EventArgs.Empty);\n        }\n        else\n        {\n            _isExclusiveCheckBox.Visibility = Visibility.Hidden;\n        }\n\n        _runNowButton.Click += async (_, _) => await RunAsync();\n\n        _addStepButton.Click += async (_, _) =>\n        {\n            var stepControls = new List<AbstractAutomationStepControl>();\n            foreach (var step in _supportedAutomationSteps)\n                stepControls.Add(await GenerateStepControlAsync(step));\n\n            var window = new AddAutomationStepWindow(stepControls, AddStep) { Owner = Window.GetWindow(this) };\n            window.ShowDialog();\n        };\n\n        _deletePipelineButton.Click += (_, _) => OnDelete?.Invoke(this, EventArgs.Empty);\n\n        Grid.SetColumn(_isExclusiveCheckBox, 0);\n        Grid.SetColumn(_runNowButton, 1);\n        Grid.SetColumn(_addStepButton, 2);\n        Grid.SetColumn(_deletePipelineButton, 3);\n\n        _buttonsStackPanel.Children.Add(_isExclusiveCheckBox);\n        _buttonsStackPanel.Children.Add(_runNowButton);\n        _buttonsStackPanel.Children.Add(_addStepButton);\n        _buttonsStackPanel.Children.Add(_deletePipelineButton);\n\n        _stackPanel.Children.Add(_stepsStackPanel);\n        _stackPanel.Children.Add(_buttonsStackPanel);\n\n        _cardExpander.Icon = GenerateIcon();\n        _cardHeaderControl.Title = GenerateHeader();\n        _cardHeaderControl.Subtitle = GenerateSubtitle();\n        _cardHeaderControl.Accessory = GenerateAccessory();\n        _cardHeaderControl.SubtitleToolTip = _cardHeaderControl.Subtitle;\n        _cardExpander.Content = _stackPanel;\n\n        Content = _cardExpander;\n\n        _initializedTaskCompletionSource.TrySetResult();\n    }\n\n    private async Task RunAsync()\n    {\n        try\n        {\n            _runNowButton.IsEnabled = false;\n            _runNowButton.Content = Resource.AutomationPipelineControl_Running;\n            var pipeline = CreateAutomationPipeline();\n            await _automationProcessor.RunNowAsync(pipeline);\n\n            _runNowButton.Content = Resource.AutomationPipelineControl_RunNow;\n            _runNowButton.IsEnabled = true;\n\n            await SnackbarHelper.ShowAsync(Resource.AutomationPipelineControl_RunNow_Success_Title, Resource.AutomationPipelineControl_RunNow_Success_Message);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Run now completed with errors\", ex);\n\n            _runNowButton.Content = Resource.AutomationPipelineControl_RunNow;\n            _runNowButton.IsEnabled = true;\n\n            await SnackbarHelper.ShowAsync(Resource.AutomationPipelineControl_RunNow_Error_Title, Resource.AutomationPipelineControl_RunNow_Error_Message);\n        }\n    }\n\n    private SymbolRegular GenerateIcon()\n    {\n        if (AutomationPipeline.Trigger is not null)\n            return SymbolRegular.Flow20;\n\n        return Enum.TryParse<SymbolRegular>(AutomationPipeline.IconName, out var icon) ? icon : SymbolRegular.Play24;\n    }\n\n    private string GenerateHeader()\n    {\n        if (!string.IsNullOrWhiteSpace(AutomationPipeline.Name))\n            return AutomationPipeline.Name;\n\n        if (AutomationPipeline.Trigger is not null)\n            return AutomationPipeline.Trigger.DisplayName;\n\n        return Resource.AutomationPipelineControl_Unnamed;\n    }\n\n    private string GenerateSubtitle()\n    {\n        var stepsCount = _stepsStackPanel.Children.ToArray()\n            .OfType<AbstractAutomationStepControl>()\n            .Count();\n\n        var result = string.Format(stepsCount == 1 ? Resource.AutomationPipelineControl_Step : Resource.AutomationPipelineControl_Step_Many, stepsCount);\n\n        if (!string.IsNullOrWhiteSpace(AutomationPipeline.Name) && AutomationPipeline.Trigger is not null)\n            result += $\" | {AutomationPipeline.Trigger.DisplayName}\";\n\n        if (AutomationPipeline.Trigger is IPowerModeAutomationPipelineTrigger pm)\n            result += $\" | {Resource.AutomationPipelineControl_SubtitlePart_PowerMode}: {pm.PowerModeState.GetDisplayName()}\";\n\n        if (AutomationPipeline.Trigger is IGodModePresetChangedAutomationPipelineTrigger gpt)\n        {\n            var name = _godModeSettings.Store.Presets.Where(kv => kv.Key == gpt.PresetId)\n                .Select(kv => kv.Value.Name)\n                .DefaultIfEmpty(\"-\")\n                .First();\n            result += $\" | {Resource.AutomationPipelineControl_SubtitlePart_Preset}: {name}\";\n        }\n\n        if (AutomationPipeline.Trigger is IProcessesAutomationPipelineTrigger pt && pt.Processes.Length != 0)\n            result += $\" | {Resource.AutomationPipelineControl_SubtitlePart_Apps}: {string.Join(\", \", pt.Processes.Select(p => p.Name))}\";\n\n        if (AutomationPipeline.Trigger is ITimeAutomationPipelineTrigger tt)\n        {\n            if (tt.IsSunrise)\n                result += $\" | {Resource.AutomationPipelineControl_SubtitlePart_AtSunrise}\";\n            if (tt.IsSunset)\n                result += $\" | {Resource.AutomationPipelineControl_SubtitlePart_AtSunset}\";\n            if (tt.Time is not null)\n            {\n                var local = DateTimeExtensions.UtcFrom(tt.Time.Value.Hour, tt.Time.Value.Minute).ToLocalTime();\n                if (tt.Days.IsEmpty() || tt.Days.OrderBy(x => x).SequenceEqual(Enum.GetValues<DayOfWeek>()))\n                {\n                    result += $\" | {string.Format(Resource.AutomationPipelineControl_SubtitlePart_AtTime, local.Hour, local.Minute)}\";\n                }\n                else\n                {\n                    var localizedDayStrings = tt.Days.Select(day => Resource.Culture.DateTimeFormat.GetDayName(day));\n                    result += $\" | {string.Join(\", \", localizedDayStrings)} {string.Format(Resource.AutomationPipelineControl_SubtitlePart_AtTime.ToLower(Resource.Culture), local.Hour, local.Minute)}\";\n                }\n            }\n        }\n\n        if (AutomationPipeline.Trigger is IUserInactivityPipelineTrigger ut && ut.InactivityTimeSpan > TimeSpan.Zero)\n            result += $\" | {string.Format(Resource.AutomationPipelineControl_SubtitlePart_After, ut.InactivityTimeSpan.Humanize(culture: Resource.Culture))}\";\n\n        if (AutomationPipeline.Trigger is IWiFiConnectedPipelineTrigger wt && wt.Ssids.Length != 0)\n            result += $\" | {string.Join(\",\", wt.Ssids)}\";\n\n        if (AutomationPipeline.Trigger is IPeriodicAutomationPipelineTrigger pet)\n            result += $\" | {Resource.PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes}: {pet.Period.TotalMinutes}\";\n\n        if (AutomationPipeline.Trigger is IDeviceAutomationPipelineTrigger dt && dt.InstanceIds.Length != 0)\n            result += $\" | {Resource.DevicePipelineTriggerTabItemContent_Devices}: {dt.InstanceIds.Length}\";\n\n        return result;\n    }\n\n    private Button? GenerateAccessory()\n    {\n        var triggers = AutomationPipeline.AllTriggers\n            .ToArray();\n\n        if (!AutomationPipelineTriggerConfigurationWindow.IsValid(triggers))\n            return null;\n\n        var button = new Button\n        {\n            Content = Resource.AutomationPipelineControl_Configure,\n            Margin = new(16, 0, 16, 0),\n            MinWidth = 120,\n        };\n        button.Click += (_, _) =>\n        {\n            var window = new AutomationPipelineTriggerConfigurationWindow(triggers) { Owner = Window.GetWindow(this) };\n            window.OnSave += (_, e) =>\n            {\n                AutomationPipeline.Trigger = e;\n                _cardHeaderControl.Subtitle = GenerateSubtitle();\n                _cardHeaderControl.Accessory = GenerateAccessory();\n                _cardHeaderControl.SubtitleToolTip = _cardHeaderControl.Subtitle;\n                OnChanged?.Invoke(this, EventArgs.Empty);\n            };\n            window.ShowDialog();\n        };\n        return button;\n    }\n\n    private async Task<AbstractAutomationStepControl> GenerateStepControlAsync(IAutomationStep automationStep)\n    {\n        AbstractAutomationStepControl control = automationStep switch\n        {\n            AlwaysOnUsbAutomationStep s => new AlwaysOnUsbAutomationStepControl(s),\n            BatteryAutomationStep s => new BatteryAutomationStepControl(s),\n            BatteryNightChargeAutomationStep s => new BatteryNightChargeAutomationStepControl(s),\n            DeactivateGPUAutomationStep s => new DeactivateGPUAutomationStepControl(s),\n            DelayAutomationStep s => new DelayAutomationStepControl(s),\n            DisplayBrightnessAutomationStep s => new DisplayBrightnessAutomationStepControl(s),\n            DpiScaleAutomationStep s => new DpiScaleAutomationStepControl(s),\n            FlipToStartAutomationStep s => new FlipToStartAutomationStepControl(s),\n            FnLockAutomationStep s => new FnLockAutomationStepControl(s),\n            GodModePresetAutomationStep s => new GodModePresetAutomationStepControl(s),\n            HDRAutomationStep s => new HDRAutomationStepControl(s),\n            HybridModeAutomationStep s => await HybridModeAutomationStepControlFactory.GetControlAsync(s),\n            InstantBootAutomationStep s => new InstantBootAutomationStepControl(s),\n            MacroAutomationStep s => new MacroAutomationStepControl(s),\n            MicrophoneAutomationStep s => new MicrophoneAutomationStepControl(s),\n            NotificationAutomationStep s => new NotificationAutomationStepControl(s),\n            OneLevelWhiteKeyboardBacklightAutomationStep s => new OneLevelWhiteKeyboardBacklightAutomationStepControl(s),\n            OverDriveAutomationStep s => new OverDriveAutomationStepControl(s),\n            OverclockDiscreteGPUAutomationStep s => new OverclockDiscreteGPUAutomationStepControl(s),\n            PanelLogoBacklightAutomationStep s => new PanelLogoBacklightAutomationStepControl(s),\n            PlaySoundAutomationStep s => new PlaySoundAutomationStepControl(s),\n            PortsBacklightAutomationStep s => new PortsBacklightAutomationStepControl(s),\n            PowerModeAutomationStep s => new PowerModeAutomationStepControl(s),\n            QuickActionAutomationStep s => new QuickActionAutomationStepControl(s),\n            RefreshRateAutomationStep s => new RefreshRateAutomationStepControl(s),\n            ResolutionAutomationStep s => new ResolutionAutomationStepControl(s),\n            RGBKeyboardBacklightAutomationStep s => new RGBKeyboardBacklightAutomationStepControl(s),\n            RunAutomationStep s => new RunAutomationStepControl(s),\n            SpeakerAutomationStep s => new SpeakerAutomationStepControl(s),\n            SpectrumKeyboardBacklightBrightnessAutomationStep s => new SpectrumKeyboardBacklightBrightnessAutomationStepControl(s),\n            SpectrumKeyboardBacklightImportProfileAutomationStep s => new SpectrumKeyboardBacklightImportProfileAutomationStepControl(s),\n            SpectrumKeyboardBacklightProfileAutomationStep s => new SpectrumKeyboardBacklightProfileAutomationStepControl(s),\n            TurnOffMonitorsAutomationStep s => new TurnOffMonitorsAutomationStepControl(s),\n            TurnOffWiFiAutomationStep s => new TurnOffWiFiAutomationStepControl(s),\n            TurnOnWiFiAutomationStep s => new TurnOnWiFiAutomationStepControl(s),\n            TouchpadLockAutomationStep s => new TouchpadLockAutomationStepControl(s),\n            WhiteKeyboardBacklightAutomationStep s => new WhiteKeyboardBacklightAutomationStepControl(s),\n            WinKeyAutomationStep s => new WinKeyAutomationStepControl(s),\n            _ => throw new InvalidOperationException(\"Unknown step type\"),\n        };\n        control.MouseRightButtonUp += (_, e) =>\n        {\n            ShowContextMenu(control);\n            e.Handled = true;\n        };\n        control.Changed += (_, _) =>\n        {\n            OnChanged?.Invoke(this, EventArgs.Empty);\n        };\n        control.Delete += (s, _) =>\n        {\n            if (s is AbstractAutomationStepControl step)\n                DeleteStep(step);\n        };\n        return control;\n    }\n\n    private void ShowContextMenu(FrameworkElement control)\n    {\n        var menuItems = new List<MenuItem>();\n\n        var index = _stepsStackPanel.Children.IndexOf(control);\n        var maxIndex = _stepsStackPanel.Children.Count - 1;\n\n        var moveUpMenuItem = new MenuItem\n        {\n            SymbolIcon = SymbolRegular.ArrowUp24,\n            Header = Resource.MoveUp\n        };\n        if (index > 0)\n            moveUpMenuItem.Click += (_, _) => MoveStep(control, index - 1);\n        else\n            moveUpMenuItem.IsEnabled = false;\n        menuItems.Add(moveUpMenuItem);\n\n        var moveDownMenuItem = new MenuItem\n        {\n            SymbolIcon = SymbolRegular.ArrowDown24,\n            Header = Resource.MoveDown\n        };\n        if (index < maxIndex)\n            moveDownMenuItem.Click += (_, _) => MoveStep(control, index + 1);\n        else\n            moveDownMenuItem.IsEnabled = false;\n\n        menuItems.Add(moveDownMenuItem);\n\n        control.ContextMenu = new();\n        control.ContextMenu.Items.AddRange(menuItems);\n        control.ContextMenu.IsOpen = true;\n    }\n\n    private void MoveStep(UIElement control, int index)\n    {\n        _stepsStackPanel.Children.Remove(control);\n        _stepsStackPanel.Children.Insert(index, control);\n\n        OnChanged?.Invoke(this, EventArgs.Empty);\n    }\n\n    private void AddStep(AbstractAutomationStepControl control)\n    {\n        _stepsStackPanel.Children.Add(control);\n        _cardHeaderControl.Subtitle = GenerateSubtitle();\n        _cardHeaderControl.SubtitleToolTip = _cardHeaderControl.Subtitle;\n\n        control.Focus();\n\n        OnChanged?.Invoke(this, EventArgs.Empty);\n    }\n\n    private void DeleteStep(UIElement control)\n    {\n        _stepsStackPanel.Children.Remove(control);\n        _cardHeaderControl.Subtitle = GenerateSubtitle();\n        _cardHeaderControl.SubtitleToolTip = _cardHeaderControl.Subtitle;\n\n        OnChanged?.Invoke(this, EventArgs.Empty);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/AlwaysOnUsbAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class AlwaysOnUsbAutomationStepControl : AbstractComboBoxAutomationStepCardControl<AlwaysOnUSBState>\n{\n    public AlwaysOnUsbAutomationStepControl(IAutomationStep<AlwaysOnUSBState> step) : base(step)\n    {\n        Icon = SymbolRegular.UsbStick24;\n        Title = Resource.AlwaysOnUsbAutomationStepControl_Title;\n        Subtitle = Resource.AlwaysOnUsbAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/BatteryAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class BatteryAutomationStepControl : AbstractComboBoxAutomationStepCardControl<BatteryState>\n{\n    public BatteryAutomationStepControl(IAutomationStep<BatteryState> step) : base(step)\n    {\n        Icon = SymbolRegular.BatteryCharge24;\n        Title = Resource.BatteryAutomationStepControl_Title;\n        Subtitle = Resource.BatteryAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/BatteryNightChargeAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class BatteryNightChargeAutomationStepControl : AbstractComboBoxAutomationStepCardControl<BatteryNightChargeState>\n{\n    public BatteryNightChargeAutomationStepControl(IAutomationStep<BatteryNightChargeState> step) : base(step)\n    {\n        Icon = SymbolRegular.WeatherMoon24;\n        Title = Resource.BatteryNightChargeAutomationStepControl_Title;\n        Subtitle = Resource.BatteryNightChargeAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/DeactivateGPUAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class DeactivateGPUAutomationStepControl : AbstractComboBoxAutomationStepCardControl<DeactivateGPUAutomationStepState>\n{\n    public DeactivateGPUAutomationStepControl(DeactivateGPUAutomationStep step) : base(step)\n    {\n        Icon = SymbolRegular.DeveloperBoard24;\n        Title = Resource.DeactivateGPUAutomationStepControl_Title;\n        Subtitle = Resource.DeactivateGPUAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/DelayAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class DelayAutomationStepControl : AbstractComboBoxAutomationStepCardControl<Delay>\n{\n    public DelayAutomationStepControl(IAutomationStep<Delay> step) : base(step)\n    {\n        Icon = SymbolRegular.Clock24;\n        Title = Resource.DelayAutomationStepControl_Title;\n        Subtitle = Resource.DelayAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/DisplayBrightnessAutomationStepControl.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\nusing NumberBox = Wpf.Ui.Controls.NumberBox;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class DisplayBrightnessAutomationStepControl : AbstractAutomationStepControl<DisplayBrightnessAutomationStep>\n{\n    private readonly NumberBox _brightness = new()\n    {\n        Width = 150,\n        ClearButtonEnabled = false,\n        MaxDecimalPlaces = 0,\n        Minimum = 0,\n        Maximum = 100,\n        SmallChange = 5,\n        LargeChange = 5\n    };\n\n    private readonly Grid _grid = new();\n\n    public DisplayBrightnessAutomationStepControl(DisplayBrightnessAutomationStep step) : base(step)\n    {\n        Icon = SymbolRegular.BrightnessHigh48;\n        Title = Resource.DisplayBrightnessAutomationStepControl_Title;\n        Subtitle = Resource.DisplayBrightnessAutomationStepControl_Message;\n    }\n\n    public override IAutomationStep CreateAutomationStep() => new DisplayBrightnessAutomationStep((int?)_brightness.Value ?? 0);\n\n    protected override UIElement GetCustomControl()\n    {\n        _brightness.TextChanged += (_, _) =>\n        {\n            if ((int?)_brightness.Value != AutomationStep.Brightness)\n                RaiseChanged();\n        };\n        _grid.Children.Add(_brightness);\n        return _grid;\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    protected override Task RefreshAsync()\n    {\n        _brightness.Value = AutomationStep.Brightness;\n        return Task.CompletedTask;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/DpiScaleAutomationStepControl.cs",
    "content": "﻿using System;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class DpiScaleAutomationStepControl : AbstractComboBoxAutomationStepCardControl<DpiScale>\n{\n    private readonly DisplayConfigurationListener _listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n\n    public DpiScaleAutomationStepControl(IAutomationStep<DpiScale> step) : base(step)\n    {\n        Icon = SymbolRegular.TextFontSize24;\n        Title = Resource.DpiScaleAutomationStepControl_Title;\n        Subtitle = Resource.DpiScaleAutomationStepControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    protected override string ComboBoxItemDisplayName(DpiScale value)\n    {\n        var str = base.ComboBoxItemDisplayName(value);\n        return LocalizationHelper.ForceLeftToRight(str);\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (IsLoaded)\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/FlipToStartAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class FlipToStartAutomationStepControl : AbstractComboBoxAutomationStepCardControl<FlipToStartState>\n{\n    public FlipToStartAutomationStepControl(IAutomationStep<FlipToStartState> step) : base(step)\n    {\n        Icon = SymbolRegular.Power24;\n        Title = Resource.FlipToStartAutomationStepControl_Title;\n        Subtitle = Resource.FlipToStartAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/FnLockAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class FnLockAutomationStepControl : AbstractComboBoxAutomationStepCardControl<FnLockState>\n{\n    public FnLockAutomationStepControl(IAutomationStep<FnLockState> step) : base(step)\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.FnLockAutomationStepControl_Title;\n        Subtitle = Resource.FnLockAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/GodModePresetAutomationStepControl.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class GodModePresetAutomationStepControl : AbstractAutomationStepControl<GodModePresetAutomationStep>\n{\n    private readonly ComboBox _comboBox = new()\n    {\n        MinWidth = 150,\n        Visibility = Visibility.Hidden,\n        Margin = new(8, 0, 0, 0)\n    };\n\n    public GodModePresetAutomationStepControl(GodModePresetAutomationStep step) : base(step)\n    {\n        Icon = SymbolRegular.Gauge24;\n        Title = Resource.GodModePresetAutomationStepControl_Title;\n        Subtitle = Resource.GodModePresetAutomationStepControl_Message;\n    }\n\n    public override IAutomationStep CreateAutomationStep()\n    {\n        var presetId = Guid.Empty;\n\n        if (_comboBox.TryGetSelectedItem(out KeyValuePair<Guid, GodModePreset> value))\n            presetId = value.Key;\n\n        return new GodModePresetAutomationStep(presetId);\n    }\n\n    protected override UIElement GetCustomControl()\n    {\n        _comboBox.SelectionChanged += ComboBox_SelectionChanged;\n        return _comboBox;\n    }\n\n    private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) => RaiseChanged();\n\n    protected override async Task RefreshAsync()\n    {\n        var state = await AutomationStep.GetStateAsync();\n        var presets = state.Presets;\n        var selectedPreset = presets.FirstOrDefault(kv => kv.Key == AutomationStep.PresetId);\n\n        _comboBox.SetItems(presets, selectedPreset, kv => kv.Value.Name);\n        _comboBox.IsEnabled = presets.Count != 0;\n    }\n\n    protected override void OnFinishedLoading() => _comboBox.Visibility = Visibility.Visible;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/HDRAutomationStepControl.cs",
    "content": "﻿using System;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class HDRAutomationStepControl : AbstractComboBoxAutomationStepCardControl<HDRState>\n{\n    private readonly DisplayConfigurationListener _listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n\n    public HDRAutomationStepControl(IAutomationStep<HDRState> step) : base(step)\n    {\n        Icon = SymbolRegular.Hdr24;\n        Title = Resource.HDRAutomationStepControl_Title;\n        Subtitle = Resource.HDRAutomationStepControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (IsLoaded)\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/HybridModeAutomationStepControl.cs",
    "content": "﻿using System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic static class HybridModeAutomationStepControlFactory\n{\n    public static async Task<AbstractAutomationStepControl<IAutomationStep<HybridModeState>>> GetControlAsync(IAutomationStep<HybridModeState> step)\n    {\n        var mi = await Compatibility.GetMachineInformationAsync();\n        return mi.Properties.SupportsIGPUMode\n            ? new ComboBoxHybridModeAutomationStepControl(step)\n            : new ToggleHybridModeAutomationStepControl(step);\n    }\n\n    private class ComboBoxHybridModeAutomationStepControl : AbstractComboBoxAutomationStepCardControl<HybridModeState>\n    {\n        public ComboBoxHybridModeAutomationStepControl(IAutomationStep<HybridModeState> step) : base(step)\n        {\n            Icon = SymbolRegular.LeafOne24;\n            Title = Resource.ComboBoxHybridModeAutomationStepControl_Title;\n            Subtitle = Resource.ComboBoxHybridModeAutomationStepControl_Message;\n        }\n    }\n\n    private class ToggleHybridModeAutomationStepControl : AbstractComboBoxAutomationStepCardControl<HybridModeState>\n    {\n        public ToggleHybridModeAutomationStepControl(IAutomationStep<HybridModeState> step) : base(step)\n        {\n            Icon = SymbolRegular.LeafOne24;\n            Title = Resource.ToggleHybridModeAutomationStepControl_Title;\n            Subtitle = Resource.ToggleHybridModeAutomationStepControl_Message;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/InstantBootAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\ninternal class InstantBootAutomationStepControl : AbstractComboBoxAutomationStepCardControl<InstantBootState>\n{\n    public InstantBootAutomationStepControl(IAutomationStep<InstantBootState> step) : base(step)\n    {\n        Icon = SymbolRegular.PlugDisconnected24;\n        Title = Resource.InstantBootAutomationStepControl_Title;\n        Subtitle = Resource.InstantBootAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/MacroAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class MacroAutomationStepControl : AbstractComboBoxAutomationStepCardControl<MacroAutomationStepState>\n{\n    public MacroAutomationStepControl(IAutomationStep<MacroAutomationStepState> step) : base(step)\n    {\n        Icon = SymbolRegular.ReceiptPlay24;\n        Title = Resource.MacroAutomationStepControl_Title;\n        Subtitle = Resource.MacroAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/MicrophoneAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class MicrophoneAutomationStepControl : AbstractComboBoxAutomationStepCardControl<MicrophoneState>\n{\n    public MicrophoneAutomationStepControl(IAutomationStep<MicrophoneState> step) : base(step)\n    {\n        Icon = SymbolRegular.Mic24;\n        Title = Resource.MicrophoneAutomationStepControl_Title;\n        Subtitle = Resource.MicrophoneAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/NotificationAutomationStepControl.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\nusing TextBox = Wpf.Ui.Controls.TextBox;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class NotificationAutomationStepControl : AbstractAutomationStepControl<NotificationAutomationStep>\n{\n    private readonly TextBox _scriptPath = new()\n    {\n        PlaceholderText = Resource.NotificationAutomationStepControl_NotificationText,\n        Width = 300\n    };\n\n    private readonly StackPanel _stackPanel = new();\n\n    public NotificationAutomationStepControl(NotificationAutomationStep step) : base(step)\n    {\n        Icon = SymbolRegular.Rocket24;\n        Title = Resource.NotificationAutomationStepControl_Title;\n\n        SizeChanged += RunAutomationStepControl_SizeChanged;\n    }\n\n    private void RunAutomationStepControl_SizeChanged(object sender, SizeChangedEventArgs e)\n    {\n        if (!e.WidthChanged)\n            return;\n\n        var newWidth = e.NewSize.Width / 3;\n        _scriptPath.Width = newWidth;\n    }\n\n    public override IAutomationStep CreateAutomationStep() => new NotificationAutomationStep(_scriptPath.Text);\n\n    protected override UIElement GetCustomControl()\n    {\n        _scriptPath.TextChanged += (_, _) =>\n        {\n            if (_scriptPath.Text != AutomationStep.Text)\n                RaiseChanged();\n        };\n\n        _stackPanel.Children.Add(_scriptPath);\n\n        return _stackPanel;\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    protected override Task RefreshAsync()\n    {\n        _scriptPath.Text = AutomationStep.Text ?? string.Empty;\n        return Task.CompletedTask;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/OneLevelWhiteKeyboardBacklightAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class OneLevelWhiteKeyboardBacklightAutomationStepControl : AbstractComboBoxAutomationStepCardControl<OneLevelWhiteKeyboardBacklightState>\n{\n    public OneLevelWhiteKeyboardBacklightAutomationStepControl(IAutomationStep<OneLevelWhiteKeyboardBacklightState> step) : base(step)\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.OneLevelWhiteKeyboardBacklightAutomationStepControl_Title;\n        Subtitle = Resource.OneLevelWhiteKeyboardBacklightAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/OverDriveAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class OverDriveAutomationStepControl : AbstractComboBoxAutomationStepCardControl<OverDriveState>\n{\n    public OverDriveAutomationStepControl(IAutomationStep<OverDriveState> step) : base(step)\n    {\n        Icon = SymbolRegular.TopSpeed24;\n        Title = Resource.OverDriveAutomationStepControl_Title;\n        Subtitle = Resource.OverDriveAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/OverclockDiscreteGPUAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class OverclockDiscreteGPUAutomationStepControl : AbstractComboBoxAutomationStepCardControl<OverclockDiscreteGPUAutomationStepState>\n{\n    public OverclockDiscreteGPUAutomationStepControl(IAutomationStep<OverclockDiscreteGPUAutomationStepState> step) : base(step)\n    {\n        Icon = SymbolRegular.DeveloperBoardLightning20;\n        Title = Resource.OverclockDiscreteGPUAutomationStepControl_Title;\n        Subtitle = Resource.OverclockDiscreteGPUAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/PanelLogoBacklightAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class PanelLogoBacklightAutomationStepControl : AbstractComboBoxAutomationStepCardControl<PanelLogoBacklightState>\n{\n    public PanelLogoBacklightAutomationStepControl(IAutomationStep<PanelLogoBacklightState> step) : base(step)\n    {\n        Icon = SymbolRegular.LightbulbCircle24;\n        Title = Resource.PanelLogoBacklightAutomationStepControl_Title;\n        Subtitle = Resource.PanelLogoBacklightAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/PlaySoundAutomationStepControl.cs",
    "content": "﻿using System.IO;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Microsoft.Win32;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\nusing Orientation = System.Windows.Controls.Orientation;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class PlaySoundAutomationStepControl : AbstractAutomationStepControl<PlaySoundAutomationStep>\n{\n    private string? _path;\n\n    private readonly TextBlock _titleTextBlock = new()\n    {\n        VerticalAlignment = VerticalAlignment.Center,\n    };\n\n    private readonly Button _openButton = new()\n    {\n        Icon = SymbolRegular.Folder20,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0)\n    };\n\n    private readonly StackPanel _stackPanel = new()\n    {\n        Orientation = Orientation.Horizontal\n    };\n\n    public PlaySoundAutomationStepControl(PlaySoundAutomationStep automationStep) : base(automationStep)\n    {\n        Icon = SymbolRegular.MusicNote2Play20;\n        Title = Resource.PlaySoundAutomationStepControl_Title;\n        Subtitle = Resource.PlaySoundAutomationStepControl_Message;\n    }\n\n    public override IAutomationStep CreateAutomationStep()\n    {\n        return new PlaySoundAutomationStep(_path);\n    }\n\n    protected override UIElement GetCustomControl()\n    {\n        _openButton.Click += (_, _) =>\n        {\n            var ofd = new OpenFileDialog\n            {\n                Title = Resource.Import,\n                InitialDirectory = @\"C:\\Windows\\Media\",\n                CheckFileExists = true,\n            };\n\n            var result = ofd.ShowDialog() ?? false;\n            if (!result)\n                return;\n\n            _path = ofd.FileName;\n            _titleTextBlock.Text = Path.GetFileName(_path);\n\n            RaiseChanged();\n        };\n\n        _stackPanel.Children.Add(_titleTextBlock);\n        _stackPanel.Children.Add(_openButton);\n\n        return _stackPanel;\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    protected override Task RefreshAsync()\n    {\n        _path = AutomationStep.Path;\n        _titleTextBlock.Text = Path.GetFileName(_path) ?? \"-\";\n        return Task.CompletedTask;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/PortsBacklightAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class PortsBacklightAutomationStepControl : AbstractComboBoxAutomationStepCardControl<PortsBacklightState>\n{\n    public PortsBacklightAutomationStepControl(IAutomationStep<PortsBacklightState> step) : base(step)\n    {\n        Icon = SymbolRegular.UsbPlug24;\n        Title = Resource.PortsBacklightAutomationStepControl_Title;\n        Subtitle = Resource.PortsBacklightAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/PowerModeAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class PowerModeAutomationStepControl : AbstractComboBoxAutomationStepCardControl<PowerModeState>\n{\n    public PowerModeAutomationStepControl(IAutomationStep<PowerModeState> step) : base(step)\n    {\n        Icon = SymbolRegular.Gauge24;\n        Title = Resource.PowerModeAutomationStepControl_Title;\n        Subtitle = Resource.PowerModeAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/QuickActionAutomationStepControl.cs",
    "content": "﻿using System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class QuickActionAutomationStepControl : AbstractAutomationStepControl<QuickActionAutomationStep>\n{\n    private readonly AutomationProcessor _processor = IoCContainer.Resolve<AutomationProcessor>();\n\n    private readonly ComboBox _comboBox = new()\n    {\n        MinWidth = 150\n    };\n\n    private readonly StackPanel _stackPanel = new();\n\n    public QuickActionAutomationStepControl(QuickActionAutomationStep step) : base(step)\n    {\n        Icon = SymbolRegular.Play24;\n        Title = Resource.QuickActionAutomationStepControl_Title;\n        Subtitle = Resource.QuickActionAutomationStepControl_Message;\n    }\n\n    public override IAutomationStep CreateAutomationStep()\n    {\n        return _comboBox.TryGetSelectedItem(out AutomationPipeline? pipeline)\n            ? new QuickActionAutomationStep(pipeline?.Id)\n            : new QuickActionAutomationStep(null);\n    }\n\n    protected override UIElement GetCustomControl()\n    {\n        _comboBox.SelectionChanged += (_, _) => { RaiseChanged(); };\n        _stackPanel.Children.Add(_comboBox);\n        return _stackPanel;\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    protected override async Task RefreshAsync()\n    {\n        var pipelines = await _processor.GetPipelinesAsync();\n        var filteredPipelines = pipelines.Where(p => p.Trigger is null).ToArray();\n        var selectedPipeline = filteredPipelines.FirstOrDefault(p => p.Id == AutomationStep.PipelineId);\n\n        _comboBox.SetItems(filteredPipelines, selectedPipeline, p => p?.Name ?? \"\");\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/RGBKeyboardBacklightAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class RGBKeyboardBacklightAutomationStepControl : AbstractComboBoxAutomationStepCardControl<RGBKeyboardBacklightPreset>\n{\n    public RGBKeyboardBacklightAutomationStepControl(IAutomationStep<RGBKeyboardBacklightPreset> step) : base(step)\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.RGBKeyboardBacklightAutomationStepControl_Title;\n        Subtitle = Resource.RGBKeyboardBacklightAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/RefreshRateAutomationStepControl.cs",
    "content": "﻿using System;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class RefreshRateAutomationStepControl : AbstractComboBoxAutomationStepCardControl<RefreshRate>\n{\n    private readonly DisplayConfigurationListener _listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n\n    public RefreshRateAutomationStepControl(IAutomationStep<RefreshRate> step) : base(step)\n    {\n        Icon = SymbolRegular.DesktopPulse24;\n        Title = Resource.RefreshRateAutomationStepControl_Title;\n        Subtitle = Resource.RefreshRateAutomationStepControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    protected override string ComboBoxItemDisplayName(RefreshRate value)\n    {\n        var str = base.ComboBoxItemDisplayName(value);\n        return LocalizationHelper.ForceLeftToRight(str);\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (IsLoaded)\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/ResolutionAutomationStepControl.cs",
    "content": "﻿using System;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class ResolutionAutomationStepControl : AbstractComboBoxAutomationStepCardControl<Resolution>\n{\n    private readonly DisplayConfigurationListener _listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n\n    public ResolutionAutomationStepControl(IAutomationStep<Resolution> step) : base(step)\n    {\n        Icon = SymbolRegular.ScaleFill24;\n        Title = Resource.ResolutionAutomationStepControl_Title;\n        Subtitle = Resource.ResolutionAutomationStepControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (IsLoaded)\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/RunAutomationStepControl.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\nusing TextBox = Wpf.Ui.Controls.TextBox;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class RunAutomationStepControl : AbstractAutomationStepControl<RunAutomationStep>\n{\n    private readonly TextBox _scriptPath = new()\n    {\n        PlaceholderText = Resource.RunAutomationStepControl_ExePath,\n        Width = 300,\n        Margin = new(0, 0, 0, 8),\n    };\n\n    private readonly TextBox _scriptArguments = new()\n    {\n        PlaceholderText = Resource.RunAutomationStepControl_ExeArguments,\n        Width = 300,\n        Margin = new(0, 0, 0, 8),\n    };\n\n    private readonly CheckBox _checkBoxProcessRunSilently = new()\n    {\n        Content = Resource.RunAutomationStepControl_ProcessRunSilently,\n        ToolTip = Resource.RunAutomationStepControl_ProcessRunSilently_Description\n    };\n\n    private readonly CheckBox _checkBoxProcessWaitUntilFinished = new()\n    {\n        Content = Resource.RunAutomationStepControl_ProcessWaitUntilFinished,\n        ToolTip = Resource.RunAutomationStepControl_ProcessWaitUntilFinished_Description\n    };\n\n    private readonly StackPanel _stackPanel = new();\n\n    public RunAutomationStepControl(RunAutomationStep step) : base(step)\n    {\n        Icon = SymbolRegular.WindowConsole20;\n        Title = Resource.RunAutomationStepControl_Title;\n        Subtitle = Resource.RunAutomationStepControl_Message;\n        TitleVerticalAlignment = VerticalAlignment.Bottom;\n        SubtitleVerticalAlignment = VerticalAlignment.Top;\n\n        AutomationProperties.SetName(_scriptPath, Resource.RunAutomationStepControl_ExePath);\n        AutomationProperties.SetName(_scriptArguments, Resource.RunAutomationStepControl_ExeArguments);\n        AutomationProperties.SetName(_checkBoxProcessRunSilently, Resource.RunAutomationStepControl_ProcessRunSilently);\n        AutomationProperties.SetName(_checkBoxProcessWaitUntilFinished, Resource.RunAutomationStepControl_ProcessWaitUntilFinished);\n\n        SizeChanged += RunAutomationStepControl_SizeChanged;\n    }\n\n    private void RunAutomationStepControl_SizeChanged(object sender, SizeChangedEventArgs e)\n    {\n        if (!e.WidthChanged)\n            return;\n\n        var newWidth = e.NewSize.Width / 3;\n        _scriptPath.Width = newWidth;\n        _scriptArguments.Width = newWidth;\n    }\n\n    public override IAutomationStep CreateAutomationStep()\n    {\n        return new RunAutomationStep(_scriptPath.Text,\n            _scriptArguments.Text,\n            _checkBoxProcessRunSilently.IsChecked ?? true,\n            _checkBoxProcessWaitUntilFinished.IsChecked ?? true);\n    }\n\n    protected override UIElement GetCustomControl()\n    {\n        _scriptPath.TextChanged += (_, _) =>\n        {\n            if (_scriptPath.Text != AutomationStep.ScriptPath)\n                RaiseChanged();\n        };\n        _scriptArguments.TextChanged += (_, _) =>\n        {\n            if (_scriptArguments.Text != AutomationStep.ScriptArguments)\n                RaiseChanged();\n        };\n        _checkBoxProcessRunSilently.Checked += (_, _) =>\n        {\n            if (_checkBoxProcessRunSilently.IsChecked != AutomationStep.RunSilently)\n                RaiseChanged();\n        };\n        _checkBoxProcessWaitUntilFinished.Checked += (_, _) =>\n        {\n            if (_checkBoxProcessWaitUntilFinished.IsChecked != AutomationStep.WaitUntilFinished)\n                RaiseChanged();\n        };\n        _checkBoxProcessRunSilently.Unchecked += (_, _) =>\n        {\n            if (_checkBoxProcessRunSilently.IsChecked != AutomationStep.RunSilently)\n                RaiseChanged();\n        };\n        _checkBoxProcessWaitUntilFinished.Unchecked += (_, _) =>\n        {\n            if (_checkBoxProcessWaitUntilFinished.IsChecked != AutomationStep.WaitUntilFinished)\n                RaiseChanged();\n        };\n\n        _stackPanel.Children.Add(_scriptPath);\n        _stackPanel.Children.Add(_scriptArguments);\n        _stackPanel.Children.Add(_checkBoxProcessRunSilently);\n        _stackPanel.Children.Add(_checkBoxProcessWaitUntilFinished);\n\n        return _stackPanel;\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    protected override Task RefreshAsync()\n    {\n        _scriptPath.Text = AutomationStep.ScriptPath ?? string.Empty;\n        _scriptArguments.Text = AutomationStep.ScriptArguments ?? string.Empty;\n        _checkBoxProcessRunSilently.IsChecked = AutomationStep.RunSilently;\n        _checkBoxProcessWaitUntilFinished.IsChecked = AutomationStep.WaitUntilFinished;\n        return Task.CompletedTask;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/SpeakerAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class SpeakerAutomationStepControl : AbstractComboBoxAutomationStepCardControl<SpeakerState>\n{\n    public SpeakerAutomationStepControl(IAutomationStep<SpeakerState> step) : base(step)\n    {\n        Icon = SymbolRegular.Speaker224;\n        Title = Resource.SpeakerAutomationStepControl_Title;\n        Subtitle = Resource.SpeakerAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/SpectrumKeyboardBacklightBrightnessAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class SpectrumKeyboardBacklightBrightnessAutomationStepControl : AbstractComboBoxAutomationStepCardControl<int>\n{\n    public SpectrumKeyboardBacklightBrightnessAutomationStepControl(IAutomationStep<int> step) : base(step)\n    {\n        Icon = SymbolRegular.BrightnessHigh24;\n        Title = Resource.SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title;\n        Subtitle = Resource.SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message;\n    }\n\n    protected override string ComboBoxItemDisplayName(int value)\n    {\n        return value == 0\n            ? Resource.SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\n            : base.ComboBoxItemDisplayName(value);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/SpectrumKeyboardBacklightImportProfileAutomationStepControl.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Microsoft.Win32;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\nusing TextBox = Wpf.Ui.Controls.TextBox;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class SpectrumKeyboardBacklightImportProfileAutomationStepControl : AbstractAutomationStepControl<SpectrumKeyboardBacklightImportProfileAutomationStep>\n{\n    private readonly TextBox _path = new()\n    {\n        PlaceholderText = Resource.SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path,\n        Width = 300\n    };\n\n    private readonly Button _openButton = new()\n    {\n        Icon = SymbolRegular.MoreHorizontal24,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0)\n    };\n\n    private readonly StackPanel _stackPanel = new()\n    {\n        Orientation = Orientation.Horizontal\n    };\n\n    public SpectrumKeyboardBacklightImportProfileAutomationStepControl(SpectrumKeyboardBacklightImportProfileAutomationStep step) : base(step)\n    {\n        Icon = SymbolRegular.BrightnessHigh24;\n        Title = Resource.SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title;\n        Subtitle = Resource.SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message;\n\n        SizeChanged += RunAutomationStepControl_SizeChanged;\n    }\n\n    private void RunAutomationStepControl_SizeChanged(object sender, SizeChangedEventArgs e)\n    {\n        if (!e.WidthChanged)\n            return;\n\n        var newWidth = e.NewSize.Width / 3;\n        _path.Width = newWidth;\n    }\n\n    public override IAutomationStep CreateAutomationStep() => new SpectrumKeyboardBacklightImportProfileAutomationStep(_path.Text);\n\n    protected override UIElement GetCustomControl()\n    {\n        _path.TextChanged += (_, _) =>\n        {\n            if (_path.Text != AutomationStep.Path)\n                RaiseChanged();\n        };\n\n        _openButton.Click += (_, _) =>\n        {\n            var ofd = new OpenFileDialog\n            {\n                Title = Resource.Import,\n                InitialDirectory = \"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\",\n                Filter = \"Json Files (.json)|*.json\",\n                CheckFileExists = true,\n            };\n\n            var result = ofd.ShowDialog() ?? false;\n            if (!result)\n                return;\n\n            _path.Text = ofd.FileName;\n        };\n\n        _stackPanel.Children.Add(_path);\n        _stackPanel.Children.Add(_openButton);\n\n        return _stackPanel;\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    protected override Task RefreshAsync()\n    {\n        _path.Text = AutomationStep.Path ?? string.Empty;\n        return Task.CompletedTask;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/SpectrumKeyboardBacklightProfileAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class SpectrumKeyboardBacklightProfileAutomationStepControl : AbstractComboBoxAutomationStepCardControl<int>\n{\n    public SpectrumKeyboardBacklightProfileAutomationStepControl(IAutomationStep<int> step) : base(step)\n    {\n        Icon = SymbolRegular.BrightnessHigh24;\n        Title = Resource.SpectrumKeyboardBacklightProfileAutomationStepControl_Title;\n        Subtitle = Resource.SpectrumKeyboardBacklightProfileAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/TouchpadLockAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class TouchpadLockAutomationStepControl : AbstractComboBoxAutomationStepCardControl<TouchpadLockState>\n{\n    public TouchpadLockAutomationStepControl(IAutomationStep<TouchpadLockState> step) : base(step)\n    {\n        Icon = SymbolRegular.Tablet24;\n        Title = Resource.TouchpadLockAutomationStepControl_Title;\n        Subtitle = Resource.TouchpadLockAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/TurnOffMonitorsAutomationStepControl.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class TurnOffMonitorsAutomationStepControl : AbstractAutomationStepControl\n{\n    public TurnOffMonitorsAutomationStepControl(TurnOffMonitorsAutomationStep automationStep) : base(automationStep)\n    {\n        Icon = SymbolRegular.Desktop24;\n        Title = Resource.TurnOffMonitorsAutomationStepControl_Title;\n        Subtitle = Resource.TurnOffMonitorsAutomationStepControl_Message;\n    }\n\n    public override IAutomationStep CreateAutomationStep() => new TurnOffMonitorsAutomationStep();\n\n    protected override UIElement? GetCustomControl() => null;\n\n    protected override void OnFinishedLoading() { }\n\n    protected override Task RefreshAsync() => Task.CompletedTask;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/TurnOffWiFiAutomationStepControl.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class TurnOffWiFiAutomationStepControl : AbstractAutomationStepControl\n{\n    public TurnOffWiFiAutomationStepControl(TurnOffWiFiAutomationStep automationStep) : base(automationStep)\n    {\n        Icon = SymbolRegular.WifiOff24;\n        Title = Resource.TurnOffWiFiAutomationStepControl_Title;\n    }\n\n    public override IAutomationStep CreateAutomationStep() => new TurnOffWiFiAutomationStep();\n\n    protected override UIElement? GetCustomControl() => null;\n\n    protected override void OnFinishedLoading() { }\n\n    protected override Task RefreshAsync() => Task.CompletedTask;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/TurnOnWiFiAutomationStepControl.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class TurnOnWiFiAutomationStepControl : AbstractAutomationStepControl\n{\n    public TurnOnWiFiAutomationStepControl(TurnOnWiFiAutomationStep automationStep) : base(automationStep)\n    {\n        Icon = SymbolRegular.Wifi124;\n        Title = Resource.TurnOnWiFiAutomationStepControl_Title;\n    }\n\n    public override IAutomationStep CreateAutomationStep() => new TurnOnWiFiAutomationStep();\n\n    protected override UIElement? GetCustomControl() => null;\n\n    protected override void OnFinishedLoading() { }\n\n    protected override Task RefreshAsync() => Task.CompletedTask;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/WhiteKeyboardBacklightAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class WhiteKeyboardBacklightAutomationStepControl : AbstractComboBoxAutomationStepCardControl<WhiteKeyboardBacklightState>\n{\n    public WhiteKeyboardBacklightAutomationStepControl(IAutomationStep<WhiteKeyboardBacklightState> step) : base(step)\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.WhiteKeyboardBacklightAutomationStepControl_Title;\n        Subtitle = Resource.WhiteKeyboardBacklightAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Automation/Steps/WinKeyAutomationStepControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Automation.Steps;\n\npublic class WinKeyAutomationStepControl : AbstractComboBoxAutomationStepCardControl<WinKeyState>\n{\n    public WinKeyAutomationStepControl(IAutomationStep<WinKeyState> step) : base(step)\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.WinKeyAutomationStepControl_Title;\n        Subtitle = Resource.WinKeyAutomationStepControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/CardHeaderControl.cs",
    "content": "﻿using System;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Automation.Peers;\nusing System.Windows.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic class CardHeaderControl : UserControl\n{\n    private readonly TextBlock _titleTextBlock = new()\n    {\n        FontSize = 14,\n        FontWeight = FontWeights.Medium,\n        VerticalAlignment = VerticalAlignment.Center,\n        TextTrimming = TextTrimming.CharacterEllipsis,\n    };\n\n    private readonly TextBlock _subtitleTextBlock = new()\n    {\n        FontSize = 12,\n        Margin = new(0, 4, 0, 0),\n        TextWrapping = TextWrapping.Wrap,\n        TextTrimming = TextTrimming.CharacterEllipsis,\n    };\n\n    private readonly TextBlock _warningTextBlock = new()\n    {\n        FontSize = 12,\n        Margin = new(0, 4, 0, 0),\n        TextWrapping = TextWrapping.Wrap,\n        TextTrimming = TextTrimming.CharacterEllipsis,\n    };\n\n    private readonly StackPanel _stackPanel = new();\n\n    private readonly Grid _grid = new()\n    {\n        ColumnDefinitions =\n        {\n            new ColumnDefinition { Width = new(1, GridUnitType.Star) },\n            new ColumnDefinition { Width = GridLength.Auto },\n        },\n        RowDefinitions =\n        {\n            new RowDefinition { Height = GridLength.Auto },\n            new RowDefinition { Height = GridLength.Auto },\n        },\n    };\n\n    private UIElement? _accessory;\n\n    public string Title\n    {\n        get => _titleTextBlock.Text;\n        set\n        {\n            _titleTextBlock.Text = value;\n            RefreshLayout();\n        }\n    }\n\n    public string Subtitle\n    {\n        get => _subtitleTextBlock.Text;\n        set\n        {\n            _subtitleTextBlock.Text = value;\n            RefreshLayout();\n        }\n    }\n\n    public VerticalAlignment TitleVerticalAlignment\n    {\n        get => _titleTextBlock.VerticalAlignment;\n        set => _titleTextBlock.VerticalAlignment = value;\n    }\n\n    public VerticalAlignment SubtitleVerticalAlignment\n    {\n        get => _subtitleTextBlock.VerticalAlignment;\n        set => _subtitleTextBlock.VerticalAlignment = value;\n    }\n\n    public string Warning\n    {\n        get => _warningTextBlock.Text;\n        set\n        {\n            _warningTextBlock.Text = value;\n            RefreshLayout();\n        }\n    }\n\n    public string? SubtitleToolTip\n    {\n        get => _subtitleTextBlock.ToolTip as string;\n        set\n        {\n            _subtitleTextBlock.ToolTip = value;\n            ToolTipService.SetIsEnabled(_subtitleTextBlock, value is not null);\n            RefreshLayout();\n        }\n    }\n\n    public UIElement? Accessory\n    {\n        get => _accessory;\n        set\n        {\n            if (_accessory is not null)\n                _grid.Children.Remove(_accessory);\n\n            _accessory = value;\n\n            if (_accessory is not null)\n            {\n                Grid.SetColumn(_accessory, 1);\n                Grid.SetRow(_accessory, 0);\n                Grid.SetRowSpan(_accessory, 2);\n\n                _grid.Children.Add(_accessory);\n            }\n\n            RefreshLayout();\n        }\n    }\n\n    protected override void OnInitialized(EventArgs e)\n    {\n        base.OnInitialized(e);\n\n        Grid.SetColumn(_titleTextBlock, 0);\n        Grid.SetColumn(_stackPanel, 0);\n\n        Grid.SetRow(_titleTextBlock, 0);\n        Grid.SetRow(_stackPanel, 1);\n\n        _stackPanel.Children.Add(_subtitleTextBlock);\n        _stackPanel.Children.Add(_warningTextBlock);\n\n        _grid.Children.Add(_titleTextBlock);\n        _grid.Children.Add(_stackPanel);\n\n        Content = _grid;\n\n        UpdateTextStyle();\n        IsEnabledChanged += (_, _) => UpdateTextStyle();\n    }\n\n    protected override AutomationPeer OnCreateAutomationPeer() => new CardHeaderControlAutomationPeer(this);\n\n    private void RefreshLayout()\n    {\n        if (string.IsNullOrWhiteSpace(Subtitle) && string.IsNullOrWhiteSpace(Warning))\n            Grid.SetRowSpan(_titleTextBlock, 2);\n        else\n            Grid.SetRowSpan(_titleTextBlock, 1);\n\n        _subtitleTextBlock.Visibility = string.IsNullOrWhiteSpace(Subtitle) ? Visibility.Collapsed : Visibility.Visible;\n        _warningTextBlock.Visibility = string.IsNullOrWhiteSpace(Warning) ? Visibility.Collapsed : Visibility.Visible;\n    }\n\n    private void UpdateTextStyle()\n    {\n        if (IsEnabled)\n        {\n            _titleTextBlock.SetResourceReference(ForegroundProperty, \"TextFillColorPrimaryBrush\");\n            _subtitleTextBlock.SetResourceReference(ForegroundProperty, \"TextFillColorSecondaryBrush\");\n            _warningTextBlock.SetResourceReference(ForegroundProperty, \"SystemFillColorCautionBrush\");\n        }\n        else\n        {\n            _titleTextBlock.SetResourceReference(ForegroundProperty, \"TextFillColorDisabledBrush\");\n            _subtitleTextBlock.SetResourceReference(ForegroundProperty, \"TextFillColorDisabledBrush\");\n            _warningTextBlock.SetResourceReference(ForegroundProperty, \"TextFillColorDisabledBrush\");\n        }\n    }\n\n    private class CardHeaderControlAutomationPeer(CardHeaderControl owner) : FrameworkElementAutomationPeer(owner)\n    {\n        protected override string GetClassNameCore() => nameof(CardHeaderControl);\n\n        protected override AutomationControlType GetAutomationControlTypeCore() => AutomationControlType.Pane;\n\n        public override object? GetPattern(PatternInterface patternInterface)\n        {\n            if (patternInterface == PatternInterface.ItemContainer)\n                return this;\n\n            return base.GetPattern(patternInterface);\n        }\n\n        protected override string GetNameCore()\n        {\n            var result = base.GetNameCore() ?? string.Empty;\n\n            if (result == string.Empty)\n                result = AutomationProperties.GetName(owner);\n\n            if (result == string.Empty && !string.IsNullOrWhiteSpace(owner._titleTextBlock.Text))\n            {\n                result = owner._titleTextBlock.Text;\n\n                if (!string.IsNullOrWhiteSpace(owner._subtitleTextBlock.Text))\n                    result += $\", {owner._subtitleTextBlock.Text}\";\n            }\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/ColorPickerControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.ColorPickerControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:cp=\"clr-namespace:ColorPicker;assembly=ColorPicker\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\">\n\n    <Grid>\n        <Button\n            x:Name=\"_button\"\n            Width=\"38\"\n            Height=\"38\"\n            Click=\"Button_Click\" />\n\n        <Popup\n            x:Name=\"_popup\"\n            Width=\"250\"\n            AllowsTransparency=\"True\"\n            HorizontalOffset=\"-106\"\n            Placement=\"Bottom\"\n            StaysOpen=\"False\"\n            VerticalOffset=\"4\">\n            <Border\n                Background=\"{DynamicResource ApplicationBackgroundBrush}\"\n                BorderBrush=\"{DynamicResource KeyboardFocusBorderColorBrush}\"\n                BorderThickness=\"0.5\"\n                ClipToBounds=\"True\"\n                CornerRadius=\"8\">\n                <StackPanel>\n                    <cp:SquarePicker\n                        x:Name=\"_colorPicker\"\n                        Width=\"200\"\n                        Height=\"200\"\n                        Margin=\"16\"\n                        HorizontalAlignment=\"Center\"\n                        ColorChanged=\"ColorPicker_ColorChanged\"\n                        MouseDown=\"ColorPicker_MouseDown\"\n                        MouseUp=\"ColorPicker_MouseUp\" />\n\n                    <Grid Margin=\"0,0,0,16\" HorizontalAlignment=\"Center\">\n\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"Auto\" />\n                        </Grid.RowDefinitions>\n\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\" />\n                            <ColumnDefinition Width=\"120\" />\n                        </Grid.ColumnDefinitions>\n\n                        <Label\n                            Grid.Row=\"0\"\n                            Grid.Column=\"0\"\n                            Margin=\"0,0,16,24\"\n                            VerticalContentAlignment=\"Center\"\n                            Content=\"Hex\" />\n                        <Label\n                            Grid.Row=\"1\"\n                            Grid.Column=\"0\"\n                            Margin=\"0,0,16,8\"\n                            VerticalContentAlignment=\"Center\"\n                            Content=\"{x:Static resources:Resource.Color_Red}\" />\n                        <Label\n                            Grid.Row=\"2\"\n                            Grid.Column=\"0\"\n                            Margin=\"0,0,16,8\"\n                            VerticalContentAlignment=\"Center\"\n                            Content=\"{x:Static resources:Resource.Color_Green}\" />\n                        <Label\n                            Grid.Row=\"3\"\n                            Grid.Column=\"0\"\n                            Margin=\"0,0,16,8\"\n                            VerticalContentAlignment=\"Center\"\n                            Content=\"{x:Static resources:Resource.Color_Blue}\" />\n\n                        <wpfui:TextBox\n                            x:Name=\"_hexTextBox\"\n                            Grid.Row=\"0\"\n                            Grid.Column=\"1\"\n                            Margin=\"0,0,0,24\"\n                            HorizontalContentAlignment=\"Right\"\n                            ClearButtonEnabled=\"False\"\n                            TextChanged=\"HexTextBox_TextChanged\" />\n                        <wpfui:NumberBox\n                            x:Name=\"_redNumberBox\"\n                            Grid.Row=\"1\"\n                            Grid.Column=\"1\"\n                            Margin=\"0,0,0,8\"\n                            ClearButtonEnabled=\"False\"\n                            MaxDecimalPlaces=\"0\"\n                            Maximum=\"255\"\n                            Minimum=\"0\"\n                            Text=\"0\"\n                            TextChanged=\"NumberBox_TextChanged\" />\n                        <wpfui:NumberBox\n                            x:Name=\"_greenNumberBox\"\n                            Grid.Row=\"2\"\n                            Grid.Column=\"1\"\n                            Margin=\"0,0,0,8\"\n                            ClearButtonEnabled=\"False\"\n                            MaxDecimalPlaces=\"0\"\n                            Maximum=\"255\"\n                            Minimum=\"0\"\n                            Text=\"0\"\n                            TextChanged=\"NumberBox_TextChanged\" />\n                        <wpfui:NumberBox\n                            x:Name=\"_blueNumberBox\"\n                            Grid.Row=\"3\"\n                            Grid.Column=\"1\"\n                            Margin=\"0,0,0,8\"\n                            AcceptsExpression=\"False\"\n                            ClearButtonEnabled=\"False\"\n                            MaxDecimalPlaces=\"0\"\n                            Maximum=\"255\"\n                            Minimum=\"0\"\n                            Text=\"0\"\n                            TextChanged=\"NumberBox_TextChanged\" />\n\n                    </Grid>\n\n                    <wpfui:Button\n                        MinWidth=\"100\"\n                        Margin=\"0,0,0,16\"\n                        HorizontalAlignment=\"Center\"\n                        Appearance=\"Primary\"\n                        Click=\"OK_Click\"\n                        Content=\"OK\" />\n\n                </StackPanel>\n            </Border>\n        </Popup>\n\n    </Grid>\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/ColorPickerControl.xaml.cs",
    "content": "﻿using System;\nusing System.Drawing;\nusing System.Text.RegularExpressions;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing Color = System.Windows.Media.Color;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic partial class ColorPickerControl\n{\n    [GeneratedRegex(\"^#(?:[0-9A-F]{3}){2}$\", RegexOptions.IgnoreCase, \"en-DK\")]\n    private static partial Regex HexTextRegex();\n\n    private bool CanHandleEvent => !_isEditing && _colorPicker is not null && _redNumberBox is not null && _greenNumberBox is not null && _blueNumberBox is not null && _hexTextBox is not null;\n\n    private bool _isEditing;\n\n    public Color SelectedColor\n    {\n        get => _colorPicker.SelectedColor;\n        set => _colorPicker.SelectedColor = value;\n    }\n\n    public event EventHandler? ColorChangedContinuous;\n    public event EventHandler? ColorChangedDelayed;\n\n    public ColorPickerControl()\n    {\n        InitializeComponent();\n\n        SelectedColor = Colors.Aqua;\n    }\n\n    private void Button_Click(object sender, RoutedEventArgs e)\n    {\n        _popup.IsOpen = true;\n        e.Handled = true;\n    }\n\n    private void ColorPicker_MouseUp(object sender, MouseButtonEventArgs e)\n    {\n        e.Handled = true;\n        ColorChangedDelayed?.Invoke(this, EventArgs.Empty);\n    }\n\n    private void ColorPicker_MouseDown(object sender, MouseButtonEventArgs e)\n    {\n        e.Handled = true;\n    }\n\n    private void ColorPicker_ColorChanged(object sender, RoutedEventArgs e)\n    {\n        if (!CanHandleEvent)\n            return;\n\n        _isEditing = true;\n\n        var color = _colorPicker.SelectedColor;\n\n        _button.Background = new SolidColorBrush(color);\n\n        _redNumberBox.Text = color.R.ToString();\n        _greenNumberBox.Text = color.G.ToString();\n        _blueNumberBox.Text = color.B.ToString();\n\n        _hexTextBox.Text = $\"#{color.R:X2}{color.G:X2}{color.B:X2}\";\n\n        ColorChangedContinuous?.Invoke(this, EventArgs.Empty);\n\n        _isEditing = false;\n    }\n\n\n    private void NumberBox_TextChanged(object sender, TextChangedEventArgs e)\n    {\n        if (!CanHandleEvent)\n            return;\n\n        _isEditing = true;\n\n        var r = ToByte(_redNumberBox.Text);\n        var g = ToByte(_greenNumberBox.Text);\n        var b = ToByte(_blueNumberBox.Text);\n        var color = Color.FromRgb(r, g, b);\n\n        _button.Background = new SolidColorBrush(color);\n\n        _hexTextBox.Text = $\"#{r:X2}{g:X2}{b:X2}\";\n\n        if (Mouse.LeftButton != MouseButtonState.Pressed && Mouse.RightButton != MouseButtonState.Pressed)\n        {\n            _colorPicker.SelectedColor = color;\n\n            ColorChangedDelayed?.Invoke(this, EventArgs.Empty);\n        }\n\n        _isEditing = false;\n    }\n\n    private void HexTextBox_TextChanged(object sender, TextChangedEventArgs e)\n    {\n        if (!CanHandleEvent)\n            return;\n\n        if (!HexTextRegex().Match(_hexTextBox.Text).Success)\n            return;\n\n        _isEditing = true;\n\n        try\n        {\n            var c = ColorTranslator.FromHtml(_hexTextBox.Text);\n            var color = Color.FromRgb(c.R, c.G, c.B);\n\n            _button.Background = new SolidColorBrush(color);\n\n            _redNumberBox.Text = color.R.ToString();\n            _greenNumberBox.Text = color.G.ToString();\n            _blueNumberBox.Text = color.B.ToString();\n\n            if (Mouse.LeftButton != MouseButtonState.Pressed && Mouse.RightButton != MouseButtonState.Pressed)\n            {\n                _colorPicker.SelectedColor = color;\n\n                ColorChangedDelayed?.Invoke(this, EventArgs.Empty);\n            }\n        }\n        catch {  /* Ignored. */ }\n\n        _isEditing = false;\n    }\n\n    private void OK_Click(object sender, RoutedEventArgs e) => _popup.IsOpen = false;\n\n    private static byte ToByte(string s)\n    {\n        if (string.IsNullOrWhiteSpace(s))\n            return 0;\n\n        if (!int.TryParse(s, out var userInput))\n            return 0;\n\n        return (byte)Math.Clamp(userInput, 0, 255);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Custom/Badge.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Automation.Peers;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Custom;\n\npublic class Badge : Wpf.Ui.Controls.Badge\n{\n    protected override AutomationPeer OnCreateAutomationPeer() => new BadgeAutomationPeer(this);\n\n    private class BadgeAutomationPeer(Badge owner) : FrameworkElementAutomationPeer(owner)\n    {\n        protected override string GetClassNameCore() => nameof(Badge);\n\n        protected override AutomationControlType GetAutomationControlTypeCore() => AutomationControlType.Button;\n\n        public override object? GetPattern(PatternInterface patternInterface)\n        {\n            if (patternInterface == PatternInterface.ItemContainer)\n                return this;\n\n            return base.GetPattern(patternInterface);\n        }\n\n        protected override AutomationPeer? GetLabeledByCore()\n        {\n            if (owner.Content is UIElement element)\n                return CreatePeerForElement(element);\n\n            return base.GetLabeledByCore();\n        }\n\n        protected override string GetNameCore()\n        {\n            var result = base.GetNameCore() ?? string.Empty;\n\n            if (result == string.Empty)\n                result = AutomationProperties.GetName(owner);\n\n            if (result == string.Empty && owner.Content is DependencyObject d)\n                result = AutomationProperties.GetName(d);\n\n            if (result == string.Empty && owner.Content is string s)\n                result = s;\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Custom/CardAction.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Automation.Peers;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Custom;\n\npublic class CardAction : Wpf.Ui.Controls.CardAction\n{\n    protected override AutomationPeer OnCreateAutomationPeer() => new CardActionAutomationPeer(this);\n\n    private class CardActionAutomationPeer(CardAction owner) : FrameworkElementAutomationPeer(owner)\n    {\n        protected override string GetClassNameCore() => nameof(CardAction);\n\n        protected override AutomationControlType GetAutomationControlTypeCore() => AutomationControlType.Button;\n\n        public override object? GetPattern(PatternInterface patternInterface)\n        {\n            if (patternInterface == PatternInterface.ItemContainer)\n                return this;\n\n            return base.GetPattern(patternInterface);\n        }\n\n        protected override AutomationPeer? GetLabeledByCore()\n        {\n            if (owner.Content is UIElement element)\n                return CreatePeerForElement(element);\n\n            return base.GetLabeledByCore();\n        }\n\n        protected override string GetNameCore()\n        {\n            var result = base.GetNameCore() ?? string.Empty;\n\n            if (result == string.Empty)\n                result = AutomationProperties.GetName(owner);\n\n            if (result == string.Empty && owner.Content is DependencyObject d)\n                result = AutomationProperties.GetName(d);\n\n            if (result == string.Empty && owner.Content is string s)\n                result = s;\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Custom/CardControl.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Automation.Peers;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Custom;\n\npublic class CardControl : Wpf.Ui.Controls.CardControl\n{\n    protected override AutomationPeer OnCreateAutomationPeer() => new CardControlAutomationPeer(this);\n\n    private class CardControlAutomationPeer(CardControl owner) : FrameworkElementAutomationPeer(owner)\n    {\n        protected override string GetClassNameCore() => nameof(CardControl);\n\n        protected override AutomationControlType GetAutomationControlTypeCore() => AutomationControlType.Pane;\n\n        public override object? GetPattern(PatternInterface patternInterface)\n        {\n            if (patternInterface == PatternInterface.ItemContainer)\n                return this;\n\n            return base.GetPattern(patternInterface);\n        }\n\n        protected override AutomationPeer? GetLabeledByCore()\n        {\n            if (owner.Header is UIElement element)\n                return CreatePeerForElement(element);\n\n            return base.GetLabeledByCore();\n        }\n\n        protected override string GetNameCore()\n        {\n            var result = base.GetNameCore() ?? string.Empty;\n\n            if (result == string.Empty)\n                result = AutomationProperties.GetName(owner);\n\n            if (result == string.Empty && owner.Header is DependencyObject d)\n                result = AutomationProperties.GetName(d);\n\n            if (result == string.Empty && owner.Header is string s)\n                result = s;\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Custom/CardExpander.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Automation.Peers;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Custom;\n\npublic class CardExpander : Wpf.Ui.Controls.CardExpander\n{\n    protected override AutomationPeer OnCreateAutomationPeer() => new CardExpanderAutomationPeer(this);\n\n    private class CardExpanderAutomationPeer(CardExpander owner) : FrameworkElementAutomationPeer(owner)\n    {\n        protected override string GetClassNameCore() => nameof(CardExpander);\n\n        protected override AutomationControlType GetAutomationControlTypeCore() => AutomationControlType.Pane;\n\n        public override object? GetPattern(PatternInterface patternInterface)\n        {\n            if (patternInterface == PatternInterface.ItemContainer)\n                return this;\n\n            return base.GetPattern(patternInterface);\n        }\n\n        protected override AutomationPeer? GetLabeledByCore()\n        {\n            if (owner.Header is UIElement element)\n                return CreatePeerForElement(element);\n\n            return base.GetLabeledByCore();\n        }\n\n        protected override string GetNameCore()\n        {\n            var result = base.GetNameCore() ?? string.Empty;\n\n            if (result == string.Empty)\n                result = AutomationProperties.GetName(owner);\n\n            if (result == string.Empty && owner.Header is DependencyObject d)\n                result = AutomationProperties.GetName(d);\n\n            if (result == string.Empty && owner.Header is string s)\n                result = s;\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Custom/InfoBar.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Automation.Peers;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Custom;\n\npublic class InfoBar : Wpf.Ui.Controls.InfoBar\n{\n    protected override AutomationPeer OnCreateAutomationPeer() => new InfoBarAutomationPeer(this);\n\n    private class InfoBarAutomationPeer(InfoBar owner) : FrameworkElementAutomationPeer(owner)\n    {\n        protected override string GetClassNameCore() => nameof(InfoBar);\n\n        protected override AutomationControlType GetAutomationControlTypeCore() => AutomationControlType.Pane;\n\n        public override object? GetPattern(PatternInterface patternInterface)\n        {\n            if (patternInterface == PatternInterface.ItemContainer)\n                return this;\n\n            return base.GetPattern(patternInterface);\n        }\n\n        protected override AutomationPeer? GetLabeledByCore()\n        {\n            if (owner.Content is UIElement element)\n                return CreatePeerForElement(element);\n\n            return base.GetLabeledByCore();\n        }\n\n        protected override string GetNameCore()\n        {\n            var result = base.GetNameCore() ?? string.Empty;\n\n            if (result == string.Empty)\n                result = AutomationProperties.GetName(owner);\n\n            if (result == string.Empty)\n                result = $\"{owner.Title}, {owner.Message}\";\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Custom/NavigationItem.cs",
    "content": "﻿using System.Windows.Automation;\nusing System.Windows.Automation.Peers;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Custom;\n\npublic class NavigationItem : Wpf.Ui.Controls.NavigationItem\n{\n    protected override AutomationPeer OnCreateAutomationPeer() => new NavigationItemAutomationPeer(this);\n\n    private class NavigationItemAutomationPeer(NavigationItem owner) : FrameworkElementAutomationPeer(owner)\n    {\n        protected override string GetClassNameCore() => nameof(NavigationItem);\n\n        protected override AutomationControlType GetAutomationControlTypeCore() => AutomationControlType.Pane;\n\n        public override object? GetPattern(PatternInterface patternInterface)\n        {\n            if (patternInterface == PatternInterface.ItemContainer)\n                return this;\n\n            return base.GetPattern(patternInterface);\n        }\n\n        protected override string GetNameCore()\n        {\n            var result = base.GetNameCore() ?? string.Empty;\n\n            if (result == string.Empty)\n                result = AutomationProperties.GetName(owner);\n\n            return result;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/AlwaysOnUSBControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class AlwaysOnUSBControl : AbstractComboBoxFeatureCardControl<AlwaysOnUSBState>\n{\n    public AlwaysOnUSBControl()\n    {\n        Icon = SymbolRegular.UsbStick24;\n        Title = Resource.AlwaysOnUSBControl_Title;\n        Subtitle = Resource.AlwaysOnUSBControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/BatteryModeControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class BatteryModeControl : AbstractComboBoxFeatureCardControl<BatteryState>\n{\n    public BatteryModeControl()\n    {\n        Icon = SymbolRegular.BatteryCharge24;\n        Title = Resource.BatteryModeControl_Title;\n        Subtitle = Resource.BatteryModeControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/BatteryNightChargeModeControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class BatteryNightChargeModeControl : AbstractToggleFeatureCardControl<BatteryNightChargeState>\n{\n    protected override BatteryNightChargeState OnState => BatteryNightChargeState.On;\n    protected override BatteryNightChargeState OffState => BatteryNightChargeState.Off;\n\n    public BatteryNightChargeModeControl()\n    {\n        Icon = SymbolRegular.WeatherMoon24;\n        Title = Resource.BatteryNightChargeModeControl_Title;\n        Subtitle = Resource.BatteryNightChargeModeControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/DashboardGroupControl.cs",
    "content": "﻿using System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.WPF.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class DashboardGroupControl : UserControl\n{\n    private readonly TaskCompletionSource _initializedTaskCompletionSource = new();\n\n    private readonly DashboardGroup _dashboardGroup;\n\n    public Task InitializedTask => _initializedTaskCompletionSource.Task;\n\n    public DashboardGroupControl(DashboardGroup dashboardGroup)\n    {\n        _dashboardGroup = dashboardGroup;\n\n        Initialized += DashboardGroupControl_Initialized;\n    }\n\n    private async void DashboardGroupControl_Initialized(object? sender, System.EventArgs e)\n    {\n        var stackPanel = new StackPanel { Margin = new(0, 0, 16, 0) };\n\n        var textBlock = new TextBlock\n        {\n            Text = _dashboardGroup.GetName(),\n            Focusable = true,\n            FontSize = 24,\n            FontWeight = FontWeights.Medium,\n            Margin = new(0, 16, 0, 24)\n        };\n        AutomationProperties.SetName(textBlock, textBlock.Text);\n        stackPanel.Children.Add(textBlock);\n\n        var controlsTasks = _dashboardGroup.Items.Select(i => i.GetControlAsync());\n        var controls = await Task.WhenAll(controlsTasks);\n\n        foreach (var control in controls.SelectMany(c => c))\n        {\n            stackPanel.Children.Add(control);\n        }\n\n        Content = stackPanel;\n\n        _initializedTaskCompletionSource.TrySetResult();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/DiscreteGPUControl.xaml",
    "content": "﻿<controls:AbstractRefreshingControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.Dashboard.DiscreteGPUControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\">\n    <custom:CardControl Margin=\"0,0,0,8\" Icon=\"DeveloperBoard24\">\n        <custom:CardControl.Header>\n            <controls:CardHeaderControl Title=\"{x:Static resources:Resource.DiscreteGPUControl_Title}\" Subtitle=\"{x:Static resources:Resource.DiscreteGPUControl_Message}\" />\n        </custom:CardControl.Header>\n        <StackPanel\n            x:Name=\"_content\"\n            Orientation=\"Vertical\"\n            Visibility=\"Hidden\">\n            <Grid HorizontalAlignment=\"Right\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"*\" />\n                </Grid.ColumnDefinitions>\n\n                <Ellipse\n                    x:Name=\"_discreteGPUStatusActiveIndicator\"\n                    Grid.Column=\"0\"\n                    Width=\"12\"\n                    Height=\"12\"\n                    Fill=\"#FF8BC34A\"\n                    Visibility=\"Collapsed\" />\n                <Ellipse\n                    x:Name=\"_discreteGPUStatusInactiveIndicator\"\n                    Grid.Column=\"0\"\n                    Width=\"12\"\n                    Height=\"12\"\n                    Fill=\"#F2A541\"\n                    Visibility=\"Collapsed\" />\n                <Ellipse\n                    x:Name=\"_discreteGPUStatusPoweredOffIndicator\"\n                    Grid.Column=\"0\"\n                    Width=\"12\"\n                    Height=\"12\"\n                    Fill=\"#BF360C\"\n                    Visibility=\"Collapsed\" />\n                <TextBlock\n                    x:Name=\"_discreteGPUStatusDescription\"\n                    Grid.Column=\"1\"\n                    Margin=\"8,0,0,0\"\n                    VerticalAlignment=\"Center\"\n                    AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.DiscreteGPUControl_Title}\"\n                    Focusable=\"True\"\n                    FontWeight=\"Medium\" />\n                <wpfui:Button\n                    x:Name=\"_gpuInfoButton\"\n                    Grid.Column=\"2\"\n                    Margin=\"8,0,0,0\"\n                    AutomationProperties.HelpText=\"{x:Static resources:Resource.Information}\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.DiscreteGPUControl_Title}\"\n                    ClickMode=\"Hover\"\n                    FontSize=\"20\"\n                    Icon=\"QuestionCircle24\"\n                    ToolTipService.InitialShowDelay=\"0\" />\n            </Grid>\n            <wpfui:Button\n                x:Name=\"_deactivateGPUButton\"\n                MinWidth=\"150\"\n                Margin=\"0,8,0,0\"\n                Appearance=\"Primary\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.DiscreteGPUControl_Deactivate}\"\n                Click=\"DeactivateGPUButton_Click\"\n                IsEnabled=\"False\"\n                ToolTipService.InitialShowDelay=\"0\"\n                ToolTipService.ShowOnDisabled=\"True\">\n                <wpfui:Button.Content>\n                    <Grid>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                        </Grid.ColumnDefinitions>\n                        <TextBlock\n                            x:Name=\"_deactivateGPUButtonText\"\n                            Grid.Column=\"1\"\n                            Margin=\"8,0,8,2\"\n                            FontWeight=\"Medium\"\n                            Text=\"{x:Static resources:Resource.DiscreteGPUControl_Deactivate}\" />\n                        <wpfui:SymbolIcon\n                            x:Name=\"_deactivateGPUButtonIcon\"\n                            Grid.Column=\"0\"\n                            FontWeight=\"Bold\"\n                            Symbol=\"ChevronDown24\" />\n                    </Grid>\n                </wpfui:Button.Content>\n                <wpfui:Button.ContextMenu>\n                    <ContextMenu MinWidth=\"150\">\n                        <ContextMenu.Items>\n                            <wpfui:MenuItem\n                                x:Name=\"_killAppsMenuItem\"\n                                Click=\"KillAppsMenuItem_Click\"\n                                Header=\"{x:Static resources:Resource.DiscreteGPUControl_KillApps}\" />\n                            <wpfui:MenuItem\n                                x:Name=\"_restartGPUMenuItem\"\n                                Click=\"RestartGPUMenuItem_Click\"\n                                Header=\"{x:Static resources:Resource.DiscreteGPUControl_RestartGPU}\" />\n                        </ContextMenu.Items>\n                    </ContextMenu>\n                </wpfui:Button.ContextMenu>\n            </wpfui:Button>\n        </StackPanel>\n    </custom:CardControl>\n</controls:AbstractRefreshingControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/DiscreteGPUControl.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls.Primitives;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic partial class DiscreteGPUControl\n{\n    private readonly GPUController _gpuController = IoCContainer.Resolve<GPUController>();\n    private readonly NativeWindowsMessageListener _nativeWindowsMessageListener = IoCContainer.Resolve<NativeWindowsMessageListener>();\n\n    public DiscreteGPUControl()\n    {\n        InitializeComponent();\n\n        _gpuController.Refreshed += GpuController_Refreshed;\n        _nativeWindowsMessageListener.Changed += NativeWindowsMessageListener_Changed;\n\n        IsVisibleChanged += DiscreteGPUControl_IsVisibleChanged;\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    protected override async Task OnRefreshAsync()\n    {\n        if (!_gpuController.IsSupported())\n            throw new InvalidOperationException(\"Unsupported operation\");\n\n        if (!IsVisible)\n            return;\n\n        await _gpuController.StartAsync();\n    }\n\n    private async void NativeWindowsMessageListener_Changed(object? sender, NativeWindowsMessageListener.ChangedEventArgs e)\n    {\n        if (e.Message != NativeWindowsMessage.OnDisplayDeviceArrival)\n            return;\n\n        Visibility = Visibility.Visible;\n        await RefreshAsync();\n    }\n\n    private async void DiscreteGPUControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            return;\n\n        _content.Visibility = Visibility.Hidden;\n\n        await _gpuController.StopAsync();\n    }\n\n    private void GpuController_Refreshed(object? sender, GPUStatus e) => Dispatcher.Invoke(() =>\n    {\n        var tooltipStringBuilder = new StringBuilder(Resource.DiscreteGPUControl_PerformanceState);\n        tooltipStringBuilder.AppendLine().Append(\" · \").Append(e.PerformanceState ?? Resource.DiscreteGPUControl_PerformanceState_Unknown);\n\n        if (e.State is GPUState.Unknown or GPUState.NvidiaGpuNotFound)\n        {\n            _discreteGPUStatusActiveIndicator.Visibility = Visibility.Collapsed;\n            _discreteGPUStatusInactiveIndicator.Visibility = Visibility.Collapsed;\n            _discreteGPUStatusDescription.Text = \"-\";\n            _gpuInfoButton.ToolTip = null;\n            _gpuInfoButton.IsEnabled = false;\n            Visibility = Visibility.Collapsed;\n            return;\n        }\n\n        if (e.State is GPUState.MonitorConnected)\n            tooltipStringBuilder.AppendLine().AppendLine().Append(Resource.DiscreteGPUControl_MonitorConnected);\n\n        if (e.State is GPUState.Active or GPUState.MonitorConnected)\n        {\n            var processesStringBuilder = new StringBuilder();\n\n            if (e.ProcessCount > 0)\n            {\n                processesStringBuilder.Append(Resource.DiscreteGPUControl_Processes);\n                foreach (var p in e.Processes.OrderBy(p => p.ProcessName))\n                {\n                    try { processesStringBuilder.AppendLine().Append(\" · \").Append(p.ProcessName); }\n                    catch {  /* Ignored. */ }\n                }\n            }\n            else\n            {\n                processesStringBuilder.Append(Resource.DiscreteGPUControl_NoProcesses);\n            }\n\n            _discreteGPUStatusActiveIndicator.Visibility = Visibility.Visible;\n            _discreteGPUStatusInactiveIndicator.Visibility = Visibility.Collapsed;\n            _discreteGPUStatusPoweredOffIndicator.Visibility = Visibility.Collapsed;\n            _discreteGPUStatusDescription.Text = Resource.Active;\n            _gpuInfoButton.ToolTip = tooltipStringBuilder.AppendLine().AppendLine().Append(processesStringBuilder).ToString();\n            _gpuInfoButton.IsEnabled = true;\n        }\n        else if (e.State is GPUState.PoweredOff)\n        {\n            _discreteGPUStatusActiveIndicator.Visibility = Visibility.Collapsed;\n            _discreteGPUStatusInactiveIndicator.Visibility = Visibility.Collapsed;\n            _discreteGPUStatusPoweredOffIndicator.Visibility = Visibility.Visible;\n            _discreteGPUStatusDescription.Text = Resource.PoweredOff;\n            _gpuInfoButton.ToolTip = tooltipStringBuilder.ToString();\n            _gpuInfoButton.IsEnabled = true;\n        }\n        else\n        {\n            _discreteGPUStatusActiveIndicator.Visibility = Visibility.Collapsed;\n            _discreteGPUStatusInactiveIndicator.Visibility = Visibility.Visible;\n            _discreteGPUStatusPoweredOffIndicator.Visibility = Visibility.Collapsed;\n            _discreteGPUStatusDescription.Text = Resource.Inactive;\n            _gpuInfoButton.ToolTip = tooltipStringBuilder.ToString();\n            _gpuInfoButton.IsEnabled = true;\n        }\n\n        _deactivateGPUButton.IsEnabled = e.State is GPUState.Active or GPUState.Inactive;\n        _killAppsMenuItem.IsEnabled = e.State is GPUState.Active;\n        _restartGPUMenuItem.IsEnabled = e.State is GPUState.Active or GPUState.Inactive;\n\n        if (e.State is GPUState.Active or GPUState.Inactive)\n        {\n            _deactivateGPUButtonText.SetResourceReference(ForegroundProperty, \"TextOnAccentFillColorPrimaryBrush\");\n            _deactivateGPUButtonIcon.SetResourceReference(ForegroundProperty, \"TextOnAccentFillColorPrimaryBrush\");\n        }\n        else\n        {\n            _deactivateGPUButtonText.SetResourceReference(ForegroundProperty, \"TextFillColorDisabledBrush\");\n            _deactivateGPUButtonIcon.SetResourceReference(ForegroundProperty, \"TextFillColorDisabledBrush\");\n        }\n\n        _content.Visibility = Visibility.Visible;\n    });\n\n    private void DeactivateGPUButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (_deactivateGPUButton.ContextMenu is null)\n            return;\n\n        _deactivateGPUButton.ContextMenu.PlacementTarget = _deactivateGPUButton;\n        _deactivateGPUButton.ContextMenu.Placement = PlacementMode.Bottom;\n        _deactivateGPUButton.ContextMenu.IsOpen = true;\n    }\n\n    private async void KillAppsMenuItem_Click(object sender, RoutedEventArgs e)\n    {\n        _deactivateGPUButton.IsEnabled = false;\n        await _gpuController.KillGPUProcessesAsync();\n    }\n\n    private async void RestartGPUMenuItem_Click(object sender, RoutedEventArgs e)\n    {\n        _deactivateGPUButton.IsEnabled = false;\n        await _gpuController.RestartGPUAsync();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/DpiScaleControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Wpf.Ui.Common;\nusing DpiScale = LenovoLegionToolkit.Lib.DpiScale;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class DpiScaleControl : AbstractComboBoxFeatureCardControl<DpiScale>\n{\n    private readonly DisplayConfigurationListener _listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n\n    public DpiScaleControl()\n    {\n        Icon = SymbolRegular.TextFontSize24;\n        Title = Resource.DpiScaleControl_Title;\n        Subtitle = Resource.DpiScaleControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    protected override async Task OnRefreshAsync()\n    {\n        await base.OnRefreshAsync();\n\n        Visibility = ItemsCount < 2 ? Visibility.Collapsed : Visibility.Visible;\n    }\n\n    protected override string ComboBoxItemDisplayName(DpiScale value)\n    {\n        var str = base.ComboBoxItemDisplayName(value);\n        return LocalizationHelper.ForceLeftToRight(str);\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (IsLoaded)\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/Edit/EditDashboardGroupControl.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing LenovoLegionToolkit.WPF.Windows.Dashboard;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\nusing CardExpander = LenovoLegionToolkit.WPF.Controls.Custom.CardExpander;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard.Edit;\n\npublic class EditDashboardGroupControl : UserControl\n{\n    private readonly CardExpander _cardExpander = new()\n    {\n        Margin = new(0, 0, 0, 8)\n    };\n\n    private readonly CardHeaderControl _cardHeaderControl = new();\n\n    private readonly StackPanel _stackPanel = new();\n\n    private readonly StackPanel _itemsStackPanel = new();\n\n    private readonly StackPanel _buttonsStackPanel = new()\n    {\n        Margin = new(0, 0, 16, 0),\n        Orientation = Orientation.Horizontal\n    };\n\n    private readonly Button _editButton = new()\n    {\n        Icon = SymbolRegular.Edit24,\n        ToolTip = Resource.Edit,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0),\n    };\n\n    private readonly Button _moveUpButton = new()\n    {\n        Icon = SymbolRegular.ArrowUp24,\n        ToolTip = Resource.MoveUp,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0),\n    };\n\n    private readonly Button _moveDownButton = new()\n    {\n        Icon = SymbolRegular.ArrowDown24,\n        ToolTip = Resource.MoveDown,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0),\n    };\n\n    private readonly Button _deleteButton = new()\n    {\n        Icon = SymbolRegular.Dismiss24,\n        ToolTip = Resource.Delete,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0),\n    };\n\n    private readonly Button _addItemButton = new()\n    {\n        MinWidth = 120,\n        HorizontalAlignment = HorizontalAlignment.Right,\n        Appearance = ControlAppearance.Primary,\n        Content = Resource.Add,\n        Margin = new(0, 8, 0, 0),\n    };\n\n    public event EventHandler? MoveUp;\n    public event EventHandler? MoveDown;\n    public event EventHandler? Delete;\n    public event EventHandler? Changed;\n\n    private DashboardGroupType _dashboardGroupType;\n    private readonly Func<IEnumerable<DashboardItem>> _getExistingItems;\n\n    public EditDashboardGroupControl(DashboardGroup dashboardGroup, Func<IEnumerable<DashboardItem>> getExistingItems)\n    {\n        _dashboardGroupType = dashboardGroup.Type;\n\n        _getExistingItems = getExistingItems;\n\n        _editButton.Click += async (_, _) => await EditNameAsync();\n        _moveUpButton.Click += (_, _) => MoveUp?.Invoke(this, EventArgs.Empty);\n        _moveDownButton.Click += (_, _) => MoveDown?.Invoke(this, EventArgs.Empty);\n        _deleteButton.Click += (_, _) => Delete?.Invoke(this, EventArgs.Empty);\n        _addItemButton.Click += (_, _) => ShowAddItemWindow();\n\n        _buttonsStackPanel.Children.Add(_editButton);\n        _buttonsStackPanel.Children.Add(_moveUpButton);\n        _buttonsStackPanel.Children.Add(_moveDownButton);\n        _buttonsStackPanel.Children.Add(_deleteButton);\n\n        foreach (var item in dashboardGroup.Items)\n            _itemsStackPanel.Children.Add(CreateGroupControl(item));\n\n        _stackPanel.Children.Add(_itemsStackPanel);\n        _stackPanel.Children.Add(_addItemButton);\n\n        _cardHeaderControl.Title = dashboardGroup.GetName();\n        _cardHeaderControl.Accessory = _buttonsStackPanel;\n        _cardExpander.Header = _cardHeaderControl;\n        _cardExpander.Content = _stackPanel;\n\n        AutomationProperties.SetName(_cardExpander, _cardHeaderControl.Title);\n        AutomationProperties.SetName(_editButton, _cardHeaderControl.Title);\n        AutomationProperties.SetName(_moveUpButton, _cardHeaderControl.Title);\n        AutomationProperties.SetName(_moveDownButton, _cardHeaderControl.Title);\n        AutomationProperties.SetName(_deleteButton, _cardHeaderControl.Title);\n\n        Content = _cardExpander;\n    }\n\n    public DashboardGroup GetDashboardGroup()\n    {\n        var items = _itemsStackPanel.Children\n            .OfType<EditDashboardItemControl>()\n            .Select(c => c.DashboardItem)\n            .ToArray();\n        return new(_dashboardGroupType, _cardHeaderControl.Title, items);\n    }\n\n    public IEnumerable<DashboardItem> GetItems() =>\n        _itemsStackPanel.Children\n            .OfType<EditDashboardItemControl>()\n            .Select(c => c.DashboardItem);\n\n    private async Task EditNameAsync()\n    {\n        var text = _dashboardGroupType == DashboardGroupType.Custom ? _cardHeaderControl.Title : null;\n\n        var result = await MessageBoxHelper.ShowInputAsync(this,\n            Resource.EditDashboardGroupControl_EditGroup_Title,\n            Resource.EditDashboardGroupControl_EditGroup_Message,\n            text,\n            primaryButton: Resource.OK,\n            secondaryButton: Resource.Cancel);\n\n        if (string.IsNullOrEmpty(result))\n            return;\n\n        _dashboardGroupType = DashboardGroupType.Custom;\n        _cardHeaderControl.Title = result;\n    }\n\n    private void ShowAddItemWindow()\n    {\n        var window = new AddDashboardItemWindow(_getExistingItems, AddItem) { Owner = Window.GetWindow(this) };\n        window.ShowDialog();\n    }\n\n    private void AddItem(DashboardItem dashboardItem)\n    {\n        _itemsStackPanel.Children.Add(CreateGroupControl(dashboardItem));\n        Changed?.Invoke(this, EventArgs.Empty);\n    }\n\n    private EditDashboardItemControl CreateGroupControl(DashboardItem dashboardItem)\n    {\n        var control = new EditDashboardItemControl(dashboardItem);\n        control.MoveUp += (_, _) => MoveItemUp(control);\n        control.MoveDown += (_, _) => MoveItemDown(control);\n        control.Delete += (_, _) => DeleteItem(control);\n        return control;\n    }\n\n    private void MoveItemUp(UIElement control)\n    {\n        var index = _itemsStackPanel.Children.IndexOf(control);\n        index--;\n\n        if (index < 0)\n            return;\n\n        _itemsStackPanel.Children.Remove(control);\n        _itemsStackPanel.Children.Insert(index, control);\n        Changed?.Invoke(this, EventArgs.Empty);\n    }\n\n    private void MoveItemDown(UIElement control)\n    {\n        var index = _itemsStackPanel.Children.IndexOf(control);\n        index++;\n\n        if (index >= _itemsStackPanel.Children.Count)\n            return;\n\n        _itemsStackPanel.Children.Remove(control);\n        _itemsStackPanel.Children.Insert(index, control);\n        Changed?.Invoke(this, EventArgs.Empty);\n    }\n\n    private void DeleteItem(UIElement control)\n    {\n        _itemsStackPanel.Children.Remove(control);\n        Changed?.Invoke(this, EventArgs.Empty);\n    }\n\n    public void RefreshAdd() => _addItemButton.IsEnabled = Enum.GetValues<DashboardItem>().Except(_getExistingItems()).Any();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/Edit/EditDashboardItemControl.cs",
    "content": "﻿using System;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\nusing CardControl = LenovoLegionToolkit.WPF.Controls.Custom.CardControl;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard.Edit;\n\npublic class EditDashboardItemControl : UserControl\n{\n    public DashboardItem DashboardItem { get; }\n\n    private readonly CardControl _cardControl = new()\n    {\n        Margin = new(0, 0, 0, 8)\n    };\n\n    private readonly CardHeaderControl _cardHeaderControl = new();\n\n    private readonly StackPanel _stackPanel = new()\n    {\n        Orientation = Orientation.Horizontal,\n    };\n\n    private readonly Button _moveUpButton = new()\n    {\n        Icon = SymbolRegular.ArrowUp24,\n        ToolTip = Resource.MoveUp,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0),\n    };\n\n    private readonly Button _moveDownButton = new()\n    {\n        Icon = SymbolRegular.ArrowDown24,\n        ToolTip = Resource.MoveDown,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0),\n    };\n\n    private readonly Button _deleteButton = new()\n    {\n        Icon = SymbolRegular.Dismiss24,\n        ToolTip = Resource.Delete,\n        MinWidth = 34,\n        Height = 34,\n        Margin = new(8, 0, 0, 0),\n    };\n\n    public event EventHandler? MoveUp;\n    public event EventHandler? MoveDown;\n    public event EventHandler? Delete;\n\n    public EditDashboardItemControl(DashboardItem dashboardItem)\n    {\n        DashboardItem = dashboardItem;\n\n        _moveUpButton.Click += (_, _) => MoveUp?.Invoke(this, EventArgs.Empty);\n        _moveDownButton.Click += (_, _) => MoveDown?.Invoke(this, EventArgs.Empty);\n        _deleteButton.Click += (_, _) => Delete?.Invoke(this, EventArgs.Empty);\n\n        _stackPanel.Children.Add(_moveUpButton);\n        _stackPanel.Children.Add(_moveDownButton);\n        _stackPanel.Children.Add(_deleteButton);\n\n        _cardHeaderControl.Title = DashboardItem.GetTitle();\n        _cardHeaderControl.Accessory = _stackPanel;\n        _cardControl.Icon = DashboardItem.GetIcon();\n        _cardControl.Header = _cardHeaderControl;\n\n        AutomationProperties.SetName(_moveUpButton, _cardHeaderControl.Title);\n        AutomationProperties.SetName(_moveDownButton, _cardHeaderControl.Title);\n        AutomationProperties.SetName(_deleteButton, _cardHeaderControl.Title);\n\n        Content = _cardControl;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/FlipToStartControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class FlipToStartControl : AbstractToggleFeatureCardControl<FlipToStartState>\n{\n    protected override FlipToStartState OnState => FlipToStartState.On;\n\n    protected override FlipToStartState OffState => FlipToStartState.Off;\n\n    public FlipToStartControl()\n    {\n        Icon = SymbolRegular.Power24;\n        Title = Resource.FlipToStartControl_Title;\n        Subtitle = Resource.FlipToStartControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/FnLockControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class FnLockControl : AbstractToggleFeatureCardControl<FnLockState>\n{\n    private readonly SpecialKeyListener _listener = IoCContainer.Resolve<SpecialKeyListener>();\n\n    protected override FnLockState OnState => FnLockState.On;\n\n    protected override FnLockState OffState => FnLockState.Off;\n\n    public FnLockControl()\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.FnLockControl_Title;\n        Subtitle = Resource.FnLockControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    private void Listener_Changed(object? sender, SpecialKeyListener.ChangedEventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (!IsLoaded || !IsVisible)\n            return;\n\n        if (e.SpecialKey is SpecialKey.FnLockOn or SpecialKey.FnLockOff)\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/GodMode/GodModeValueControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.Dashboard.GodMode.GodModeValueControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    mc:Ignorable=\"d\">\n\n    <custom:CardControl>\n        <custom:CardControl.Header>\n            <controls:CardHeaderControl x:Name=\"_cardControlHeader\" />\n        </custom:CardControl.Header>\n        <Grid Width=\"350\" Margin=\"16,0,0,0\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <Slider\n                x:Name=\"_slider\"\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                IsSnapToTickEnabled=\"True\" />\n            <Label\n                x:Name=\"_sliderLabel\"\n                Grid.Column=\"1\"\n                Width=\"50\"\n                Margin=\"8,0,0,0\"\n                HorizontalContentAlignment=\"Right\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{Binding ElementName=_slider, Path=Value}\"\n                ContentStringFormat=\"{}{0} W\"\n                FlowDirection=\"LeftToRight\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            <ComboBox\n                x:Name=\"_comboBox\"\n                Grid.Column=\"2\"\n                MinWidth=\"100\" />\n            <wpfui:Button\n                x:Name=\"_resetToDefaultButton\"\n                Grid.Column=\"3\"\n                Width=\"36\"\n                Height=\"36\"\n                Margin=\"16,0,0,0\"\n                Click=\"ResetToDefaultButton_OnClick\"\n                Icon=\"ArrowClockwise24\"\n                ToolTip=\"{x:Static resources:Resource.Default}\" />\n        </Grid>\n    </custom:CardControl>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/GodMode/GodModeValueControl.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Automation;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.WPF.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard.GodMode;\n\npublic partial class GodModeValueControl\n{\n    private int? _defaultValue;\n\n    public string Title\n    {\n        get => _cardControlHeader.Title;\n        set\n        {\n            _cardControlHeader.Title = value;\n\n            AutomationProperties.SetName(_slider, _cardControlHeader.Title);\n            AutomationProperties.SetName(_comboBox, _cardControlHeader.Title);\n            AutomationProperties.SetName(_resetToDefaultButton, _cardControlHeader.Title);\n        }\n    }\n\n    public string Description\n    {\n        get => _cardControlHeader.Subtitle;\n        set => _cardControlHeader.Subtitle = value;\n    }\n\n    public string Unit { get; set; } = string.Empty;\n\n    public int Value\n    {\n        get\n        {\n            if (_slider.Visibility == Visibility.Visible)\n                return (int)_slider.Value;\n\n            if (_comboBox.Visibility == Visibility.Visible && _comboBox.TryGetSelectedItem(out int value))\n                return value;\n\n            throw new InvalidOperationException(\"Unable to get Value\");\n        }\n        set\n        {\n            if (_slider.Visibility == Visibility.Visible)\n            {\n                double newValue = value;\n\n                if (_defaultValue.HasValue && (newValue < _slider.Minimum || newValue > _slider.Maximum))\n                    newValue = _defaultValue.Value;\n\n                newValue = Math.Clamp(MathExtensions.RoundNearest((int)newValue, (int)_slider.TickFrequency), _slider.Minimum, _slider.Maximum);\n                _slider.Value = newValue;\n                return;\n            }\n\n            if (_comboBox.Visibility == Visibility.Visible)\n            {\n                var newValue = value;\n                var items = _comboBox.GetItems<int>().ToArray();\n                if (!items.Contains(newValue))\n                {\n                    var valueTemp = newValue;\n                    newValue = items.MinBy(v => Math.Abs((long)v - valueTemp));\n                }\n\n                _comboBox.SelectItem(newValue);\n                return;\n            }\n\n            throw new InvalidOperationException(\"Unable to set Value\");\n        }\n    }\n\n    public event RoutedPropertyChangedEventHandler<double> ValueChanged\n    {\n        add => _slider.ValueChanged += value;\n        remove => _slider.ValueChanged -= value;\n    }\n\n    public GodModeValueControl()\n    {\n        InitializeComponent();\n    }\n\n    public void Set(StepperValue? stepperValue)\n    {\n        if (!stepperValue.HasValue)\n        {\n            Visibility = Visibility.Collapsed;\n            return;\n        }\n\n        var value = stepperValue.Value;\n\n        if (value.Steps.Length > 0)\n        {\n            _slider.Visibility = Visibility.Collapsed;\n            _sliderLabel.Visibility = Visibility.Collapsed;\n            _comboBox.Visibility = Visibility.Visible;\n\n            _slider.Minimum = 0;\n            _slider.Maximum = 0;\n            _slider.TickFrequency = 0;\n            _slider.Value = 0;\n\n            _sliderLabel.ContentStringFormat = null;\n\n            _comboBox.SetItems(value.Steps, value.Value, v => $\"{v} {Unit}\");\n\n            _defaultValue = value.DefaultValue;\n            _resetToDefaultButton.Visibility = _defaultValue.HasValue ? Visibility.Visible : Visibility.Collapsed;\n\n            Visibility = Visibility.Visible;\n            return;\n        }\n\n        if (value.Step > 0)\n        {\n            _slider.Visibility = Visibility.Visible;\n            _sliderLabel.Visibility = Visibility.Visible;\n            _comboBox.Visibility = Visibility.Collapsed;\n\n            _slider.Minimum = value.Min;\n            _slider.Maximum = value.Max;\n            _slider.TickFrequency = value.Step;\n            _slider.Value = value.Value;\n\n            _sliderLabel.ContentStringFormat = $\"{0} {Unit}\";\n\n            _comboBox.Items.Clear();\n            _comboBox.SelectedItem = null;\n\n            _defaultValue = value.DefaultValue;\n            _resetToDefaultButton.Visibility = _defaultValue.HasValue ? Visibility.Visible : Visibility.Collapsed;\n\n            Visibility = Visibility.Visible;\n            return;\n        }\n\n        Visibility = Visibility.Collapsed;\n    }\n\n    private void ResetToDefaultButton_OnClick(object sender, RoutedEventArgs e)\n    {\n        if (!_defaultValue.HasValue)\n            return;\n\n        if (_slider.Visibility == Visibility.Visible)\n            _slider.Value = _defaultValue.Value;\n\n        if (_comboBox.Visibility == Visibility.Visible)\n            _comboBox.SelectItem(_defaultValue.Value);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/HDRControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class HDRControl : AbstractToggleFeatureCardControl<HDRState>\n{\n    private readonly DisplayConfigurationListener _listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n\n    protected override HDRState OnState => HDRState.On;\n\n    protected override HDRState OffState => HDRState.Off;\n\n    public HDRControl()\n    {\n        Icon = SymbolRegular.Hdr24;\n        Title = Resource.HDRControl_Title;\n        Subtitle = Resource.HDRControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    protected override async Task OnRefreshAsync()\n    {\n        await base.OnRefreshAsync();\n\n        try\n        {\n            var isHdrBlocked = await ((HDRFeature)Feature).IsHdrBlockedAsync();\n\n            IsToggleEnabled = !isHdrBlocked;\n            Warning = isHdrBlocked ? Resource.HDRControl_Warning : string.Empty;\n        }\n        catch\n        {\n            IsToggleEnabled = true;\n            Warning = string.Empty;\n        }\n\n        Visibility = Visibility.Visible;\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (IsLoaded)\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/HybridModeControlFactory.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Features.Hybrid;\nusing LenovoLegionToolkit.Lib.Features.Hybrid.Notify;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing LenovoLegionToolkit.WPF.Windows.Dashboard;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing Button = Wpf.Ui.Controls.Button;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic static class HybridModeControlFactory\n{\n    public static async Task<AbstractRefreshingControl> GetControlAsync()\n    {\n        var mi = await Compatibility.GetMachineInformationAsync();\n        return mi.Properties.SupportsIGPUMode\n            ? new ComboBoxHybridModeControl()\n            : new ToggleHybridModeControl();\n    }\n\n    private class ComboBoxHybridModeControl : AbstractComboBoxFeatureCardControl<HybridModeState>\n    {\n        private readonly DGPUNotify _dgpuNotify = IoCContainer.Resolve<DGPUNotify>();\n\n        private readonly Button _infoButton = new()\n        {\n            Icon = SymbolRegular.Info24,\n            FontSize = 20,\n            Margin = new(8, 0, 0, 0),\n        };\n\n        public ComboBoxHybridModeControl()\n        {\n            Icon = SymbolRegular.LeafOne24;\n            Title = Resource.ComboBoxHybridModeControl_Title;\n            Subtitle = Resource.ComboBoxHybridModeControl_Message;\n\n            AutomationProperties.SetName(_infoButton, Resource.ComboBoxHybridModeControl_Title);\n            AutomationProperties.SetHelpText(_infoButton, Resource.Information);\n\n            _dgpuNotify.Notified += DGPUNotify_Notified;\n        }\n\n        protected override FrameworkElement GetAccessory(ComboBox comboBox)\n        {\n            comboBox.MinWidth = 150;\n\n            _infoButton.Click += InfoButton_Click;\n\n            var stackPanel = new StackPanel\n            {\n                Orientation = Orientation.Horizontal,\n            };\n            stackPanel.Children.Add(comboBox);\n            stackPanel.Children.Add(_infoButton);\n\n            return stackPanel;\n        }\n\n        protected override async Task OnStateChangeAsync(ComboBox comboBox, IFeature<HybridModeState> feature, HybridModeState? newValue, HybridModeState? oldValue)\n        {\n            if (newValue is null || oldValue is null)\n                return;\n\n            var reboot = (newValue == HybridModeState.Off || oldValue == HybridModeState.Off) && await MessageBoxHelper.ShowAsync(this,\n                    Resource.ComboBoxHybridModeControl_RestartRequired_Title,\n                    string.Format(Resource.ComboBoxHybridModeControl_RestartRequired_Message, newValue.GetDisplayName()),\n                    Resource.RestartNow,\n                    Resource.RestartLater);\n\n            await base.OnStateChangeAsync(comboBox, feature, newValue, oldValue);\n\n            if (reboot)\n            {\n                await Power.RestartAsync();\n                return;\n            }\n\n            await RefreshAsync();\n        }\n\n        protected override void OnStateChangeException(Exception exception)\n        {\n            if (exception is IGPUModeChangeException ex1)\n            {\n                var (title, message) = ex1.IGPUMode switch\n                {\n                    IGPUModeState.IGPUOnly => (Resource.IGPUModeChangeException_Title_IGPUOnly, Resource.IGPUModeChangeException_Message_IGPUOnly),\n                    IGPUModeState.Auto => (Resource.IGPUModeChangeException_Title_Auto, Resource.IGPUModeChangeException_Message_Auto),\n                    _ => (Resource.IGPUModeChangeException_Title, Resource.IGPUModeChangeException_Message)\n                };\n\n                SnackbarHelper.Show(title, message, SnackbarType.Info);\n            }\n        }\n\n        protected override TimeSpan AdditionalStateChangeDelay(HybridModeState? oldValue, HybridModeState? newValue)\n        {\n            if (oldValue == HybridModeState.Off || newValue == HybridModeState.Off)\n                return TimeSpan.Zero;\n\n            return TimeSpan.FromSeconds(5);\n        }\n\n        private void DGPUNotify_Notified(object? sender, bool e) => Dispatcher.Invoke(() =>\n        {\n            SnackbarHelper.Show(e ? Resource.DGPU_Connected_Title : Resource.DGPU_Disconnected_Title, type: SnackbarType.Info);\n        });\n\n        private async void InfoButton_Click(object sender, RoutedEventArgs e)\n        {\n            var states = await Feature.GetAllStatesAsync();\n            var window = new ExtendedHybridModeInfoWindow(states) { Owner = Window.GetWindow(this) };\n            window.ShowDialog();\n        }\n    }\n\n    private class ToggleHybridModeControl : AbstractToggleFeatureCardControl<HybridModeState>\n    {\n        protected override HybridModeState OnState => HybridModeState.On;\n\n        protected override HybridModeState OffState => HybridModeState.Off;\n\n        public ToggleHybridModeControl()\n        {\n            Icon = SymbolRegular.LeafOne24;\n            Title = Resource.ToggleHybridModeControl_Title;\n            Subtitle = Resource.ToggleHybridModeControl_Message;\n        }\n\n        protected override async Task OnStateChange(ToggleSwitch toggle, IFeature<HybridModeState> feature)\n        {\n            await base.OnStateChange(toggle, feature);\n\n            var result = await MessageBoxHelper.ShowAsync(\n                this,\n                Resource.ToggleHybridModeControl_RestartRequired_Title,\n                Resource.ToggleHybridModeControl_RestartRequired_Message,\n                Resource.RestartNow,\n                Resource.RestartLater);\n\n            if (result)\n                await Power.RestartAsync();\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/InstantBootControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class InstantBootControl : AbstractComboBoxFeatureCardControl<InstantBootState>\n{\n    public InstantBootControl()\n    {\n        Icon = SymbolRegular.PlugDisconnected24;\n        Title = Resource.InstantBootControl_Title;\n        Subtitle = Resource.InstantBootControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/MicrophoneControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class MicrophoneControl : AbstractToggleFeatureCardControl<MicrophoneState>\n{\n    private readonly DriverKeyListener _listener = IoCContainer.Resolve<DriverKeyListener>();\n\n    protected override MicrophoneState OnState => MicrophoneState.On;\n    protected override MicrophoneState OffState => MicrophoneState.Off;\n\n    public MicrophoneControl()\n    {\n        Icon = SymbolRegular.Mic24;\n        Title = Resource.MicrophoneControl_Title;\n        Subtitle = Resource.MicrophoneControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    private void Listener_Changed(object? sender, DriverKeyListener.ChangedEventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (!IsLoaded || !IsVisible)\n            return;\n\n        if (e.DriverKey.HasFlag(DriverKey.FnF4))\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/OneLevelWhiteKeyboardBacklightControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\ninternal class OneLevelWhiteKeyboardBacklightControl : AbstractToggleFeatureCardControl<OneLevelWhiteKeyboardBacklightState>\n{\n    protected override OneLevelWhiteKeyboardBacklightState OnState => OneLevelWhiteKeyboardBacklightState.On;\n\n    protected override OneLevelWhiteKeyboardBacklightState OffState => OneLevelWhiteKeyboardBacklightState.Off;\n\n    public OneLevelWhiteKeyboardBacklightControl()\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.OneLevelWhiteKeyboardBacklightControl_Title;\n        Subtitle = Resource.OneLevelWhiteKeyboardBacklightControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/OverDriveControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class OverDriveControl : AbstractToggleFeatureCardControl<OverDriveState>\n{\n    protected override OverDriveState OnState => OverDriveState.On;\n\n    protected override OverDriveState OffState => OverDriveState.Off;\n\n    public OverDriveControl()\n    {\n        Icon = SymbolRegular.TopSpeed24;\n        Title = Resource.OverDriveControl_Title;\n        Subtitle = Resource.OverDriveControl_Message;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/OverclockDiscreteGPUControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Windows.Dashboard;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing Button = Wpf.Ui.Controls.Button;\nusing CardControl = LenovoLegionToolkit.WPF.Controls.Custom.CardControl;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class OverclockDiscreteGPUControl : AbstractRefreshingControl\n{\n    private readonly GPUOverclockController _controller = IoCContainer.Resolve<GPUOverclockController>();\n    private readonly NativeWindowsMessageListener _nativeWindowsMessageListener = IoCContainer.Resolve<NativeWindowsMessageListener>();\n\n    private readonly CardControl _cardControl = new()\n    {\n        Icon = SymbolRegular.DeveloperBoardLightning20,\n        Margin = new(0, 0, 0, 8)\n    };\n\n    private readonly CardHeaderControl _cardHeaderControl = new()\n    {\n        Title = Resource.OverclockDiscreteGPUControl_Title,\n        Subtitle = Resource.OverclockDiscreteGPUControl_Message\n    };\n\n    private readonly StackPanel _accessoryStackPanel = new()\n    {\n        Orientation = Orientation.Horizontal\n    };\n\n    private readonly ToggleSwitch _toggle = new()\n    {\n        Visibility = Visibility.Hidden,\n        Margin = new(8, 0, 0, 0)\n    };\n\n    private readonly Button _configButton = new()\n    {\n        Icon = SymbolRegular.Settings24,\n        FontSize = 20,\n        Margin = new(8, 0, 0, 0)\n    };\n\n    public OverclockDiscreteGPUControl()\n    {\n        InitializeComponent();\n\n        _nativeWindowsMessageListener.Changed += NativeWindowsMessageListener_Changed;\n        _controller.Changed += Controller_Changed;\n    }\n\n    private void InitializeComponent()\n    {\n        AutomationProperties.SetName(_toggle, Resource.OverclockDiscreteGPUControl_Title);\n        AutomationProperties.SetName(_configButton, Resource.OverclockDiscreteGPUControl_Title);\n        AutomationProperties.SetHelpText(_configButton, Resource.Settings);\n\n        _toggle.Click += Toggle_Click;\n        _configButton.Click += ConfigButton_Click;\n\n        _accessoryStackPanel.Children.Add(_toggle);\n        _accessoryStackPanel.Children.Add(_configButton);\n\n        _cardHeaderControl.Accessory = _accessoryStackPanel;\n        _cardControl.Header = _cardHeaderControl;\n\n        Content = _cardControl;\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    protected override async Task OnRefreshAsync()\n    {\n        if (!await _controller.IsSupportedAsync())\n            throw new NotSupportedException();\n\n        var (enabled, _) = _controller.GetState();\n        _toggle.IsChecked = enabled;\n        _toggle.Visibility = Visibility.Visible;\n    }\n\n    private async void NativeWindowsMessageListener_Changed(object? sender, NativeWindowsMessageListener.ChangedEventArgs e)\n    {\n        if (e.Message != NativeWindowsMessage.OnDisplayDeviceArrival)\n            return;\n\n        Visibility = Visibility.Visible;\n        await RefreshAsync();\n    }\n\n    private void Controller_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        Visibility = Visibility.Visible;\n        await RefreshAsync();\n    });\n\n    private async void Toggle_Click(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            if (IsRefreshing || _toggle.IsChecked is null)\n                return;\n\n            var enabled = _toggle.IsChecked.Value;\n            var (_, info) = _controller.GetState();\n            _controller.SaveState(enabled, info);\n            await _controller.ApplyStateAsync(true);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to change state.\", ex);\n        }\n    }\n\n    private void ConfigButton_Click(object sender, RoutedEventArgs e)\n    {\n        var window = new OverclockDiscreteGPUSettingsWindow { Owner = Window.GetWindow(this) };\n        window.Closed += async (_, _) => await RefreshAsync();\n        window.ShowDialog();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/PanelLogoBacklightControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class PanelLogoBacklightControl : AbstractToggleFeatureCardControl<PanelLogoBacklightState>\n{\n    private readonly LightingChangeListener _listener = IoCContainer.Resolve<LightingChangeListener>();\n\n    protected override PanelLogoBacklightState OnState => PanelLogoBacklightState.On;\n\n    protected override PanelLogoBacklightState OffState => PanelLogoBacklightState.Off;\n\n    public PanelLogoBacklightControl()\n    {\n        Icon = SymbolRegular.LightbulbCircle24;\n        Title = Resource.PanelLogoBacklightControl_Title;\n        Subtitle = Resource.PanelLogoBacklightControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    private void Listener_Changed(object? sender, LightingChangeListener.ChangedEventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (e.State != LightingChangeState.Panel)\n            return;\n\n        await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/PortsBacklightControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class PortsBacklightControl : AbstractToggleFeatureCardControl<PortsBacklightState>\n{\n    private readonly LightingChangeListener _listener = IoCContainer.Resolve<LightingChangeListener>();\n\n    protected override PortsBacklightState OnState => PortsBacklightState.On;\n\n    protected override PortsBacklightState OffState => PortsBacklightState.Off;\n\n    public PortsBacklightControl()\n    {\n        Icon = SymbolRegular.UsbPlug24;\n        Title = Resource.PortsBacklightControl_Title;\n        Subtitle = Resource.PortsBacklightControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    private void Listener_Changed(object? sender, LightingChangeListener.ChangedEventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (e.State != LightingChangeState.Ports)\n            return;\n\n        await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/PowerModeControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing LenovoLegionToolkit.WPF.Windows.Dashboard;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class PowerModeControl : AbstractComboBoxFeatureCardControl<PowerModeState>\n{\n    private readonly ThermalModeListener _thermalModeListener = IoCContainer.Resolve<ThermalModeListener>();\n    private readonly PowerModeListener _powerModeListener = IoCContainer.Resolve<PowerModeListener>();\n\n    private readonly ThrottleLastDispatcher _throttleDispatcher = new(TimeSpan.FromMilliseconds(500), nameof(PowerModeControl));\n\n    private readonly Button _configButton = new()\n    {\n        Icon = SymbolRegular.Settings24,\n        FontSize = 20,\n        Margin = new(8, 0, 0, 0),\n        Visibility = Visibility.Collapsed,\n    };\n\n    public PowerModeControl()\n    {\n        Icon = SymbolRegular.Gauge24;\n        Title = Resource.PowerModeControl_Title;\n        Subtitle = Resource.PowerModeControl_Message;\n\n        AutomationProperties.SetName(_configButton, Resource.PowerModeControl_Title);\n\n        _thermalModeListener.Changed += ThermalModeListener_Changed;\n        _powerModeListener.Changed += PowerModeListener_Changed;\n    }\n\n    private async void ThermalModeListener_Changed(object? sender, ThermalModeListener.ChangedEventArgs e) => await _throttleDispatcher.DispatchAsync(async () =>\n    {\n        await Dispatcher.InvokeAsync(async () =>\n        {\n            if (IsLoaded && IsVisible)\n                await RefreshAsync();\n        });\n    });\n\n    private async void PowerModeListener_Changed(object? sender, PowerModeListener.ChangedEventArgs e) => await _throttleDispatcher.DispatchAsync(async () =>\n    {\n        await Dispatcher.InvokeAsync(async () =>\n        {\n            if (IsLoaded && IsVisible)\n                await RefreshAsync();\n        });\n    });\n\n    protected override async Task OnRefreshAsync()\n    {\n        await base.OnRefreshAsync();\n\n        if (await Power.IsPowerAdapterConnectedAsync() != PowerAdapterStatus.Connected\n            && TryGetSelectedItem(out var state)\n            && state is PowerModeState.Performance or PowerModeState.GodMode)\n            Warning = Resource.PowerModeControl_Warning;\n        else\n            Warning = string.Empty;\n    }\n\n    protected override async Task OnStateChangeAsync(ComboBox comboBox, IFeature<PowerModeState> feature, PowerModeState? newValue, PowerModeState? oldValue)\n    {\n        await base.OnStateChangeAsync(comboBox, feature, newValue, oldValue);\n\n        var mi = await Compatibility.GetMachineInformationAsync();\n\n        switch (newValue)\n        {\n            case PowerModeState.Balance when mi.Properties.SupportsAIMode:\n            case PowerModeState.GodMode when mi.Properties.SupportsGodMode:\n                _configButton.ToolTip = Resource.PowerModeControl_Settings;\n                _configButton.Visibility = Visibility.Visible;\n                break;\n            default:\n                _configButton.ToolTip = null;\n                _configButton.Visibility = Visibility.Collapsed;\n                break;\n        }\n    }\n\n    protected override void OnStateChangeException(Exception exception)\n    {\n        if (exception is PowerModeUnavailableWithoutACException ex1)\n        {\n            SnackbarHelper.Show(Resource.PowerModeUnavailableWithoutACException_Title,\n                string.Format(Resource.PowerModeUnavailableWithoutACException_Message, ex1.PowerMode.GetDisplayName()),\n                SnackbarType.Warning);\n        }\n    }\n\n    protected override FrameworkElement GetAccessory(ComboBox comboBox)\n    {\n        _configButton.Click += ConfigButton_Click;\n\n        var stackPanel = new StackPanel\n        {\n            Orientation = Orientation.Horizontal,\n        };\n        stackPanel.Children.Add(_configButton);\n        stackPanel.Children.Add(comboBox);\n\n        return stackPanel;\n    }\n\n    private void ConfigButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (!TryGetSelectedItem(out var state))\n            return;\n\n        switch (state)\n        {\n            case PowerModeState.Balance:\n                {\n                    var window = new BalanceModeSettingsWindow { Owner = Window.GetWindow(this) };\n                    window.ShowDialog();\n                    break;\n                }\n            case PowerModeState.GodMode:\n                {\n                    var window = new GodModeSettingsWindow { Owner = Window.GetWindow(this) };\n                    window.ShowDialog();\n                    break;\n                }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/RefreshRateControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class RefreshRateControl : AbstractComboBoxFeatureCardControl<RefreshRate>\n{\n    private readonly DisplayConfigurationListener _listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n\n    public RefreshRateControl()\n    {\n        Icon = SymbolRegular.DesktopPulse24;\n        Title = Resource.RefreshRateControl_Title;\n        Subtitle = Resource.RefreshRateControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    protected override async Task OnRefreshAsync()\n    {\n        await base.OnRefreshAsync();\n\n        Visibility = ItemsCount < 2 ? Visibility.Collapsed : Visibility.Visible;\n    }\n\n    protected override string ComboBoxItemDisplayName(RefreshRate value)\n    {\n        var str = base.ComboBoxItemDisplayName(value);\n        return LocalizationHelper.ForceLeftToRight(str);\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (IsLoaded)\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/ResolutionControl.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class ResolutionControl : AbstractComboBoxFeatureCardControl<Resolution>\n{\n    private readonly DisplayConfigurationListener _listener = IoCContainer.Resolve<DisplayConfigurationListener>();\n\n    public ResolutionControl()\n    {\n        Icon = SymbolRegular.ScaleFill24;\n        Title = Resource.ResolutionControl_Title;\n        Subtitle = Resource.ResolutionControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    protected override async Task OnRefreshAsync()\n    {\n        await base.OnRefreshAsync();\n\n        Visibility = ItemsCount < 2 ? Visibility.Collapsed : Visibility.Visible;\n    }\n\n    protected override string ComboBoxItemDisplayName(Resolution value)\n    {\n        var str = base.ComboBoxItemDisplayName(value);\n        return LocalizationHelper.ForceLeftToRight(str);\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (IsLoaded)\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/SensorsControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.Dashboard.SensorsControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:behaviors=\"clr-namespace:LenovoLegionToolkit.WPF.Behaviors\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:i=\"http://schemas.microsoft.com/xaml/behaviors\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    mc:Ignorable=\"d\">\n    <wpfui:CardControl Focusable=\"False\">\n        <wpfui:CardControl.Header>\n            <Grid>\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"Auto\" SharedSizeGroup=\"A\" />\n                    <ColumnDefinition Width=\"*\" SharedSizeGroup=\"B\" />\n                    <ColumnDefinition Width=\"70\" SharedSizeGroup=\"C\" />\n                    <ColumnDefinition Width=\"16\" />\n                    <ColumnDefinition Width=\"Auto\" SharedSizeGroup=\"A\" />\n                    <ColumnDefinition Width=\"*\" SharedSizeGroup=\"B\" />\n                    <ColumnDefinition Width=\"70\" SharedSizeGroup=\"C\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n\n                <TextBlock\n                    Grid.ColumnSpan=\"3\"\n                    Margin=\"0,0,0,8\"\n                    FontSize=\"18\"\n                    FontWeight=\"Medium\"\n                    Text=\"{x:Static resources:Resource.SensorsControl_CPU_Title}\" />\n\n                <Label\n                    Grid.Row=\"1\"\n                    Grid.Column=\"0\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.SensorsControl_Utilization_Title}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n                <ProgressBar\n                    x:Name=\"_cpuUtilizationBar\"\n                    Grid.Row=\"1\"\n                    Grid.Column=\"1\"\n                    Margin=\"16,0,16,0\"\n                    Maximum=\"100\"\n                    Minimum=\"0\"\n                    Value=\"0\">\n                    <i:Interaction.Behaviors>\n                        <behaviors:ProgressBarAnimateBehavior />\n                    </i:Interaction.Behaviors>\n                </ProgressBar>\n                <Label\n                    x:Name=\"_cpuUtilizationLabel\"\n                    Grid.Row=\"1\"\n                    Grid.Column=\"2\"\n                    HorizontalContentAlignment=\"Right\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"-\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n                <Label\n                    Grid.Row=\"2\"\n                    Grid.Column=\"0\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.SensorsControl_CoreClock_Title}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n                <ProgressBar\n                    x:Name=\"_cpuCoreClockBar\"\n                    Grid.Row=\"2\"\n                    Grid.Column=\"1\"\n                    Margin=\"16,0,16,0\"\n                    Maximum=\"100\"\n                    Minimum=\"0\"\n                    Value=\"0\">\n                    <i:Interaction.Behaviors>\n                        <behaviors:ProgressBarAnimateBehavior />\n                    </i:Interaction.Behaviors>\n                </ProgressBar>\n                <Label\n                    x:Name=\"_cpuCoreClockLabel\"\n                    Grid.Row=\"2\"\n                    Grid.Column=\"2\"\n                    HorizontalContentAlignment=\"Right\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"-\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n                <Label\n                    Grid.Row=\"3\"\n                    Grid.Column=\"0\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.SensorsControl_Temperature_Title}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n                <ProgressBar\n                    x:Name=\"_cpuTemperatureBar\"\n                    Grid.Row=\"3\"\n                    Grid.Column=\"1\"\n                    Margin=\"16,0,16,0\"\n                    Maximum=\"100\"\n                    Minimum=\"0\"\n                    Value=\"0\">\n                    <i:Interaction.Behaviors>\n                        <behaviors:ProgressBarAnimateBehavior />\n                    </i:Interaction.Behaviors>\n                </ProgressBar>\n                <Label\n                    x:Name=\"_cpuTemperatureLabel\"\n                    Grid.Row=\"3\"\n                    Grid.Column=\"2\"\n                    HorizontalContentAlignment=\"Right\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"-\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n                <Label\n                    Grid.Row=\"4\"\n                    Grid.Column=\"0\"\n                    Content=\"{x:Static resources:Resource.SensorsControl_Fan_Title}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n                <ProgressBar\n                    x:Name=\"_cpuFanSpeedBar\"\n                    Grid.Row=\"4\"\n                    Grid.Column=\"1\"\n                    Margin=\"16,0,16,0\"\n                    Maximum=\"100\"\n                    Minimum=\"0\"\n                    Value=\"0\">\n                    <i:Interaction.Behaviors>\n                        <behaviors:ProgressBarAnimateBehavior />\n                    </i:Interaction.Behaviors>\n                </ProgressBar>\n                <Label\n                    x:Name=\"_cpuFanSpeedLabel\"\n                    Grid.Row=\"4\"\n                    Grid.Column=\"2\"\n                    HorizontalContentAlignment=\"Right\"\n                    Content=\"-\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n                <TextBlock\n                    Grid.Row=\"0\"\n                    Grid.Column=\"4\"\n                    Margin=\"0,0,0,8\"\n                    FontSize=\"18\"\n                    FontWeight=\"Medium\"\n                    Text=\"{x:Static resources:Resource.SensorsControl_GPU_Title}\" />\n\n                <Label\n                    Grid.Row=\"1\"\n                    Grid.Column=\"4\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.SensorsControl_Utilization_Title}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n                <ProgressBar\n                    x:Name=\"_gpuUtilizationBar\"\n                    Grid.Row=\"1\"\n                    Grid.Column=\"5\"\n                    Margin=\"16,0,16,0\"\n                    Maximum=\"100\"\n                    Minimum=\"0\"\n                    Value=\"0\">\n                    <i:Interaction.Behaviors>\n                        <behaviors:ProgressBarAnimateBehavior />\n                    </i:Interaction.Behaviors>\n                </ProgressBar>\n                <Label\n                    x:Name=\"_gpuUtilizationLabel\"\n                    Grid.Row=\"1\"\n                    Grid.Column=\"6\"\n                    HorizontalContentAlignment=\"Right\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"-\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n                <Label\n                    Grid.Row=\"2\"\n                    Grid.Column=\"4\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.SensorsControl_CoreClock_Title}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n                <ProgressBar\n                    x:Name=\"_gpuCoreClockBar\"\n                    Grid.Row=\"2\"\n                    Grid.Column=\"5\"\n                    Margin=\"16,0,16,0\"\n                    Maximum=\"100\"\n                    Minimum=\"0\"\n                    Value=\"0\">\n                    <i:Interaction.Behaviors>\n                        <behaviors:ProgressBarAnimateBehavior />\n                    </i:Interaction.Behaviors>\n                </ProgressBar>\n                <Label\n                    x:Name=\"_gpuCoreClockLabel\"\n                    Grid.Row=\"2\"\n                    Grid.Column=\"6\"\n                    HorizontalContentAlignment=\"Right\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"-\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n                <Label\n                    Grid.Row=\"3\"\n                    Grid.Column=\"4\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.SensorsControl_MemoryClock_Title}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n                <ProgressBar\n                    x:Name=\"_gpuMemoryClockBar\"\n                    Grid.Row=\"3\"\n                    Grid.Column=\"5\"\n                    Margin=\"16,0,16,0\"\n                    Maximum=\"100\"\n                    Minimum=\"0\"\n                    Value=\"0\">\n                    <i:Interaction.Behaviors>\n                        <behaviors:ProgressBarAnimateBehavior />\n                    </i:Interaction.Behaviors>\n                </ProgressBar>\n                <Label\n                    x:Name=\"_gpuMemoryClockLabel\"\n                    Grid.Row=\"3\"\n                    Grid.Column=\"6\"\n                    HorizontalContentAlignment=\"Right\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"-\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n                <Label\n                    Grid.Row=\"4\"\n                    Grid.Column=\"4\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.SensorsControl_Temperature_Title}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n                <ProgressBar\n                    x:Name=\"_gpuTemperatureBar\"\n                    Grid.Row=\"4\"\n                    Grid.Column=\"5\"\n                    Margin=\"16,0,16,0\"\n                    Maximum=\"100\"\n                    Minimum=\"0\"\n                    Value=\"0\">\n                    <i:Interaction.Behaviors>\n                        <behaviors:ProgressBarAnimateBehavior />\n                    </i:Interaction.Behaviors>\n                </ProgressBar>\n                <Label\n                    x:Name=\"_gpuTemperatureLabel\"\n                    Grid.Row=\"4\"\n                    Grid.Column=\"6\"\n                    HorizontalContentAlignment=\"Right\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"-\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n                <Label\n                    Grid.Row=\"5\"\n                    Grid.Column=\"4\"\n                    Content=\"{x:Static resources:Resource.SensorsControl_Fan_Title}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n                <ProgressBar\n                    x:Name=\"_gpuFanSpeedBar\"\n                    Grid.Row=\"5\"\n                    Grid.Column=\"5\"\n                    Margin=\"16,0,16,0\"\n                    Maximum=\"100\"\n                    Minimum=\"0\"\n                    Value=\"0\">\n                    <i:Interaction.Behaviors>\n                        <behaviors:ProgressBarAnimateBehavior />\n                    </i:Interaction.Behaviors>\n                </ProgressBar>\n                <Label\n                    x:Name=\"_gpuFanSpeedLabel\"\n                    Grid.Row=\"5\"\n                    Grid.Column=\"6\"\n                    HorizontalContentAlignment=\"Right\"\n                    Content=\"-\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n            </Grid>\n        </wpfui:CardControl.Header>\n    </wpfui:CardControl>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/SensorsControl.xaml.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Controls.Primitives;\nusing Humanizer;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers.Sensors;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Settings;\nusing Wpf.Ui.Common;\nusing MenuItem = Wpf.Ui.Controls.MenuItem;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic partial class SensorsControl\n{\n    private readonly ISensorsController _controller = IoCContainer.Resolve<ISensorsController>();\n    private readonly ApplicationSettings _applicationSettings = IoCContainer.Resolve<ApplicationSettings>();\n    private readonly DashboardSettings _dashboardSettings = IoCContainer.Resolve<DashboardSettings>();\n\n    private CancellationTokenSource? _cts;\n    private Task? _refreshTask;\n\n    public SensorsControl()\n    {\n        InitializeComponent();\n        InitializeContextMenu();\n\n        IsVisibleChanged += SensorsControl_IsVisibleChanged;\n    }\n\n    private void InitializeContextMenu()\n    {\n        ContextMenu = new ContextMenu();\n        ContextMenu.Items.Add(new MenuItem { Header = Resource.SensorsControl_RefreshInterval, IsEnabled = false });\n\n        foreach (var interval in new[] { 1, 2, 3, 5 })\n        {\n            var item = new MenuItem\n            {\n                SymbolIcon = _dashboardSettings.Store.SensorsRefreshIntervalSeconds == interval ? SymbolRegular.Checkmark24 : SymbolRegular.Empty,\n                Header = TimeSpan.FromSeconds(interval).Humanize(culture: Resource.Culture)\n            };\n            item.Click += (_, _) =>\n            {\n                _dashboardSettings.Store.SensorsRefreshIntervalSeconds = interval;\n                _dashboardSettings.SynchronizeStore();\n                InitializeContextMenu();\n            };\n            ContextMenu.Items.Add(item);\n        }\n    }\n\n    private async void SensorsControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n        {\n            Refresh();\n            return;\n        }\n\n        if (_cts is not null)\n            await _cts.CancelAsync();\n\n        _cts = null;\n\n        if (_refreshTask is not null)\n            await _refreshTask;\n\n        _refreshTask = null;\n\n        UpdateValues(SensorsData.Empty);\n    }\n\n    private void Refresh()\n    {\n        _cts?.Cancel();\n        _cts = new CancellationTokenSource();\n\n        var token = _cts.Token;\n\n        _refreshTask = Task.Run(async () =>\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Sensors refresh started...\");\n\n            if (!await _controller.IsSupportedAsync())\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Sensors not supported.\");\n\n                Dispatcher.Invoke(() => Visibility = Visibility.Collapsed);\n                return;\n            }\n\n            await _controller.PrepareAsync();\n\n            while (!token.IsCancellationRequested)\n            {\n                try\n                {\n                    var data = await _controller.GetDataAsync();\n                    Dispatcher.Invoke(() => UpdateValues(data));\n                    await Task.Delay(TimeSpan.FromSeconds(_dashboardSettings.Store.SensorsRefreshIntervalSeconds), token);\n                }\n                catch (OperationCanceledException) { }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Sensors refresh failed.\", ex);\n\n                    Dispatcher.Invoke(() => UpdateValues(SensorsData.Empty));\n                }\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Sensors refresh stopped.\");\n        }, token);\n    }\n\n    private void UpdateValues(SensorsData data)\n    {\n        UpdateValue(_cpuUtilizationBar, _cpuUtilizationLabel, data.CPU.MaxUtilization, data.CPU.Utilization,\n            $\"{data.CPU.Utilization}%\");\n        UpdateValue(_cpuCoreClockBar, _cpuCoreClockLabel, data.CPU.MaxCoreClock, data.CPU.CoreClock,\n            $\"{data.CPU.CoreClock / 1000.0:0.0} {Resource.GHz}\", $\"{data.CPU.MaxCoreClock / 1000.0:0.0} {Resource.GHz}\");\n        UpdateValue(_cpuTemperatureBar, _cpuTemperatureLabel, data.CPU.MaxTemperature, data.CPU.Temperature,\n            GetTemperatureText(data.CPU.Temperature), GetTemperatureText(data.CPU.MaxTemperature));\n        UpdateValue(_cpuFanSpeedBar, _cpuFanSpeedLabel, data.CPU.MaxFanSpeed, data.CPU.FanSpeed,\n            $\"{data.CPU.FanSpeed} {Resource.RPM}\", $\"{data.CPU.MaxFanSpeed} {Resource.RPM}\");\n\n        UpdateValue(_gpuUtilizationBar, _gpuUtilizationLabel, data.GPU.MaxUtilization, data.GPU.Utilization,\n            $\"{data.GPU.Utilization} %\");\n        UpdateValue(_gpuCoreClockBar, _gpuCoreClockLabel, data.GPU.MaxCoreClock, data.GPU.CoreClock,\n            $\"{data.GPU.CoreClock} {Resource.MHz}\", $\"{data.GPU.MaxCoreClock} {Resource.MHz}\");\n        UpdateValue(_gpuMemoryClockBar, _gpuMemoryClockLabel, data.GPU.MaxMemoryClock, data.GPU.MemoryClock,\n            $\"{data.GPU.MemoryClock} {Resource.MHz}\", $\"{data.GPU.MaxMemoryClock} {Resource.MHz}\");\n        UpdateValue(_gpuTemperatureBar, _gpuTemperatureLabel, data.GPU.MaxTemperature, data.GPU.Temperature,\n            GetTemperatureText(data.GPU.Temperature), GetTemperatureText(data.GPU.MaxTemperature));\n        UpdateValue(_gpuFanSpeedBar, _gpuFanSpeedLabel, data.GPU.MaxFanSpeed, data.GPU.FanSpeed,\n            $\"{data.GPU.FanSpeed} {Resource.RPM}\", $\"{data.GPU.MaxFanSpeed} {Resource.RPM}\");\n    }\n\n    private string GetTemperatureText(double temperature)\n    {\n        if (_applicationSettings.Store.TemperatureUnit == TemperatureUnit.F)\n        {\n            temperature *= 9.0 / 5.0;\n            temperature += 32;\n            return $\"{temperature:0} {Resource.Fahrenheit}\";\n        }\n\n        return $\"{temperature:0} {Resource.Celsius}\";\n    }\n\n    private static void UpdateValue(RangeBase bar, ContentControl label, double max, double value, string text, string? toolTipText = null)\n    {\n        if (max < 0 || value < 0)\n        {\n            bar.Minimum = 0;\n            bar.Maximum = 1;\n            bar.Value = 0;\n            label.Content = \"-\";\n            label.ToolTip = null;\n            label.Tag = 0;\n        }\n        else\n        {\n            bar.Minimum = 0;\n            bar.Maximum = max;\n            bar.Value = value;\n            label.Content = text;\n            label.ToolTip = toolTipText is null ? null : string.Format(Resource.SensorsControl_Maximum, toolTipText);\n            label.Tag = value;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/TouchpadLockControl.cs",
    "content": "﻿using System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class TouchpadLockControl : AbstractToggleFeatureCardControl<TouchpadLockState>\n{\n    private readonly DriverKeyListener _listener = IoCContainer.Resolve<DriverKeyListener>();\n\n    protected override TouchpadLockState OnState => TouchpadLockState.On;\n\n    protected override TouchpadLockState OffState => TouchpadLockState.Off;\n\n    public TouchpadLockControl()\n    {\n        Icon = SymbolRegular.Tablet24;\n        Title = Resource.TouchpadLockControl_Title;\n        Subtitle = Resource.TouchpadLockControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    protected override async Task OnStateChange(ToggleSwitch toggle, IFeature<TouchpadLockState> feature)\n    {\n        await _listener.StopAsync();\n        await base.OnStateChange(toggle, feature);\n        await _listener.StartAsync();\n    }\n\n    private void Listener_Changed(object? sender, DriverKeyListener.ChangedEventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (!IsLoaded || !IsVisible)\n            return;\n\n        if (e.DriverKey.HasFlag(DriverKey.FnF10))\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/TurnOffMonitorsControl.xaml",
    "content": "﻿<controls:AbstractRefreshingControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.Dashboard.TurnOffMonitorsControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    mc:Ignorable=\"d\">\n    <custom:CardControl Margin=\"0,0,0,8\" Icon=\"Desktop24\">\n        <custom:CardControl.Header>\n            <controls:CardHeaderControl Title=\"{x:Static resources:Resource.TurnOffMonitorsControl_Title}\" Subtitle=\"{x:Static resources:Resource.TurnOffMonitorsControl_Message}\" />\n        </custom:CardControl.Header>\n        <wpfui:Button\n            x:Name=\"_turnOffButton\"\n            MinWidth=\"120\"\n            AutomationProperties.Name=\"{x:Static resources:Resource.TurnOffMonitorsControl_Title}\"\n            Click=\"TurnOffButton_Click\"\n            Content=\"{x:Static resources:Resource.TurnOffMonitorsControl_TurnOff}\"\n            Focusable=\"True\" />\n    </custom:CardControl>\n</controls:AbstractRefreshingControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/TurnOffMonitorsControl.xaml.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic partial class TurnOffMonitorsControl\n{\n    private readonly NativeWindowsMessageListener _nativeWindowsMessageListener = IoCContainer.Resolve<NativeWindowsMessageListener>();\n\n    public TurnOffMonitorsControl() => InitializeComponent();\n\n    private async void TurnOffButton_Click(object sender, RoutedEventArgs e)\n    {\n        _turnOffButton.IsEnabled = false;\n        await _nativeWindowsMessageListener.TurnOffMonitorAsync();\n        _turnOffButton.IsEnabled = true;\n    }\n\n    protected override Task OnRefreshAsync() => Task.CompletedTask;\n\n    protected override void OnFinishedLoading() { }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/WhiteKeyboardBacklightControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class WhiteKeyboardBacklightControl : AbstractComboBoxFeatureCardControl<WhiteKeyboardBacklightState>\n{\n    private readonly DriverKeyListener _listener = IoCContainer.Resolve<DriverKeyListener>();\n\n    public WhiteKeyboardBacklightControl()\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.WhiteKeyboardBacklightControl_Title;\n        Subtitle = Resource.WhiteKeyboardBacklightControl_Message;\n\n        _listener.Changed += ListenerChanged;\n    }\n\n    private void ListenerChanged(object? sender, DriverKeyListener.ChangedEventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (!IsLoaded || !IsVisible)\n            return;\n\n        if (e.DriverKey.HasFlag(DriverKey.FnSpace))\n            await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Dashboard/WinKeyControl.cs",
    "content": "﻿using System;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Dashboard;\n\npublic class WinKeyControl : AbstractToggleFeatureCardControl<WinKeyState>\n{\n    private readonly WinKeyListener _listener = IoCContainer.Resolve<WinKeyListener>();\n\n    protected override WinKeyState OnState => WinKeyState.On;\n\n    protected override WinKeyState OffState => WinKeyState.Off;\n\n    protected override bool DisablesWhileRefreshing => false;\n\n    public WinKeyControl()\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.WinKeyControl_Title;\n        Subtitle = Resource.WinKeyControl_Message;\n\n        _listener.Changed += Listener_Changed;\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (!IsLoaded || !IsVisible)\n            return;\n\n        await RefreshAsync();\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/FanCurveControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.FanCurveControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    FlowDirection=\"LeftToRight\">\n    <Grid Margin=\"0,8,0,8\">\n\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"*\" />\n        </Grid.ColumnDefinitions>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <Grid\n            Grid.Row=\"0\"\n            Grid.Column=\"0\"\n            Margin=\"0,0,8,0\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n            <Label\n                Grid.Row=\"0\"\n                HorizontalAlignment=\"Right\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"100%\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            <Label\n                Grid.Row=\"2\"\n                HorizontalAlignment=\"Right\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"80%\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            <Label\n                Grid.Row=\"4\"\n                HorizontalAlignment=\"Right\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"60%\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            <Label\n                Grid.Row=\"6\"\n                HorizontalAlignment=\"Right\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"40%\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            <Label\n                Grid.Row=\"8\"\n                HorizontalAlignment=\"Right\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"20%\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            <Label\n                Grid.Row=\"10\"\n                HorizontalAlignment=\"Right\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.FanCurveControl_FanSpeed}\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n        </Grid>\n\n        <Border\n            Grid.Row=\"0\"\n            Grid.Column=\"1\"\n            BorderBrush=\"{DynamicResource TextFillColorDisabledBrush}\"\n            BorderThickness=\"1,0,0,1\" />\n\n        <Canvas\n            x:Name=\"_canvas\"\n            Grid.Row=\"0\"\n            Grid.Column=\"1\" />\n\n        <Grid\n            x:Name=\"_slidersGrid\"\n            Grid.Row=\"0\"\n            Grid.Column=\"1\"\n            Height=\"200\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n        </Grid>\n\n        <Grid\n            Grid.Row=\"1\"\n            Grid.Column=\"1\"\n            Margin=\"0,8,0,0\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n            <Label\n                Grid.Row=\"1\"\n                HorizontalAlignment=\"Right\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"100 °C\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n        </Grid>\n\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/FanCurveControl.xaml.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Controls.Primitives;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing System.Windows.Shapes;\nusing System.Windows.Threading;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic partial class FanCurveControl\n{\n    private readonly List<Slider> _sliders = [];\n    private readonly InfoTooltip _customToolTip = new();\n\n    private FanTableData[]? _tableData;\n    private FanTable? _minimumFanTable;\n\n    public FanCurveControl()\n    {\n        InitializeComponent();\n\n        MouseLeave += FanCurveControl_MouseLeave;\n    }\n\n    private void FanCurveControl_MouseLeave(object sender, MouseEventArgs e)\n    {\n        _customToolTip.IsOpen = false;\n    }\n\n    protected override Size ArrangeOverride(Size arrangeBounds)\n    {\n        var size = base.ArrangeOverride(arrangeBounds);\n        DrawGraph();\n        return size;\n    }\n\n    public void SetFanTableInfo(FanTableInfo fanTableInfo, FanTable minimumFanTable)\n    {\n        _sliders.Clear();\n        _slidersGrid.Children.Clear();\n\n        var tableValues = fanTableInfo.Table.GetTable();\n\n        for (var i = 0; i < tableValues.Length; i++)\n        {\n            var slider = GenerateSlider(i, 0, 10);\n            slider.Value = tableValues[i];\n            _sliders.Add(slider);\n            _slidersGrid.Children.Add(slider);\n        }\n\n        _tableData = fanTableInfo.Data;\n        _minimumFanTable = minimumFanTable;\n\n        Dispatcher.InvokeAsync(DrawGraph, DispatcherPriority.Render);\n    }\n\n    public FanTableInfo? GetFanTableInfo()\n    {\n        if (_tableData is null)\n            return null;\n\n        var fanTable = _sliders.Select(s => (ushort)s.Value).ToArray();\n        return new(_tableData, new FanTable(fanTable));\n    }\n\n    private Slider GenerateSlider(int index, int minimum, int maximum)\n    {\n        var slider = new Slider\n        {\n            HorizontalAlignment = HorizontalAlignment.Center,\n            Orientation = Orientation.Vertical,\n            IsSnapToTickEnabled = true,\n            TickFrequency = 1,\n            Maximum = maximum,\n            Minimum = minimum,\n            Tag = index,\n        };\n\n        slider.MouseMove += Slider_MouseMove;\n        slider.ValueChanged += Slider_OnValueChanged;\n\n        Grid.SetColumn(slider, index + 1);\n\n        return slider;\n    }\n\n    private void Slider_MouseMove(object sender, MouseEventArgs e)\n    {\n        if (sender is not Slider slider)\n            return;\n\n        if (slider.Template.FindName(\"PART_Track\", slider) is not Track track)\n            return;\n\n        if (!track.Thumb.IsMouseOver || _tableData is null)\n        {\n            _customToolTip.IsOpen = false;\n            return;\n        }\n\n        _customToolTip.Update(_tableData, (int)slider.Tag, (int)slider.Value - 1);\n\n        _customToolTip.Placement = PlacementMode.Custom;\n        _customToolTip.PlacementTarget = track.Thumb;\n        _customToolTip.CustomPopupPlacementCallback = ToolTipCustomPopupPlacementCallback;\n\n        _customToolTip.HorizontalOffset += -0.1;\n        _customToolTip.HorizontalOffset += +0.1;\n\n        _customToolTip.IsOpen = true;\n    }\n\n    private void Slider_OnValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)\n    {\n        if (_sliders.Count < 10)\n            return;\n\n        if (sender is not Slider currentSlider)\n            return;\n\n        if (currentSlider is { IsKeyboardFocusWithin: false, IsMouseCaptureWithin: false })\n            return;\n\n        if (_minimumFanTable.HasValue)\n        {\n            var index = (int)currentSlider.Tag;\n            var minimum = _minimumFanTable.Value.GetTable();\n\n            if (currentSlider.Value < minimum[index])\n            {\n                currentSlider.Value = minimum[index];\n                return;\n            }\n        }\n\n        VerifyValues(currentSlider);\n        DrawGraph();\n    }\n\n    private static CustomPopupPlacement[] ToolTipCustomPopupPlacementCallback(Size size, Size targetSize, Point _)\n    {\n        return\n        [\n            new(new((targetSize.Width - size.Width) * 0.5, -targetSize.Height -size.Height + 8), PopupPrimaryAxis.Vertical)\n        ];\n    }\n\n    private void VerifyValues(Slider currentSlider)\n    {\n        var currentIndex = _sliders.IndexOf(currentSlider);\n        if (currentIndex < 0)\n            return;\n\n        var currentValue = currentSlider.Value;\n        var slidersBefore = _sliders.Take(currentIndex);\n        var slidersAfter = _sliders.Skip(currentIndex + 1);\n\n        foreach (var slider in slidersBefore)\n        {\n            if (slider.Value > currentValue)\n                slider.Value = currentValue;\n        }\n\n        foreach (var slider in slidersAfter)\n        {\n            if (slider.Value < currentValue)\n                slider.Value = currentValue;\n        }\n    }\n\n    private void DrawGraph()\n    {\n        var color = Application.Current.Resources[\"ControlFillColorDefaultBrush\"] as SolidColorBrush;\n\n        _canvas.Children.Clear();\n\n        var points = _sliders\n            .Select(GetThumbLocation)\n            .Select(p => new Point(p.X, p.Y))\n            .ToArray();\n\n        if (points.IsEmpty())\n            return;\n\n        // Line\n\n        var pathSegmentCollection = new PathSegmentCollection();\n        foreach (var point in points.Skip(1))\n            pathSegmentCollection.Add(new LineSegment { Point = point });\n        var pathFigure = new PathFigure { StartPoint = points[0], Segments = pathSegmentCollection };\n\n        var path = new Path\n        {\n            StrokeThickness = 2,\n            Stroke = color,\n            StrokeStartLineCap = PenLineCap.Round,\n            StrokeEndLineCap = PenLineCap.Round,\n            Data = new PathGeometry { Figures = [pathFigure] },\n        };\n        _canvas.Children.Add(path);\n\n        // Fill\n\n        var pointCollection = new PointCollection { new(points[0].X, _canvas.ActualHeight - 1) };\n        foreach (var point in points)\n            pointCollection.Add(point);\n        pointCollection.Add(new(points[^1].X, _canvas.ActualHeight - 1));\n\n        var polygon = new Polygon\n        {\n            Fill = color,\n            Points = pointCollection\n        };\n        _canvas.Children.Add(polygon);\n    }\n\n    private Point GetThumbLocation(Slider slider)\n    {\n        var ratio = slider.Value / (slider.Maximum - slider.Minimum);\n        var y = slider.ActualHeight - (slider.ActualHeight * ratio);\n        var x = slider.ActualWidth * 0.5;\n        var point = slider.TranslatePoint(new(x, y), _canvas);\n        return point;\n    }\n\n    private class InfoTooltip : ToolTip\n    {\n        private readonly Grid _grid = new()\n        {\n            ColumnDefinitions =\n            {\n                new() { Width = GridLength.Auto},\n                new () { Width = GridLength.Auto}\n            },\n            RowDefinitions =\n            {\n                new() { Height = GridLength.Auto},\n                new() { Height = GridLength.Auto},\n                new() { Height = GridLength.Auto},\n                new() { Height = GridLength.Auto}\n            }\n        };\n\n        private readonly TextBlock _cpuDescription = new() { Text = Resource.FanCurveControl_CPU, FontWeight = FontWeights.Medium, Margin = new(0, 0, 8, 0) };\n        private readonly TextBlock _cpuSensorDescription = new() { Text = Resource.FanCurveControl_CPUSensor, FontWeight = FontWeights.Medium, Margin = new(0, 0, 8, 0) };\n        private readonly TextBlock _gpuDescription = new() { Text = Resource.FanCurveControl_GPU, FontWeight = FontWeights.Medium, Margin = new(0, 0, 8, 0) };\n        private readonly TextBlock _gpu2Description = new() { Text = Resource.FanCurveControl_GPU2, FontWeight = FontWeights.Medium, Margin = new(0, 0, 8, 0) };\n\n        private readonly TextBlock _cpuValue = new();\n        private readonly TextBlock _cpuSensorValue = new();\n        private readonly TextBlock _gpuValue = new();\n        private readonly TextBlock _gpu2Value = new();\n\n        public InfoTooltip()\n        {\n            InitializeComponent();\n        }\n\n        private void InitializeComponent()\n        {\n            SetResourceReference(StyleProperty, typeof(ToolTip));\n\n            Grid.SetColumn(_cpuDescription, 0);\n            Grid.SetColumn(_cpuSensorDescription, 0);\n            Grid.SetColumn(_gpuDescription, 0);\n            Grid.SetColumn(_gpu2Description, 0);\n            Grid.SetColumn(_cpuValue, 1);\n            Grid.SetColumn(_cpuSensorValue, 1);\n            Grid.SetColumn(_gpuValue, 1);\n            Grid.SetColumn(_gpu2Value, 1);\n\n            Grid.SetRow(_cpuDescription, 0);\n            Grid.SetRow(_cpuSensorDescription, 1);\n            Grid.SetRow(_gpuDescription, 2);\n            Grid.SetRow(_gpu2Description, 3);\n            Grid.SetRow(_cpuValue, 0);\n            Grid.SetRow(_cpuSensorValue, 1);\n            Grid.SetRow(_gpuValue, 2);\n            Grid.SetRow(_gpu2Value, 3);\n\n            _grid.Children.Add(_cpuDescription);\n            _grid.Children.Add(_cpuSensorDescription);\n            _grid.Children.Add(_gpuDescription);\n            _grid.Children.Add(_gpu2Description);\n            _grid.Children.Add(_cpuValue);\n            _grid.Children.Add(_cpuSensorValue);\n            _grid.Children.Add(_gpuValue);\n            _grid.Children.Add(_gpu2Value);\n\n            Content = _grid;\n        }\n\n        public void Update(FanTableData[] tableData, int index, int value)\n        {\n            Update(tableData, index, value, FanTableType.CPU, _cpuDescription, _cpuValue);\n            Update(tableData, index, value, FanTableType.CPUSensor, _cpuSensorDescription, _cpuSensorValue);\n            Update(tableData, index, value, FanTableType.GPU, _gpuDescription, _gpuValue);\n            Update(tableData, index, value, FanTableType.GPU2, _gpu2Description, _gpu2Value);\n        }\n\n        private static void Update(FanTableData[] tableData, int index, int value, FanTableType type, TextBlock descriptionTextBlock, TextBlock valueTextBlock)\n        {\n            var text = tableData\n                .Where(td => td.Type == type)\n                .Select(td => GetDescription(td, index, value))\n                .FirstOrDefault();\n\n            var visibility = text is null ? Visibility.Collapsed : Visibility.Visible;\n\n            valueTextBlock.Text = text ?? \"-\";\n            valueTextBlock.Visibility = visibility;\n            descriptionTextBlock.Visibility = visibility;\n        }\n\n        private static string GetDescription(FanTableData tableData, int index, int value)\n        {\n            try\n            {\n                var temp = tableData.Temps[index];\n\n                if (temp >= 127)\n                    return \"-\";\n\n                var rpm = value < 0 ? 0 : tableData.FanSpeeds[value];\n                return $\"{temp}{Resource.Celsius} @ {rpm} {Resource.RPM}\";\n            }\n            catch\n            {\n                return \"-\";\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/RGB/AbstractComboBoxRGBKeyboardCardControl.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing Wpf.Ui.Common;\nusing CardControl = LenovoLegionToolkit.WPF.Controls.Custom.CardControl;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.RGB;\n\npublic abstract class AbstractComboBoxRGBKeyboardCardControl<T> : UserControl\n{\n    private readonly CardControl _cardControl = new();\n\n    private readonly CardHeaderControl _cardHeaderControl = new();\n\n    private readonly ComboBox _comboBox = new();\n\n    public SymbolRegular Icon\n    {\n        get => _cardControl.Icon;\n        set => _cardControl.Icon = value;\n    }\n\n    public string Title\n    {\n        get => _cardHeaderControl.Title;\n        set\n        {\n            _cardHeaderControl.Title = value;\n\n            AutomationProperties.SetName(_comboBox, value);\n        }\n    }\n\n    public string Subtitle\n    {\n        get => _cardHeaderControl.Subtitle;\n        set => _cardHeaderControl.Subtitle = value;\n    }\n\n    public T? SelectedItem\n    {\n        get\n        {\n            if (_comboBox.TryGetSelectedItem(out T? item))\n                return item;\n            return default;\n        }\n    }\n\n    public event EventHandler? OnChanged;\n\n    public AbstractComboBoxRGBKeyboardCardControl() => InitializeComponent();\n\n    private void InitializeComponent()\n    {\n        IsEnabledChanged += CardControl_IsEnabledChanged;\n\n        _comboBox.SelectionChanged += ComboBox_SelectionChanged;\n        _comboBox.MinWidth = 150;\n\n        _cardHeaderControl.Accessory = _comboBox;\n        _cardControl.Header = _cardHeaderControl;\n        _cardControl.Margin = new(0, 0, 0, 8);\n\n        Content = _cardControl;\n    }\n\n    private void CardControl_IsEnabledChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsEnabled)\n            return;\n\n        _comboBox.SelectionChanged -= ComboBox_SelectionChanged;\n        _comboBox.ClearItems();\n        _comboBox.SelectionChanged += ComboBox_SelectionChanged;\n    }\n\n    private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) => OnChanged?.Invoke(this, EventArgs.Empty);\n\n    public void SetItems(IEnumerable<T> items, T selectedItem, Func<T, string>? displayValueConverter)\n    {\n        _comboBox.SelectionChanged -= ComboBox_SelectionChanged;\n        _comboBox.SetItems(items, selectedItem, displayValueConverter);\n        _comboBox.SelectionChanged += ComboBox_SelectionChanged;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/RGB/RGBKeyboardBacklightBrightnessCardControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.RGB;\n\npublic class RGBKeyboardBacklightBrightnessCardControl : AbstractComboBoxRGBKeyboardCardControl<RGBKeyboardBacklightBrightness>\n{\n    public RGBKeyboardBacklightBrightnessCardControl()\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.RGBKeyboardBacklightBrightnessCardControl_Brightness;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/RGB/RGBKeyboardBacklightControl.xaml",
    "content": "﻿<controls:AbstractRefreshingControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.RGB.RGBKeyboardBacklightControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:lib=\"clr-namespace:LenovoLegionToolkit.Lib;assembly=LenovoLegionToolkit.Lib\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:rgb=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.RGB\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\">\n\n    <Grid>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"*\" SharedSizeGroup=\"A\" />\n            <ColumnDefinition Width=\"*\" SharedSizeGroup=\"A\" />\n            <ColumnDefinition Width=\"*\" SharedSizeGroup=\"A\" />\n            <ColumnDefinition Width=\"*\" SharedSizeGroup=\"A\" />\n        </Grid.ColumnDefinitions>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <custom:InfoBar\n            x:Name=\"_vantageWarningInfoBar\"\n            Title=\"{x:Static resources:Resource.Keyboard_VantageEnabledWarning_Title}\"\n            Grid.Row=\"0\"\n            Grid.Column=\"0\"\n            Grid.ColumnSpan=\"4\"\n            Margin=\"0,0,8,24\"\n            IsClosable=\"False\"\n            IsOpen=\"False\"\n            Message=\"{x:Static resources:Resource.Keyboard_VantageEnabledWarning_Message}\"\n            Severity=\"Error\" />\n\n        <Grid\n            Grid.Row=\"1\"\n            Grid.Column=\"0\"\n            Grid.ColumnSpan=\"4\"\n            Margin=\"0,0,0,24\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" SharedSizeGroup=\"A\" />\n                <ColumnDefinition Width=\"*\" SharedSizeGroup=\"A\" />\n                <ColumnDefinition Width=\"*\" SharedSizeGroup=\"A\" />\n                <ColumnDefinition Width=\"*\" SharedSizeGroup=\"A\" />\n                <ColumnDefinition Width=\"*\" SharedSizeGroup=\"A\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:Button\n                x:Name=\"_offPresetButton\"\n                Grid.Column=\"0\"\n                Height=\"36\"\n                Margin=\"0,0,8,0\"\n                HorizontalAlignment=\"Stretch\"\n                Click=\"PresetButton_Click\"\n                Content=\"{x:Static resources:Resource.RGBKeyboardBacklightControl_PresetOff}\"\n                Tag=\"{x:Static lib:RGBKeyboardBacklightPreset.Off}\" />\n            <wpfui:Button\n                x:Name=\"_preset1Button\"\n                Grid.Column=\"1\"\n                Height=\"36\"\n                Margin=\"0,0,8,0\"\n                HorizontalAlignment=\"Stretch\"\n                Click=\"PresetButton_Click\"\n                Content=\"{x:Static resources:Resource.RGBKeyboardBacklightControl_Preset1}\"\n                Tag=\"{x:Static lib:RGBKeyboardBacklightPreset.One}\" />\n            <wpfui:Button\n                x:Name=\"_preset2Button\"\n                Grid.Column=\"2\"\n                Height=\"36\"\n                Margin=\"0,0,8,0\"\n                HorizontalAlignment=\"Stretch\"\n                Click=\"PresetButton_Click\"\n                Content=\"{x:Static resources:Resource.RGBKeyboardBacklightControl_Preset2}\"\n                Tag=\"{x:Static lib:RGBKeyboardBacklightPreset.Two}\" />\n            <wpfui:Button\n                x:Name=\"_preset3Button\"\n                Grid.Column=\"3\"\n                Height=\"36\"\n                Margin=\"0,0,8,0\"\n                HorizontalAlignment=\"Stretch\"\n                Click=\"PresetButton_Click\"\n                Content=\"{x:Static resources:Resource.RGBKeyboardBacklightControl_Preset3}\"\n                Tag=\"{x:Static lib:RGBKeyboardBacklightPreset.Three}\" />\n            <wpfui:Button\n                x:Name=\"_preset4Button\"\n                Grid.Column=\"4\"\n                Height=\"36\"\n                Margin=\"0,0,8,0\"\n                HorizontalAlignment=\"Stretch\"\n                Click=\"PresetButton_Click\"\n                Content=\"{x:Static resources:Resource.RGBKeyboardBacklightControl_Preset4}\"\n                Tag=\"{x:Static lib:RGBKeyboardBacklightPreset.Four}\" />\n        </Grid>\n\n        <rgb:RGBKeyboardBacklightBrightnessCardControl\n            x:Name=\"_brightnessControl\"\n            Grid.Row=\"2\"\n            Grid.Column=\"0\"\n            Grid.ColumnSpan=\"4\"\n            Margin=\"0,0,8,0\"\n            OnChanged=\"CardControl_Changed\" />\n        <rgb:RGBKeyboardBacklightEffectCardControl\n            x:Name=\"_effectControl\"\n            Grid.Row=\"3\"\n            Grid.Column=\"0\"\n            Grid.ColumnSpan=\"4\"\n            Margin=\"0,0,8,0\"\n            OnChanged=\"CardControl_Changed\" />\n        <rgb:RGBKeyboardBacklightSpeedCardControl\n            x:Name=\"_speedControl\"\n            Grid.Row=\"4\"\n            Grid.Column=\"0\"\n            Grid.ColumnSpan=\"4\"\n            Margin=\"0,0,8,0\"\n            OnChanged=\"CardControl_Changed\" />\n\n        <custom:CardControl\n            x:Name=\"_zone1Control\"\n            Grid.Row=\"5\"\n            Grid.Column=\"0\"\n            Margin=\"0,0,8,8\"\n            VerticalAlignment=\"Top\"\n            Icon=\"Color24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.RGBKeyboardBacklightControl_Zone1}\" />\n            </custom:CardControl.Header>\n            <custom:CardControl.ContextMenu>\n                <ContextMenu>\n                    <!--  ReSharper disable once Xaml.RedundantResource  -->\n                    <wpfui:MenuItem\n                        Click=\"SynchroniseZonesMenuItem_Click\"\n                        Header=\"Synchronise zones\"\n                        SymbolIcon=\"ArrowsBidirectional24\" />\n                </ContextMenu>\n            </custom:CardControl.ContextMenu>\n            <controls:ColorPickerControl x:Name=\"_zone1ColorPicker\" ColorChangedDelayed=\"CardControl_Changed\" />\n        </custom:CardControl>\n\n        <custom:CardControl\n            x:Name=\"_zone2Control\"\n            Grid.Row=\"5\"\n            Grid.Column=\"1\"\n            Margin=\"0,0,8,8\"\n            VerticalAlignment=\"Top\"\n            Icon=\"Color24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.RGBKeyboardBacklightControl_Zone2}\" />\n            </custom:CardControl.Header>\n            <custom:CardControl.ContextMenu>\n                <ContextMenu>\n                    <!--  ReSharper disable once Xaml.RedundantResource  -->\n                    <wpfui:MenuItem\n                        Click=\"SynchroniseZonesMenuItem_Click\"\n                        Header=\"Synchronise zones\"\n                        SymbolIcon=\"ArrowsBidirectional24\" />\n                </ContextMenu>\n            </custom:CardControl.ContextMenu>\n            <controls:ColorPickerControl x:Name=\"_zone2ColorPicker\" ColorChangedDelayed=\"CardControl_Changed\" />\n        </custom:CardControl>\n\n        <custom:CardControl\n            x:Name=\"_zone3Control\"\n            Grid.Row=\"5\"\n            Grid.Column=\"2\"\n            Margin=\"0,0,8,8\"\n            VerticalAlignment=\"Top\"\n            Icon=\"Color24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.RGBKeyboardBacklightControl_Zone3}\" />\n            </custom:CardControl.Header>\n            <custom:CardControl.ContextMenu>\n                <ContextMenu>\n                    <!--  ReSharper disable once Xaml.RedundantResource  -->\n                    <wpfui:MenuItem\n                        Click=\"SynchroniseZonesMenuItem_Click\"\n                        Header=\"Synchronise zones\"\n                        SymbolIcon=\"ArrowsBidirectional24\" />\n                </ContextMenu>\n            </custom:CardControl.ContextMenu>\n            <controls:ColorPickerControl x:Name=\"_zone3ColorPicker\" ColorChangedDelayed=\"CardControl_Changed\" />\n        </custom:CardControl>\n\n        <custom:CardControl\n            x:Name=\"_zone4Control\"\n            Grid.Row=\"5\"\n            Grid.Column=\"3\"\n            Margin=\"0,0,8,8\"\n            VerticalAlignment=\"Top\"\n            Icon=\"Color24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.RGBKeyboardBacklightControl_Zone4}\" />\n            </custom:CardControl.Header>\n            <custom:CardControl.ContextMenu>\n                <ContextMenu>\n                    <!--  ReSharper disable once Xaml.RedundantResource  -->\n                    <wpfui:MenuItem\n                        Click=\"SynchroniseZonesMenuItem_Click\"\n                        Header=\"Synchronise zones\"\n                        SymbolIcon=\"ArrowsBidirectional24\" />\n                </ContextMenu>\n            </custom:CardControl.ContextMenu>\n            <controls:ColorPickerControl x:Name=\"_zone4ColorPicker\" ColorChangedDelayed=\"CardControl_Changed\" />\n        </custom:CardControl>\n\n    </Grid>\n\n</controls:AbstractRefreshingControl>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/RGB/RGBKeyboardBacklightControl.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing Button = Wpf.Ui.Controls.Button;\nusing MenuItem = System.Windows.Controls.MenuItem;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.RGB;\n\npublic partial class RGBKeyboardBacklightControl\n{\n    private Button[] PresetButtons => [_offPresetButton, _preset1Button, _preset2Button, _preset3Button, _preset4Button];\n\n    private ColorPickerControl[] Zones => [_zone1ColorPicker, _zone2ColorPicker, _zone3ColorPicker, _zone4ColorPicker];\n\n    private readonly RGBKeyboardBacklightController _controller = IoCContainer.Resolve<RGBKeyboardBacklightController>();\n    private readonly RGBKeyboardBacklightListener _listener = IoCContainer.Resolve<RGBKeyboardBacklightListener>();\n    private readonly VantageDisabler _vantageDisabler = IoCContainer.Resolve<VantageDisabler>();\n\n    protected override bool DisablesWhileRefreshing => false;\n\n    public RGBKeyboardBacklightControl()\n    {\n        InitializeComponent();\n\n        _listener.Changed += Listener_Changed;\n\n        SizeChanged += RGBKeyboardBacklightControl_SizeChanged;\n\n        MessagingCenter.Subscribe<RGBKeyboardBacklightChangedMessage>(this, () => Dispatcher.InvokeTask(async () =>\n        {\n            if (!IsVisible)\n                return;\n\n            await RefreshAsync();\n        }));\n    }\n\n    private void Listener_Changed(object? sender, EventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (!IsLoaded || !IsVisible)\n            return;\n\n        await RefreshAsync();\n    });\n\n    private void RGBKeyboardBacklightControl_SizeChanged(object sender, SizeChangedEventArgs e)\n    {\n        if (!e.WidthChanged)\n            return;\n\n        if (e.NewSize.Width > 950)\n            Expand();\n        else\n            Collapse();\n    }\n\n    private async void PresetButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (sender is not Button presetButton || presetButton.Appearance == ControlAppearance.Primary)\n            return;\n\n        var selectedPreset = (RGBKeyboardBacklightPreset)presetButton.Tag;\n        var state = await _controller.GetStateAsync();\n        await _controller.SetStateAsync(new(selectedPreset, state.Presets));\n\n        await RefreshAsync();\n    }\n\n    private async void SynchroniseZonesMenuItem_Click(object sender, RoutedEventArgs e)\n    {\n        if (sender is not MenuItem { Parent: ContextMenu { PlacementTarget: CardControl { Content: ColorPickerControl pickerControl } } })\n            return;\n\n        foreach (var zone in Zones)\n            zone.SelectedColor = pickerControl.SelectedColor;\n\n        await SaveState();\n        await RefreshAsync();\n    }\n\n    private async void CardControl_Changed(object? sender, EventArgs e)\n    {\n        await SaveState();\n        await RefreshAsync();\n    }\n\n    protected override async Task OnRefreshAsync()\n    {\n        if (!await _controller.IsSupportedAsync())\n            throw new InvalidOperationException(\"RGB Keyboard does not seem to be supported\");\n\n        var vantageStatus = await _vantageDisabler.GetStatusAsync();\n        if (vantageStatus == SoftwareStatus.Enabled)\n        {\n            _vantageWarningInfoBar.IsOpen = true;\n\n            foreach (var presetButton in PresetButtons)\n                presetButton.IsEnabled = false;\n\n            _brightnessControl.IsEnabled = false;\n            _effectControl.IsEnabled = false;\n\n            _zone1ColorPicker.Visibility = Visibility.Hidden;\n            _zone2ColorPicker.Visibility = Visibility.Hidden;\n            _zone3ColorPicker.Visibility = Visibility.Hidden;\n            _zone4ColorPicker.Visibility = Visibility.Hidden;\n\n            _speedControl.IsEnabled = false;\n            _zone1Control.IsEnabled = false;\n            _zone2Control.IsEnabled = false;\n            _zone3Control.IsEnabled = false;\n            _zone4Control.IsEnabled = false;\n\n            Visibility = Visibility.Visible;\n\n            return;\n        }\n\n        var state = await _controller.GetStateAsync();\n\n        foreach (var presetButton in PresetButtons)\n        {\n            var buttonPreset = (RGBKeyboardBacklightPreset)presetButton.Tag;\n            var selected = state.SelectedPreset == buttonPreset;\n            presetButton.Appearance = selected ? ControlAppearance.Primary : ControlAppearance.Secondary;\n        }\n\n        _vantageWarningInfoBar.IsOpen = false;\n\n        foreach (var presetButton in PresetButtons)\n            presetButton.IsEnabled = true;\n\n        if (state.SelectedPreset == RGBKeyboardBacklightPreset.Off)\n        {\n            _effectControl.IsEnabled = false;\n            _speedControl.IsEnabled = false;\n            _brightnessControl.IsEnabled = false;\n\n            _zone1ColorPicker.Visibility = Visibility.Hidden;\n            _zone2ColorPicker.Visibility = Visibility.Hidden;\n            _zone3ColorPicker.Visibility = Visibility.Hidden;\n            _zone4ColorPicker.Visibility = Visibility.Hidden;\n\n            _zone1Control.IsEnabled = false;\n            _zone2Control.IsEnabled = false;\n            _zone3Control.IsEnabled = false;\n            _zone4Control.IsEnabled = false;\n\n            return;\n        }\n\n        var preset = state.Presets.GetValueOrDefault(state.SelectedPreset, RGBKeyboardBacklightBacklightPresetDescription.Default);\n\n        var speedEnabled = preset.Effect is not RGBKeyboardBacklightEffect.Static;\n        var zonesEnabled = preset.Effect is RGBKeyboardBacklightEffect.Static or RGBKeyboardBacklightEffect.Breath;\n\n        _brightnessControl.SetItems(Enum.GetValues<RGBKeyboardBacklightBrightness>(), preset.Brightness, v => v.GetDisplayName());\n        _effectControl.SetItems(Enum.GetValues<RGBKeyboardBacklightEffect>(), preset.Effect, v => v.GetDisplayName());\n        if (speedEnabled)\n            _speedControl.SetItems(Enum.GetValues<RGBKeyboardBacklightSpeed>(), preset.Speed, v => v.GetDisplayName());\n\n        if (zonesEnabled)\n        {\n            _zone1ColorPicker.SelectedColor = preset.Zone1.ToColor();\n            _zone2ColorPicker.SelectedColor = preset.Zone2.ToColor();\n            _zone3ColorPicker.SelectedColor = preset.Zone3.ToColor();\n            _zone4ColorPicker.SelectedColor = preset.Zone4.ToColor();\n\n            _zone1ColorPicker.Visibility = Visibility.Visible;\n            _zone2ColorPicker.Visibility = Visibility.Visible;\n            _zone3ColorPicker.Visibility = Visibility.Visible;\n            _zone4ColorPicker.Visibility = Visibility.Visible;\n        }\n        else\n        {\n            _zone1ColorPicker.Visibility = Visibility.Hidden;\n            _zone2ColorPicker.Visibility = Visibility.Hidden;\n            _zone3ColorPicker.Visibility = Visibility.Hidden;\n            _zone4ColorPicker.Visibility = Visibility.Hidden;\n        }\n\n        _brightnessControl.IsEnabled = true;\n        _effectControl.IsEnabled = true;\n        _speedControl.IsEnabled = speedEnabled;\n\n        _zone1Control.IsEnabled = zonesEnabled;\n        _zone2Control.IsEnabled = zonesEnabled;\n        _zone3Control.IsEnabled = zonesEnabled;\n        _zone4Control.IsEnabled = zonesEnabled;\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    private async Task SaveState()\n    {\n        var state = await _controller.GetStateAsync();\n\n        var selectedPreset = state.SelectedPreset;\n        var presets = state.Presets;\n\n        if (selectedPreset == RGBKeyboardBacklightPreset.Off)\n            return;\n\n        presets[selectedPreset] = new(_effectControl.SelectedItem,\n            _speedControl.SelectedItem,\n            _brightnessControl.SelectedItem,\n            _zone1ColorPicker.SelectedColor.ToRGBColor(),\n            _zone2ColorPicker.SelectedColor.ToRGBColor(),\n            _zone3ColorPicker.SelectedColor.ToRGBColor(),\n            _zone4ColorPicker.SelectedColor.ToRGBColor());\n\n        await _controller.SetStateAsync(new(selectedPreset, presets));\n    }\n\n    private void Expand()\n    {\n        Grid.SetColumn(_zone1Control, 0);\n        Grid.SetColumn(_zone2Control, 1);\n        Grid.SetColumn(_zone3Control, 2);\n        Grid.SetColumn(_zone4Control, 3);\n\n        Grid.SetRow(_zone1Control, 5);\n        Grid.SetRow(_zone2Control, 5);\n        Grid.SetRow(_zone3Control, 5);\n        Grid.SetRow(_zone4Control, 5);\n\n        Grid.SetColumnSpan(_zone1Control, 1);\n        Grid.SetColumnSpan(_zone2Control, 1);\n        Grid.SetColumnSpan(_zone3Control, 1);\n        Grid.SetColumnSpan(_zone4Control, 1);\n    }\n\n    private void Collapse()\n    {\n        Grid.SetColumn(_zone1Control, 0);\n        Grid.SetColumn(_zone2Control, 0);\n        Grid.SetColumn(_zone3Control, 0);\n        Grid.SetColumn(_zone4Control, 0);\n\n        Grid.SetRow(_zone1Control, 5);\n        Grid.SetRow(_zone2Control, 6);\n        Grid.SetRow(_zone3Control, 7);\n        Grid.SetRow(_zone4Control, 8);\n\n        Grid.SetColumnSpan(_zone1Control, 4);\n        Grid.SetColumnSpan(_zone2Control, 4);\n        Grid.SetColumnSpan(_zone3Control, 4);\n        Grid.SetColumnSpan(_zone4Control, 4);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/RGB/RGBKeyboardBacklightEffectCardControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.RGB;\n\npublic class RGBKeyboardBacklightEffectCardControl : AbstractComboBoxRGBKeyboardCardControl<RGBKeyboardBacklightEffect>\n{\n    public RGBKeyboardBacklightEffectCardControl()\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.RGBKeyboardBacklightEffectCardControl_Title;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/RGB/RGBKeyboardBacklightSpeedCardControl.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.RGB;\n\npublic class RGBKeyboardBacklightSpeedCardControl : AbstractComboBoxRGBKeyboardCardControl<RGBKeyboardBacklightSpeed>\n{\n    public RGBKeyboardBacklightSpeedCardControl()\n    {\n        Icon = SymbolRegular.Keyboard24;\n        Title = Resource.RGBKeyboardBacklightSpeedCardControl_Title;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumDeviceControl.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic class SpectrumDeviceControl : UserControl\n{\n    private readonly SpectrumDeviceFullAlternativeControl _fullAlternative = new();\n    private readonly SpectrumDeviceFullControl _full = new();\n    private readonly SpectrumDeviceKeyboardAndFrontControl _keyboardAndFront = new();\n    private readonly SpectrumDeviceKeyboardOnlyControl _keyboardOnly = new();\n\n    private readonly StackPanel _stackPanel = new();\n\n    public SpectrumDeviceControl()\n    {\n        Content = _stackPanel;\n    }\n\n    public void SetLayout(SpectrumLayout spectrumLayout, KeyboardLayout keyboardLayout, HashSet<ushort> keys)\n    {\n        _stackPanel.Children.Remove(_fullAlternative);\n        _stackPanel.Children.Remove(_full);\n        _stackPanel.Children.Remove(_keyboardAndFront);\n        _stackPanel.Children.Remove(_keyboardOnly);\n\n        switch (spectrumLayout)\n        {\n            case SpectrumLayout.FullAlternative:\n                _stackPanel.Children.Add(_fullAlternative);\n                _fullAlternative.SetLayout(keyboardLayout);\n                break;\n            case SpectrumLayout.Full:\n                _stackPanel.Children.Add(_full);\n                _full.SetLayout(keyboardLayout);\n                break;\n            case SpectrumLayout.KeyboardAndFront:\n                _stackPanel.Children.Add(_keyboardAndFront);\n                _keyboardAndFront.SetLayout(keyboardLayout);\n                break;\n            case SpectrumLayout.KeyboardOnly:\n                _stackPanel.Children.Add(_keyboardOnly);\n                _keyboardOnly.SetLayout(keyboardLayout);\n                break;\n        }\n\n        UpdateLayout();\n\n        foreach (var button in GetButtons())\n            button.Visibility = keys.Contains(button.KeyCode) ? Visibility.Visible : Visibility.Hidden;\n    }\n\n    public IEnumerable<SpectrumZoneControl> GetVisibleButtons() =>\n        GetButtons().Where(b => b.Visibility == Visibility.Visible);\n\n    private IEnumerable<SpectrumZoneControl> GetButtons() =>\n        this.GetVisibleChildrenOfType<SpectrumZoneControl>()\n            .Where(b => b.KeyCode > 0);\n\n    public IEnumerable<SpectrumZoneControl> GetVisibleKeyboardButtons() =>\n        GetKeyboardButtons().Where(b => b.Visibility == Visibility.Visible);\n\n    private IEnumerable<SpectrumZoneControl> GetKeyboardButtons() =>\n        this.GetVisibleChildrenOfType<SpectrumZoneControl>()\n            .Where(b => b.KeyCode is > 0 and < 0x100);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumDeviceFullAlternativeControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device.SpectrumDeviceFullAlternativeControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device\"\n    FlowDirection=\"LeftToRight\">\n\n    <Grid>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"24\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"24\" />\n        </Grid.RowDefinitions>\n\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n\n        <!--  Panel Logo  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"0\"\n            Grid.Column=\"6\"\n            Height=\"32\"\n            Margin=\"0,0,0,24\"\n            KeyCode=\"0x05DD\" />\n\n        <!--  Keyboard  -->\n        <controls:SpectrumKeyboardControl\n            x:Name=\"_keyboard\"\n            Grid.Row=\"2\"\n            Grid.RowSpan=\"5\"\n            Grid.Column=\"1\"\n            Grid.ColumnSpan=\"6\"\n            Padding=\"16\" />\n\n        <!--  Rear vents  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"1\"\n            Margin=\"2\"\n            KeyCode=\"0x03EA\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"2\"\n            Margin=\"2\"\n            KeyCode=\"0x03EB\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"3\"\n            Margin=\"2\"\n            KeyCode=\"0x03EC\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"4\"\n            Margin=\"2\"\n            KeyCode=\"0x03ED\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"5\"\n            Margin=\"2\"\n            KeyCode=\"0x03EE\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"6\"\n            Margin=\"2\"\n            KeyCode=\"0x03EF\" />\n\n        <!--  Left side  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"2\"\n            Grid.Column=\"0\"\n            Height=\"24\"\n            Margin=\"2\"\n            VerticalAlignment=\"Top\"\n            KeyCode=\"0x03E9\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"5\"\n            Grid.Column=\"0\"\n            Margin=\"2\"\n            KeyCode=\"0x01F5\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"6\"\n            Grid.Column=\"0\"\n            Margin=\"2\"\n            KeyCode=\"0x01F6\" />\n\n        <!--  Right side  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"2\"\n            Grid.Column=\"7\"\n            Height=\"24\"\n            Margin=\"2\"\n            VerticalAlignment=\"Top\"\n            KeyCode=\"0x03F0\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"5\"\n            Grid.Column=\"7\"\n            Margin=\"2\"\n            KeyCode=\"0x01FE\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"6\"\n            Grid.Column=\"7\"\n            Margin=\"2\"\n            KeyCode=\"0x01FD\" />\n\n        <!--  Front  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"1\"\n            Margin=\"2\"\n            KeyCode=\"0x01F7\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"2\"\n            Margin=\"2\"\n            KeyCode=\"0x01F8\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"3\"\n            Margin=\"2\"\n            KeyCode=\"0x01F9\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"4\"\n            Margin=\"2\"\n            KeyCode=\"0x01FA\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"5\"\n            Margin=\"2\"\n            KeyCode=\"0x01FB\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"6\"\n            Margin=\"2\"\n            KeyCode=\"0x01FC\" />\n\n    </Grid>\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumDeviceFullAlternativeControl.xaml.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic partial class SpectrumDeviceFullAlternativeControl\n{\n    public SpectrumDeviceFullAlternativeControl()\n    {\n        InitializeComponent();\n    }\n\n    public void SetLayout(KeyboardLayout keyboardLayout)\n    {\n        _keyboard.SetLayout(keyboardLayout);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumDeviceFullControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device.SpectrumDeviceFullControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device\"\n    FlowDirection=\"LeftToRight\">\n\n    <Grid>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"24\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"24\" />\n        </Grid.RowDefinitions>\n\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n\n        <!--  Panel Logo  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"0\"\n            Grid.Column=\"6\"\n            Height=\"32\"\n            Margin=\"0,0,0,24\"\n            KeyCode=\"0x05DD\" />\n\n        <!--  Keyboard  -->\n        <controls:SpectrumKeyboardControl\n            x:Name=\"_keyboard\"\n            Grid.Row=\"2\"\n            Grid.RowSpan=\"5\"\n            Grid.Column=\"1\"\n            Grid.ColumnSpan=\"6\"\n            Padding=\"16\" />\n\n        <!--  Rear vents  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"1\"\n            Margin=\"2\"\n            KeyCode=\"0x03EB\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"2\"\n            Margin=\"2\"\n            KeyCode=\"0x03EC\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"5\"\n            Margin=\"2\"\n            KeyCode=\"0x03ED\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"6\"\n            Margin=\"2\"\n            KeyCode=\"0x03EE\" />\n\n        <!--  Left side  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"2\"\n            Grid.Column=\"0\"\n            Margin=\"2\"\n            KeyCode=\"0x03EA\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"3\"\n            Grid.Column=\"0\"\n            Margin=\"2\"\n            KeyCode=\"0x03E9\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"5\"\n            Grid.Column=\"0\"\n            Margin=\"2\"\n            KeyCode=\"0x01F5\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"6\"\n            Grid.Column=\"0\"\n            Margin=\"2\"\n            KeyCode=\"0x01F6\" />\n\n        <!--  Right side  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"2\"\n            Grid.Column=\"7\"\n            Margin=\"2\"\n            KeyCode=\"0x03EF\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"3\"\n            Grid.Column=\"7\"\n            Margin=\"2\"\n            KeyCode=\"0x03F0\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"5\"\n            Grid.Column=\"7\"\n            Margin=\"2\"\n            KeyCode=\"0x01FE\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"6\"\n            Grid.Column=\"7\"\n            Margin=\"2\"\n            KeyCode=\"0x01FD\" />\n\n        <!--  Front  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"1\"\n            Margin=\"2\"\n            KeyCode=\"0x01F7\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"2\"\n            Margin=\"2\"\n            KeyCode=\"0x01F8\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"3\"\n            Margin=\"2\"\n            KeyCode=\"0x01F9\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"4\"\n            Margin=\"2\"\n            KeyCode=\"0x01FA\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"5\"\n            Margin=\"2\"\n            KeyCode=\"0x01FB\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"7\"\n            Grid.Column=\"6\"\n            Margin=\"2\"\n            KeyCode=\"0x01FC\" />\n\n    </Grid>\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumDeviceFullControl.xaml.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic partial class SpectrumDeviceFullControl\n{\n    public SpectrumDeviceFullControl()\n    {\n        InitializeComponent();\n    }\n\n    public void SetLayout(KeyboardLayout keyboardLayout)\n    {\n        _keyboard.SetLayout(keyboardLayout);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumDeviceKeyboardAndFrontControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device.SpectrumDeviceKeyboardAndFrontControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device\"\n    FlowDirection=\"LeftToRight\">\n\n    <Grid>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"24\" />\n        </Grid.RowDefinitions>\n\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n\n        <!--  Keyboard  -->\n        <controls:SpectrumKeyboardControl\n            x:Name=\"_keyboard\"\n            Grid.Row=\"0\"\n            Grid.Column=\"0\"\n            Grid.ColumnSpan=\"6\"\n            Padding=\"0,0,0,16\" />\n\n        <!--  Front  -->\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"0\"\n            Margin=\"2\"\n            KeyCode=\"0x01F5\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"1\"\n            Margin=\"2\"\n            KeyCode=\"0x01F6\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"2\"\n            Margin=\"2\"\n            KeyCode=\"0x01F7\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"3\"\n            Margin=\"2\"\n            KeyCode=\"0x01F8\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"4\"\n            Margin=\"2\"\n            KeyCode=\"0x01F9\" />\n        <controls:SpectrumZoneControl\n            Grid.Row=\"1\"\n            Grid.Column=\"5\"\n            Margin=\"2\"\n            KeyCode=\"0x01FA\" />\n\n    </Grid>\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumDeviceKeyboardAndFrontControl.xaml.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic partial class SpectrumDeviceKeyboardAndFrontControl\n{\n    public SpectrumDeviceKeyboardAndFrontControl()\n    {\n        InitializeComponent();\n    }\n\n    public void SetLayout(KeyboardLayout keyboardLayout)\n    {\n        _keyboard.SetLayout(keyboardLayout);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumDeviceKeyboardOnlyControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device.SpectrumDeviceKeyboardOnlyControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device\"\n    FlowDirection=\"LeftToRight\">\n\n    <!--  Keyboard  -->\n    <controls:SpectrumKeyboardControl x:Name=\"_keyboard\" />\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumDeviceKeyboardOnlyControl.xaml.cs",
    "content": "﻿using LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic partial class SpectrumDeviceKeyboardOnlyControl\n{\n    public SpectrumDeviceKeyboardOnlyControl()\n    {\n        InitializeComponent();\n    }\n\n    public void SetLayout(KeyboardLayout keyboardLayout)\n    {\n        _keyboard.SetLayout(keyboardLayout);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumKeyboardANSIControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device.SpectrumKeyboardANSIControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device\">\n\n    <Grid>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n\n        <StackPanel\n            Grid.Row=\"0\"\n            Grid.Column=\"0\"\n            Orientation=\"Horizontal\">\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x01\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x02\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x03\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x04\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x05\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x06\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x07\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x08\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x09\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0A\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0B\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0C\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0D\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0E\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0F\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x10\" />\n        </StackPanel>\n\n        <StackPanel\n            Grid.Row=\"0\"\n            Grid.Column=\"1\"\n            Orientation=\"Horizontal\">\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x11\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x12\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x13\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x14\" />\n        </StackPanel>\n\n        <Grid Grid.Row=\"1\" Grid.Column=\"0\">\n\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <StackPanel Grid.Row=\"0\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"24\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x16\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x17\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x18\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x19\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1B\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1C\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1D\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1E\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x20\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x21\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x22\" />\n                <controls:SpectrumZoneControl\n                    Width=\"52\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x38\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"1\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"44\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x40\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x42\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x43\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x44\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x45\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x46\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x47\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x48\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x49\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x4A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x4B\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x4C\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x4D\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x4E\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"2\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"56\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x55\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x6D\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x6E\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x58\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x59\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x5A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x71\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x72\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x5B\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x5C\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x5D\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x5F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"56\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x77\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"3\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"74\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x6A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x82\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x83\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x6F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x70\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x87\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x88\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x73\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x74\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x75\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x76\" />\n                <controls:SpectrumZoneControl\n                    Width=\"74\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x8D\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"4\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"38\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x7F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x80\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x96\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x97\" />\n                <controls:SpectrumZoneControl\n                    Width=\"176\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x98\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9B\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    Visibility=\"Hidden\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9D\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    Visibility=\"Hidden\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"5\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"398\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    Visibility=\"Hidden\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9C\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0xA1\" />\n            </StackPanel>\n\n        </Grid>\n\n        <Grid Grid.Row=\"1\" Grid.Column=\"1\">\n\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n            </Grid.RowDefinitions>\n\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"36\" />\n                <ColumnDefinition Width=\"36\" />\n                <ColumnDefinition Width=\"36\" />\n                <ColumnDefinition Width=\"36\" />\n            </Grid.ColumnDefinitions>\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x26\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x27\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x28\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"3\"\n                Margin=\"2\"\n                KeyCode=\"0x29\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x4F\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x50\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x51\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.RowSpan=\"2\"\n                Grid.Column=\"3\"\n                Margin=\"2\"\n                KeyCode=\"0x68\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"2\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x79\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"2\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x7B\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"2\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x7C\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x8E\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x90\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x92\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.RowSpan=\"2\"\n                Grid.Column=\"3\"\n                Margin=\"2\"\n                KeyCode=\"0xA7\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"4\"\n                Grid.Column=\"0\"\n                Grid.ColumnSpan=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0xA3\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"4\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0xA5\" />\n        </Grid>\n\n    </Grid>\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumKeyboardANSIControl.xaml.cs",
    "content": "﻿namespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic partial class SpectrumKeyboardANSIControl\n{\n    public SpectrumKeyboardANSIControl()\n    {\n        InitializeComponent();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumKeyboardControl.cs",
    "content": "﻿using System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic class SpectrumKeyboardControl : UserControl\n{\n    private readonly SpectrumKeyboardANSIControl _ansi = new();\n    private readonly SpectrumKeyboardISOControl _iso = new();\n    private readonly SpectrumKeyboardJisControl _jis = new();\n\n    private readonly StackPanel _stackPanel = new();\n\n    public SpectrumKeyboardControl()\n    {\n        Content = _stackPanel;\n    }\n\n    public void SetLayout(KeyboardLayout keyboardLayout)\n    {\n        _stackPanel.Children.Remove(_ansi);\n        _stackPanel.Children.Remove(_iso);\n        _stackPanel.Children.Remove(_jis);\n\n        switch (keyboardLayout)\n        {\n            case KeyboardLayout.Ansi:\n                _stackPanel.Children.Add(_ansi);\n                break;\n            case KeyboardLayout.Iso:\n                _stackPanel.Children.Add(_iso);\n                break;\n            case KeyboardLayout.Jis:\n                _stackPanel.Children.Add(_jis);\n                break;\n        }\n\n        UpdateLayout();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumKeyboardISOControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device.SpectrumKeyboardISOControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device\">\n\n    <Grid>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n\n        <StackPanel\n            Grid.Row=\"0\"\n            Grid.Column=\"0\"\n            Orientation=\"Horizontal\">\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x01\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x02\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x03\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x04\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x05\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x06\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x07\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x08\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x09\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0A\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0B\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0C\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0D\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0E\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0F\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x10\" />\n        </StackPanel>\n\n        <StackPanel\n            Grid.Row=\"0\"\n            Grid.Column=\"1\"\n            Orientation=\"Horizontal\">\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x11\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x12\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x13\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x14\" />\n        </StackPanel>\n\n        <Grid Grid.Row=\"1\" Grid.Column=\"0\">\n\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <StackPanel Grid.Row=\"0\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"24\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x16\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x17\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x18\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x19\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1B\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1C\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1D\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1E\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x20\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x21\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x22\" />\n                <controls:SpectrumZoneControl\n                    Width=\"52\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x38\" />\n            </StackPanel>\n\n            <Grid Row=\"1\">\n\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <StackPanel\n                    Grid.Row=\"0\"\n                    Grid.Column=\"0\"\n                    Orientation=\"Horizontal\">\n                    <controls:SpectrumZoneControl\n                        Width=\"44\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x40\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x42\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x43\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x44\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x45\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x46\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x47\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x48\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x49\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x4A\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x4B\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x4C\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"36\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x4D\" />\n                </StackPanel>\n\n                <StackPanel\n                    Grid.Row=\"1\"\n                    Grid.Column=\"0\"\n                    Orientation=\"Horizontal\">\n                    <controls:SpectrumZoneControl\n                        Width=\"56\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x55\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x6D\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x6E\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x58\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x59\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5A\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x71\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x72\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5B\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5C\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5D\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5F\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"24\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0xA8\" />\n                </StackPanel>\n\n                <StackPanel\n                    Grid.Row=\"0\"\n                    Grid.RowSpan=\"2\"\n                    Grid.Column=\"1\"\n                    Orientation=\"Horizontal\">\n\n                    <controls:SpectrumZoneControl\n                        Width=\"28\"\n                        Height=\"68\"\n                        Margin=\"2\"\n                        KeyCode=\"0x77\" />\n\n                </StackPanel>\n\n            </Grid>\n\n            <StackPanel Grid.Row=\"2\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"38\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x6A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x4E\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x82\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x83\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x6F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x70\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x87\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x88\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x73\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x74\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x75\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x76\" />\n                <controls:SpectrumZoneControl\n                    Width=\"74\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x8D\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"3\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"38\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x7F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x80\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x96\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x97\" />\n                <controls:SpectrumZoneControl\n                    Width=\"176\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x98\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9B\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    Visibility=\"Hidden\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9D\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    Visibility=\"Hidden\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"4\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"398\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    Visibility=\"Hidden\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9C\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0xA1\" />\n            </StackPanel>\n\n        </Grid>\n\n        <Grid Grid.Row=\"1\" Grid.Column=\"1\">\n\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n            </Grid.RowDefinitions>\n\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"36\" />\n                <ColumnDefinition Width=\"36\" />\n                <ColumnDefinition Width=\"36\" />\n                <ColumnDefinition Width=\"36\" />\n            </Grid.ColumnDefinitions>\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x26\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x27\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x28\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"3\"\n                Margin=\"2\"\n                KeyCode=\"0x29\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x4F\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x50\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x51\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.RowSpan=\"2\"\n                Grid.Column=\"3\"\n                Margin=\"2\"\n                KeyCode=\"0x68\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"2\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x79\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"2\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x7B\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"2\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x7C\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x8E\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x90\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x92\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.RowSpan=\"2\"\n                Grid.Column=\"3\"\n                Margin=\"2\"\n                KeyCode=\"0xA7\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"4\"\n                Grid.Column=\"0\"\n                Grid.ColumnSpan=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0xA3\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"4\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0xA5\" />\n        </Grid>\n\n    </Grid>\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumKeyboardISOControl.xaml.cs",
    "content": "﻿namespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic partial class SpectrumKeyboardISOControl\n{\n    public SpectrumKeyboardISOControl()\n    {\n        InitializeComponent();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumKeyboardJisControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device.SpectrumKeyboardJisControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device\">\n\n    <Grid>\n\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n\n        <StackPanel\n            Grid.Row=\"0\"\n            Grid.Column=\"0\"\n            Orientation=\"Horizontal\">\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x01\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x02\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x03\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x04\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x05\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x06\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x07\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x08\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x09\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0A\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0B\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0C\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0D\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0E\" />\n            <controls:SpectrumZoneControl\n                Width=\"28\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x0F\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x10\" />\n        </StackPanel>\n\n        <StackPanel\n            Grid.Row=\"0\"\n            Grid.Column=\"1\"\n            Orientation=\"Horizontal\">\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x11\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x12\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x13\" />\n            <controls:SpectrumZoneControl\n                Width=\"32\"\n                Height=\"24\"\n                Margin=\"2\"\n                KeyCode=\"0x14\" />\n        </StackPanel>\n\n        <Grid Grid.Row=\"1\" Grid.Column=\"0\">\n\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <StackPanel Grid.Row=\"0\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"24\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x16\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x17\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x18\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x19\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1B\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1C\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1D\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1E\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x1F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x20\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x21\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x22\" />\n                <controls:SpectrumZoneControl\n                    Width=\"24\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0xA8\" />\n                <controls:SpectrumZoneControl\n                    Width=\"24\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x38\" />\n            </StackPanel>\n\n            <Grid Row=\"1\">\n\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <StackPanel\n                    Grid.Row=\"0\"\n                    Grid.Column=\"0\"\n                    Orientation=\"Horizontal\">\n                    <controls:SpectrumZoneControl\n                        Width=\"44\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x40\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x42\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x43\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x44\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x45\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x46\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x47\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x48\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x49\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x4A\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x4B\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x60\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"36\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x4C\" />\n                </StackPanel>\n\n                <StackPanel\n                    Grid.Row=\"1\"\n                    Grid.Column=\"0\"\n                    Orientation=\"Horizontal\">\n                    <controls:SpectrumZoneControl\n                        Width=\"56\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x55\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x6D\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x6E\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x58\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x59\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5A\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x71\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x72\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5B\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5C\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5D\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"32\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x5F\" />\n                    <controls:SpectrumZoneControl\n                        Width=\"24\"\n                        Height=\"32\"\n                        Margin=\"2\"\n                        KeyCode=\"0x4D\" />\n                </StackPanel>\n\n                <StackPanel\n                    Grid.Row=\"0\"\n                    Grid.RowSpan=\"2\"\n                    Grid.Column=\"1\"\n                    Orientation=\"Horizontal\">\n\n                    <controls:SpectrumZoneControl\n                        Width=\"28\"\n                        Height=\"68\"\n                        Margin=\"2\"\n                        KeyCode=\"0x77\" />\n\n                </StackPanel>\n\n            </Grid>\n\n            <StackPanel Grid.Row=\"2\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"38\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x6A\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x4E\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x82\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x83\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x6F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x70\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x87\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x88\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x73\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x74\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x75\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x76\" />\n                <controls:SpectrumZoneControl\n                    Width=\"74\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x8D\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"3\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"38\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x7F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x80\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x96\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x97\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0xA9\" />\n                <controls:SpectrumZoneControl\n                    Width=\"104\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x98\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0xAA\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0xAB\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9B\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    Visibility=\"Hidden\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9D\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    Visibility=\"Hidden\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"4\" Orientation=\"Horizontal\">\n                <controls:SpectrumZoneControl\n                    Width=\"398\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    Visibility=\"Hidden\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9C\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0x9F\" />\n                <controls:SpectrumZoneControl\n                    Width=\"32\"\n                    Height=\"32\"\n                    Margin=\"2\"\n                    KeyCode=\"0xA1\" />\n            </StackPanel>\n\n        </Grid>\n\n        <Grid Grid.Row=\"1\" Grid.Column=\"1\">\n\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n                <RowDefinition Height=\"36\" />\n            </Grid.RowDefinitions>\n\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"36\" />\n                <ColumnDefinition Width=\"36\" />\n                <ColumnDefinition Width=\"36\" />\n                <ColumnDefinition Width=\"36\" />\n            </Grid.ColumnDefinitions>\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x26\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x27\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x28\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"0\"\n                Grid.Column=\"3\"\n                Margin=\"2\"\n                KeyCode=\"0x29\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x4F\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x50\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x51\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"1\"\n                Grid.RowSpan=\"2\"\n                Grid.Column=\"3\"\n                Margin=\"2\"\n                KeyCode=\"0x68\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"2\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x79\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"2\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x7B\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"2\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x7C\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.Column=\"0\"\n                Margin=\"2\"\n                KeyCode=\"0x8E\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.Column=\"1\"\n                Margin=\"2\"\n                KeyCode=\"0x90\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0x92\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"3\"\n                Grid.RowSpan=\"2\"\n                Grid.Column=\"3\"\n                Margin=\"2\"\n                KeyCode=\"0xA7\" />\n\n            <controls:SpectrumZoneControl\n                Grid.Row=\"4\"\n                Grid.Column=\"0\"\n                Grid.ColumnSpan=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0xA3\" />\n            <controls:SpectrumZoneControl\n                Grid.Row=\"4\"\n                Grid.Column=\"2\"\n                Margin=\"2\"\n                KeyCode=\"0xA5\" />\n        </Grid>\n\n    </Grid>\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumKeyboardJisControl.xaml.cs",
    "content": "﻿namespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic partial class SpectrumKeyboardJisControl\n{\n    public SpectrumKeyboardJisControl()\n    {\n        InitializeComponent();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumZoneControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device.SpectrumZoneControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\">\n    <Grid>\n        <Border\n            x:Name=\"_background\"\n            HorizontalAlignment=\"Stretch\"\n            VerticalAlignment=\"Stretch\"\n            BorderThickness=\"4\"\n            CornerRadius=\"4\" />\n        <ToggleButton\n            x:Name=\"_button\"\n            HorizontalAlignment=\"Stretch\"\n            VerticalAlignment=\"Stretch\" />\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/Device/SpectrumZoneControl.xaml.cs",
    "content": "﻿using System.Windows.Media;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device;\n\npublic partial class SpectrumZoneControl\n{\n    private ushort _keyCode;\n\n    public ushort KeyCode\n    {\n        get => _keyCode;\n        set\n        {\n            _keyCode = value;\n\n#if DEBUG\n            _button.ToolTip = $\"0x{value:X2}\";\n#endif\n        }\n    }\n\n    public Color? Color\n    {\n        get => (_background.Background as SolidColorBrush)?.Color;\n        set\n        {\n            if (!value.HasValue)\n                _background.Background = null;\n            else if (_background.Background is SolidColorBrush brush)\n                brush.Color = value.Value;\n            else\n                _background.Background = new SolidColorBrush(value.Value);\n        }\n    }\n\n    public bool? IsChecked\n    {\n        get => _button.IsChecked;\n        set => _button.IsChecked = value;\n    }\n\n    public SpectrumZoneControl()\n    {\n        InitializeComponent();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/SpectrumKeyboardBacklightControl.xaml",
    "content": "﻿<controls:AbstractRefreshingControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.SpectrumKeyboardBacklightControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:device=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.Device\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:system=\"clr-namespace:System;assembly=System.Runtime\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\">\n    <StackPanel Margin=\"0,0,8,0\">\n\n        <custom:InfoBar\n            x:Name=\"_vantageWarningInfoBar\"\n            Title=\"{x:Static resources:Resource.Keyboard_VantageEnabledWarning_Title}\"\n            Margin=\"0,0,0,16\"\n            IsClosable=\"False\"\n            IsOpen=\"False\"\n            Message=\"{x:Static resources:Resource.Keyboard_VantageEnabledWarning_Message}\"\n            Severity=\"Error\" />\n\n        <StackPanel x:Name=\"_content\">\n\n            <custom:CardControl Margin=\"0,0,0,24\" Icon=\"BrightnessHigh24\">\n                <custom:CardControl.Header>\n                    <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_Brightness_Title}\" />\n                </custom:CardControl.Header>\n                <Slider\n                    x:Name=\"_brightnessSlider\"\n                    Width=\"200\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_Brightness_Title}\"\n                    IsSnapToTickEnabled=\"True\"\n                    Maximum=\"9\"\n                    Minimum=\"0\"\n                    TickFrequency=\"1\"\n                    TickPlacement=\"BottomRight\"\n                    ValueChanged=\"BrightnessSlider_OnValueChanged\" />\n            </custom:CardControl>\n\n            <Grid\n                Height=\"36\"\n                Margin=\"0,0,0,48\"\n                HorizontalAlignment=\"Stretch\">\n\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"8\" />\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"8\" />\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"8\" />\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"8\" />\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"8\" />\n                    <ColumnDefinition Width=\"*\" />\n                </Grid.ColumnDefinitions>\n\n                <Grid.Resources>\n                    <Style BasedOn=\"{StaticResource {x:Type ToggleButton}}\" TargetType=\"RadioButton\" />\n                </Grid.Resources>\n\n                <RadioButton\n                    x:Name=\"_profileButton1\"\n                    Grid.Column=\"0\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    AutomationProperties.HelpText=\"1\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_Preset}\"\n                    Click=\"ProfileButton_OnClick\"\n                    Content=\"1\"\n                    GroupName=\"profile\">\n                    <RadioButton.Tag>\n                        <system:Int32>1</system:Int32>\n                    </RadioButton.Tag>\n                </RadioButton>\n                <RadioButton\n                    x:Name=\"_profileButton2\"\n                    Grid.Column=\"2\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    AutomationProperties.HelpText=\"2\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_Preset}\"\n                    Click=\"ProfileButton_OnClick\"\n                    Content=\"2\"\n                    GroupName=\"profile\">\n                    <RadioButton.Tag>\n                        <system:Int32>2</system:Int32>\n                    </RadioButton.Tag>\n                </RadioButton>\n                <RadioButton\n                    x:Name=\"_profileButton3\"\n                    Grid.Column=\"4\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    AutomationProperties.HelpText=\"3\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_Preset}\"\n                    Click=\"ProfileButton_OnClick\"\n                    Content=\"3\"\n                    GroupName=\"profile\">\n                    <RadioButton.Tag>\n                        <system:Int32>3</system:Int32>\n                    </RadioButton.Tag>\n                </RadioButton>\n                <RadioButton\n                    x:Name=\"_profileButton4\"\n                    Grid.Column=\"6\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    AutomationProperties.HelpText=\"4\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_Preset}\"\n                    Click=\"ProfileButton_OnClick\"\n                    Content=\"4\"\n                    GroupName=\"profile\">\n                    <RadioButton.Tag>\n                        <system:Int32>4</system:Int32>\n                    </RadioButton.Tag>\n                </RadioButton>\n                <RadioButton\n                    x:Name=\"_profileButton5\"\n                    Grid.Column=\"8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    AutomationProperties.HelpText=\"5\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_Preset}\"\n                    Click=\"ProfileButton_OnClick\"\n                    Content=\"5\"\n                    GroupName=\"profile\">\n                    <RadioButton.Tag>\n                        <system:Int32>5</system:Int32>\n                    </RadioButton.Tag>\n                </RadioButton>\n                <RadioButton\n                    x:Name=\"_profileButton6\"\n                    Grid.Column=\"10\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    AutomationProperties.HelpText=\"6\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_Preset}\"\n                    Click=\"ProfileButton_OnClick\"\n                    Content=\"6\"\n                    GroupName=\"profile\">\n                    <RadioButton.Tag>\n                        <system:Int32>6</system:Int32>\n                    </RadioButton.Tag>\n                </RadioButton>\n\n            </Grid>\n\n            <Grid Margin=\"0,0,0,24\">\n\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"*\" />\n                </Grid.ColumnDefinitions>\n\n                <Border\n                    Grid.Column=\"1\"\n                    BorderBrush=\"{DynamicResource ControlElevationBorderBrush}\"\n                    BorderThickness=\"2\"\n                    CornerRadius=\"8\">\n\n                    <controls:SelectableControl Selected=\"SelectableControl_Selected\">\n                        <controls:SelectableControl.Stroke>\n                            <SolidColorBrush Color=\"{DynamicResource SystemAccentColorSecondary}\" />\n                        </controls:SelectableControl.Stroke>\n                        <controls:SelectableControl.Fill>\n                            <SolidColorBrush Opacity=\"0.25\" Color=\"{DynamicResource SystemAccentColorSecondary}\" />\n                        </controls:SelectableControl.Fill>\n\n                        <device:SpectrumDeviceControl\n                            x:Name=\"_device\"\n                            Padding=\"32\"\n                            HorizontalAlignment=\"Center\">\n                            <device:SpectrumDeviceControl.LayoutTransform>\n                                <ScaleTransform ScaleX=\"1\" ScaleY=\"1\" />\n                            </device:SpectrumDeviceControl.LayoutTransform>\n                        </device:SpectrumDeviceControl>\n                    </controls:SelectableControl>\n                </Border>\n\n                <StackPanel\n                    Grid.Column=\"2\"\n                    HorizontalAlignment=\"Center\"\n                    Orientation=\"Vertical\">\n\n                    <wpfui:Button\n                        Margin=\"0,0,0,8\"\n                        Click=\"SelectAll_Click\"\n                        FontSize=\"20\"\n                        Icon=\"SelectAllOn24\"\n                        ToolTip=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_SelectAll_ToolTip}\" />\n                    <wpfui:Button\n                        Margin=\"0,0,0,8\"\n                        Click=\"DeselectAll_Click\"\n                        FontSize=\"20\"\n                        Icon=\"SelectAllOff24\"\n                        ToolTip=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_DeselectAll_ToolTip}\" />\n                    <wpfui:Button\n                        Margin=\"0,0,0,8\"\n                        Click=\"SwitchKeyboardLayout_Click\"\n                        FontSize=\"20\"\n                        Icon=\"ArrowRepeatAll24\"\n                        ToolTip=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip}\" />\n\n                </StackPanel>\n\n            </Grid>\n\n            <Grid Margin=\"0,0,0,8\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <TextBlock\n                    Grid.Column=\"0\"\n                    Focusable=\"True\"\n                    FontSize=\"20\"\n                    FontWeight=\"Medium\"\n                    Text=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_Effects}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"1\"\n                    Margin=\"8,0,0,0\"\n                    Appearance=\"Secondary\"\n                    Click=\"ResetToDefaultButton_Click\"\n                    Icon=\"ArrowClockwise24\"\n                    ToolTip=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"2\"\n                    Margin=\"8,0,0,0\"\n                    Appearance=\"Secondary\"\n                    Click=\"ExportButton_Click\"\n                    Icon=\"ArrowExportLtr24\"\n                    ToolTip=\"{x:Static resources:Resource.Export}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"3\"\n                    Margin=\"8,0,0,0\"\n                    Appearance=\"Secondary\"\n                    Click=\"ImportButton_Click\"\n                    Icon=\"ArrowImport24\"\n                    ToolTip=\"{x:Static resources:Resource.Import}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"4\"\n                    Margin=\"8,0,0,0\"\n                    Appearance=\"Primary\"\n                    Click=\"AddEffectButton_Click\"\n                    Content=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_AddEffect}\"\n                    Icon=\"Add24\" />\n\n            </Grid>\n\n            <StackPanel Margin=\"0,8,0,16\">\n                <TextBlock\n                    x:Name=\"_noEffectsText\"\n                    Margin=\"0,8,0,32\"\n                    Text=\"{x:Static resources:Resource.SpectrumKeyboardBacklightControl_NoEffects_Text}\" />\n                <StackPanel x:Name=\"_effects\" />\n            </StackPanel>\n\n        </StackPanel>\n\n    </StackPanel>\n\n</controls:AbstractRefreshingControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/SpectrumKeyboardBacklightControl.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Media;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing LenovoLegionToolkit.WPF.Windows.KeyboardBacklight.Spectrum;\nusing Microsoft.Win32;\nusing NeoSmart.AsyncLock;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum;\n\npublic partial class SpectrumKeyboardBacklightControl\n{\n    private readonly ThrottleLastDispatcher _changeBrightnessDispatcher = new(TimeSpan.FromMilliseconds(250), \"ChangeBrightnessDispatcher\");\n    private readonly TimeSpan _refreshStateInterval = TimeSpan.FromMilliseconds(50);\n    private readonly AsyncLock _startStopAnimationLock = new();\n\n    private readonly SpectrumKeyboardBacklightController _controller = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();\n    private readonly SpecialKeyListener _listener = IoCContainer.Resolve<SpecialKeyListener>();\n    private readonly VantageDisabler _vantageDisabler = IoCContainer.Resolve<VantageDisabler>();\n    private readonly SpectrumKeyboardSettings _settings = IoCContainer.Resolve<SpectrumKeyboardSettings>();\n\n    private CancellationTokenSource? _refreshStateCancellationTokenSource;\n    private Task? _refreshStateTask;\n\n    private RadioButton[] ProfileButtons =>\n    [\n        _profileButton1,\n        _profileButton2,\n        _profileButton3,\n        _profileButton4,\n        _profileButton5,\n        _profileButton6\n    ];\n\n    protected override bool DisablesWhileRefreshing => false;\n\n    public SpectrumKeyboardBacklightControl()\n    {\n        InitializeComponent();\n\n        IsVisibleChanged += SpectrumKeyboardBacklightControl_IsVisibleChanged;\n        SizeChanged += SpectrumKeyboardBacklightControl_SizeChanged;\n\n        _listener.Changed += Listener_Changed;\n\n        MessagingCenter.Subscribe<SpectrumBacklightChangedMessage>(this, () => Dispatcher.InvokeTask(async () =>\n        {\n            if (!IsVisible)\n                return;\n\n            await RefreshBrightnessAsync();\n            await RefreshProfileAsync();\n            await RefreshProfileDescriptionAsync();\n        }));\n    }\n\n    private async void SpectrumKeyboardBacklightControl_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            return;\n\n        await StopAnimationAsync();\n        _effects.Children.Clear();\n    }\n\n    private void SpectrumKeyboardBacklightControl_SizeChanged(object sender, SizeChangedEventArgs e)\n    {\n        if (_device.LayoutTransform is not ScaleTransform scaleTransform)\n            return;\n\n        var target = 0.75 * ActualWidth / _device.ActualWidth;\n        var scale = Math.Clamp(target, 0.5, 1.5);\n\n        scaleTransform.ScaleX = scale;\n        scaleTransform.ScaleY = scale;\n    }\n\n    private void Listener_Changed(object? sender, SpecialKeyListener.ChangedEventArgs e) => Dispatcher.Invoke(async () =>\n    {\n        if (!IsLoaded || !IsVisible)\n            return;\n\n        if (!await _controller.IsSupportedAsync())\n            return;\n\n        if (await _vantageDisabler.GetStatusAsync() == SoftwareStatus.Enabled)\n            return;\n\n        switch (e.SpecialKey)\n        {\n            case SpecialKey.SpectrumBacklightOff\n                or SpecialKey.SpectrumBacklight1\n                or SpecialKey.SpectrumBacklight2\n                or SpecialKey.SpectrumBacklight3:\n                await RefreshBrightnessAsync();\n                break;\n            case SpecialKey.SpectrumPreset1\n                or SpecialKey.SpectrumPreset2\n                or SpecialKey.SpectrumPreset3\n                or SpecialKey.SpectrumPreset4\n                or SpecialKey.SpectrumPreset5\n                or SpecialKey.SpectrumPreset6:\n                await RefreshProfileAsync();\n                break;\n        }\n    });\n\n    private async void BrightnessSlider_OnValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) => await _changeBrightnessDispatcher.DispatchAsync(async () =>\n    {\n        await Dispatcher.InvokeAsync(async () =>\n        {\n            var value = (int)_brightnessSlider.Value;\n            if (await _controller.GetBrightnessAsync() != value)\n                await _controller.SetBrightnessAsync(value);\n        });\n    });\n\n    private async void ProfileButton_OnClick(object sender, RoutedEventArgs e)\n    {\n        await StopAnimationAsync();\n\n        if ((sender as RadioButton)?.Tag is not int profile)\n            return;\n\n        _brightnessSlider.IsEnabled = false;\n        foreach (var profileButton in ProfileButtons)\n            profileButton.IsEnabled = false;\n\n        if (await _controller.GetProfileAsync() != profile)\n        {\n            await _controller.SetProfileAsync(profile);\n            await RefreshProfileDescriptionAsync();\n        }\n\n        foreach (var profileButton in ProfileButtons)\n            profileButton.IsEnabled = true;\n        _brightnessSlider.IsEnabled = true;\n\n        if (IsVisible)\n            await StartAnimationAsync();\n    }\n\n    private void SelectableControl_Selected(object? sender, SelectableControl.SelectedEventArgs e)\n    {\n        foreach (var button in _device.GetVisibleButtons().Where(b => !(b.IsChecked ?? false)))\n            button.IsChecked = e.ContainsCenter(button);\n    }\n\n    private void SelectAll_Click(object sender, RoutedEventArgs e) => SelectAllButtons();\n\n    private void DeselectAll_Click(object sender, RoutedEventArgs e) => DeselectAllButtons();\n\n    private async void SwitchKeyboardLayout_Click(object sender, RoutedEventArgs e)\n    {\n        await StopAnimationAsync();\n\n        var buttons = _device.GetVisibleButtons();\n        foreach (var button in buttons)\n            button.IsChecked = false;\n\n        var currentKeyboardLayout = _settings.Store.KeyboardLayout;\n        var keyboardLayout = currentKeyboardLayout switch\n        {\n            KeyboardLayout.Ansi => KeyboardLayout.Iso,\n            KeyboardLayout.Iso => KeyboardLayout.Jis,\n            KeyboardLayout.Jis => KeyboardLayout.Ansi,\n            _ => throw new ArgumentException(nameof(currentKeyboardLayout))\n        };\n\n        _settings.Store.KeyboardLayout = keyboardLayout;\n        _settings.SynchronizeStore();\n\n        var (spectrumLayout, _, keys) = await _controller.GetKeyboardLayoutAsync();\n\n        _device.SetLayout(spectrumLayout, keyboardLayout, keys);\n\n        if (IsVisible)\n            await StartAnimationAsync();\n    }\n\n    private async void ExportButton_Click(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            var sfd = new SaveFileDialog\n            {\n                Title = Resource.Export,\n                InitialDirectory = \"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\",\n                Filter = \"Json Files (.json)|*.json\",\n            };\n\n            var result = sfd.ShowDialog();\n\n            if (!result.HasValue || !result.Value)\n                return;\n\n            var profile = await _controller.GetProfileAsync();\n            await _controller.ExportProfileDescriptionAsync(profile, sfd.FileName);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't export profile.\", ex);\n\n            await SnackbarHelper.ShowAsync(Resource.SpectrumKeyboardBacklightControl_ExportProfileError_Title, Resource.SpectrumKeyboardBacklightControl_ExportProfileError_Message, SnackbarType.Error);\n        }\n    }\n\n    private async void ImportButton_Click(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            var ofd = new OpenFileDialog\n            {\n                Title = Resource.Import,\n                InitialDirectory = \"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\",\n                Filter = \"Json Files (.json)|*.json\",\n                CheckFileExists = true,\n            };\n\n            var result = ofd.ShowDialog() ?? false;\n            if (!result)\n                return;\n\n            var profile = await _controller.GetProfileAsync();\n            await _controller.ImportProfileDescription(profile, ofd.FileName);\n\n            await RefreshProfileDescriptionAsync();\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't import profile.\", ex);\n\n            await SnackbarHelper.ShowAsync(Resource.SpectrumKeyboardBacklightControl_ImportProfileError_Title, Resource.SpectrumKeyboardBacklightControl_ImportProfileError_Message, SnackbarType.Error);\n        }\n    }\n\n    private void AddEffectButton_Click(object sender, RoutedEventArgs e)\n    {\n        var buttons = _device.GetVisibleButtons().ToArray();\n        var checkedButtons = buttons.Where(b => b.IsChecked ?? false).ToArray();\n\n        if (checkedButtons.IsEmpty())\n        {\n            SelectAllButtons();\n            checkedButtons = buttons;\n        }\n\n        var keyCodes = checkedButtons.Select(b => b.KeyCode).ToArray();\n\n        var allKeyboardKeyCodes = _device.GetVisibleKeyboardButtons()\n            .Select(b => b.KeyCode)\n            .ToArray();\n\n        CreateEffect(keyCodes, allKeyboardKeyCodes);\n    }\n\n    private async void ResetToDefaultButton_Click(object sender, RoutedEventArgs e) => await ResetToDefaultAsync();\n\n    protected override async Task OnRefreshAsync()\n    {\n        if (!await _controller.IsSupportedAsync())\n            throw new InvalidOperationException(\"Spectrum Keyboard does not seem to be supported\");\n\n        var vantageStatus = await _vantageDisabler.GetStatusAsync();\n        if (vantageStatus == SoftwareStatus.Enabled)\n        {\n            _vantageWarningInfoBar.IsOpen = true;\n\n            _device.SetLayout(SpectrumLayout.Full, KeyboardLayout.Ansi, []);\n            _content.IsEnabled = false;\n\n            _noEffectsText.Visibility = Visibility.Collapsed;\n            return;\n        }\n\n        _vantageWarningInfoBar.IsOpen = false;\n\n        var (spectrumLayout, keyboardLayout, keys) = await _controller.GetKeyboardLayoutAsync();\n\n        if (!_settings.Store.KeyboardLayout.HasValue)\n        {\n            _settings.Store.KeyboardLayout = keyboardLayout;\n            _settings.SynchronizeStore();\n        }\n        else\n        {\n            keyboardLayout = _settings.Store.KeyboardLayout.Value;\n        }\n\n        _device.SetLayout(spectrumLayout, keyboardLayout, keys);\n\n        _content.IsEnabled = true;\n\n        await RefreshBrightnessAsync();\n        await RefreshProfileAsync();\n\n        if (IsVisible)\n            await StartAnimationAsync();\n    }\n\n    protected override void OnFinishedLoading() { }\n\n    private void SelectButtons(SpectrumKeyboardBacklightEffect effect)\n    {\n        if (effect.Type.IsAllLightsEffect())\n        {\n            SelectAllButtons();\n            return;\n        }\n\n        DeselectAllButtons();\n\n        foreach (var button in _device.GetVisibleButtons())\n        {\n            if (!effect.Keys.Contains(button.KeyCode))\n                continue;\n\n            button.IsChecked = true;\n        }\n    }\n\n    private void SelectAllButtons()\n    {\n        foreach (var button in _device.GetVisibleButtons())\n            button.IsChecked = true;\n    }\n\n    private void DeselectAllButtons()\n    {\n        foreach (var button in _device.GetVisibleButtons())\n            button.IsChecked = false;\n    }\n\n    private async Task StartAnimationAsync()\n    {\n        using (await _startStopAnimationLock.LockAsync())\n        {\n            await StopAnimationAsync();\n\n            if (_refreshStateCancellationTokenSource is not null)\n                await _refreshStateCancellationTokenSource.CancelAsync();\n\n            _refreshStateCancellationTokenSource = new();\n\n            _refreshStateTask = RefreshStateAsync(_refreshStateCancellationTokenSource.Token);\n        }\n    }\n\n    private async Task StopAnimationAsync()\n    {\n        using (await _startStopAnimationLock.LockAsync())\n        {\n            if (_refreshStateCancellationTokenSource is not null)\n                await _refreshStateCancellationTokenSource.CancelAsync();\n\n            _refreshStateCancellationTokenSource = new();\n\n            if (_refreshStateTask is not null)\n                await _refreshStateTask;\n\n            _refreshStateTask = null;\n        }\n    }\n\n    private async Task RefreshStateAsync(CancellationToken token)\n    {\n        var buttons = _device.GetVisibleButtons().ToArray();\n\n        if (buttons.Length < 1)\n            return;\n\n        var firstCheck = true;\n\n        try\n        {\n            while (true)\n            {\n                token.ThrowIfCancellationRequested();\n\n                if (!IsVisible)\n                    break;\n\n                var delay = Task.Delay(_refreshStateInterval, token);\n                var state = await Task.Run(() => _controller.GetStateAsync(!firstCheck), token);\n\n                foreach (var button in buttons)\n                {\n                    if (!state.TryGetValue(button.KeyCode, out var rgb))\n                    {\n                        button.Color = null;\n                        continue;\n                    }\n\n                    if (rgb is { R: < 1, G: < 1, B: < 1 })\n                    {\n                        button.Color = null;\n                        continue;\n                    }\n\n                    button.Color = Color.FromRgb(rgb.R, rgb.G, rgb.B);\n                }\n\n                await delay;\n\n                firstCheck = false;\n            }\n        }\n        catch (OperationCanceledException) { }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to refresh state.\", ex);\n        }\n        finally\n        {\n            foreach (var button in buttons)\n                button._background.Background = null;\n        }\n    }\n\n    private async Task RefreshBrightnessAsync()\n    {\n        _brightnessSlider.Value = await _controller.GetBrightnessAsync();\n    }\n\n    private async Task RefreshProfileAsync()\n    {\n        var profile = await _controller.GetProfileAsync();\n        var profileButton = ProfileButtons.FirstOrDefault(pb => pb.Tag.Equals(profile));\n        if (profileButton is null)\n            return;\n\n        profileButton.IsChecked = true;\n\n        await RefreshProfileDescriptionAsync();\n    }\n\n    private async Task RefreshProfileDescriptionAsync()\n    {\n        var profile = await _controller.GetProfileAsync();\n        var (_, effects) = await _controller.GetProfileDescriptionAsync(profile);\n\n        DeleteAllEffects();\n\n        foreach (var effect in effects)\n        {\n            var control = CreateEffectControl(effect);\n            _effects.Children.Add(control);\n        }\n\n        _noEffectsText.Visibility = effects.IsEmpty() ? Visibility.Visible : Visibility.Collapsed;\n    }\n\n    private async Task ApplyProfileAsync()\n    {\n        var profile = await _controller.GetProfileAsync();\n        var effects = _effects.Children.OfType<SpectrumKeyboardEffectControl>().Select(c => c.Effect).ToArray();\n\n        try\n        {\n            await _controller.SetProfileDescriptionAsync(profile, effects);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't apply profile.\", ex);\n\n            await SnackbarHelper.ShowAsync(Resource.SpectrumKeyboardBacklightControl_ApplyProfileError_Title, Resource.SpectrumKeyboardBacklightControl_ApplyProfileError_Message, SnackbarType.Error);\n        }\n\n        await RefreshProfileDescriptionAsync();\n    }\n\n    private async Task ResetToDefaultAsync()\n    {\n        DeselectAllButtons();\n\n        var profile = await _controller.GetProfileAsync();\n        await _controller.SetProfileDefaultAsync(profile);\n\n        await RefreshProfileDescriptionAsync();\n    }\n\n    private void CreateEffect(ushort[] keyCodes, ushort[] allKeyboardKeyCodes)\n    {\n        var window = new SpectrumKeyboardBacklightEditEffectWindow(keyCodes, allKeyboardKeyCodes) { Owner = Window.GetWindow(this) };\n        window.Apply += async (_, e) => await AddEffect(e);\n        window.ShowDialog();\n    }\n\n    private SpectrumKeyboardEffectControl CreateEffectControl(SpectrumKeyboardBacklightEffect effect)\n    {\n        var control = new SpectrumKeyboardEffectControl(effect);\n        control.Click += (_, _) => SelectButtons(effect);\n        control.Edit += (_, _) => EditEffect(control);\n        control.Delete += async (_, _) => await DeleteEffectAsync(control);\n        return control;\n    }\n\n    private async Task AddEffect(SpectrumKeyboardBacklightEffect effect)\n    {\n        DeselectAllButtons();\n\n        var control = CreateEffectControl(effect);\n        _effects.Children.Add(control);\n\n        await ApplyProfileAsync();\n    }\n\n    private void EditEffect(SpectrumKeyboardEffectControl effectControl)\n    {\n        var keyCodes = _device.GetVisibleButtons()\n            .Select(b => b.KeyCode)\n            .ToArray();\n        var allKeyboardKeyCodes = _device.GetVisibleKeyboardButtons()\n            .Select(b => b.KeyCode)\n            .ToArray();\n\n        var window = new SpectrumKeyboardBacklightEditEffectWindow(effectControl.Effect, keyCodes, allKeyboardKeyCodes) { Owner = Window.GetWindow(this) };\n        window.Apply += async (_, e) => await ReplaceEffectAsync(effectControl, e);\n        window.ShowDialog();\n    }\n\n    private async Task ReplaceEffectAsync(UIElement effectControl, SpectrumKeyboardBacklightEffect effect)\n    {\n        DeselectAllButtons();\n\n        var control = new SpectrumKeyboardEffectControl(effect);\n        control.Click += (_, _) => SelectButtons(effect);\n        control.Edit += (_, _) => EditEffect(control);\n        control.Delete += async (_, _) => await DeleteEffectAsync(control);\n\n        var index = _effects.Children.IndexOf(effectControl);\n        if (index < 0)\n        {\n            _effects.Children.Add(control);\n        }\n        else\n        {\n            _effects.Children.RemoveAt(index);\n            _effects.Children.Insert(index, control);\n        }\n\n        await ApplyProfileAsync();\n    }\n\n    private async Task DeleteEffectAsync(UIElement effectControl)\n    {\n        _effects.Children.Remove(effectControl);\n\n        await ApplyProfileAsync();\n    }\n\n    private void DeleteAllEffects() => _effects.Children.Clear();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/SpectrumKeyboardEffectControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum.SpectrumKeyboardEffectControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\">\n\n    <custom:CardControl\n        Margin=\"0,0,0,8\"\n        Click=\"ButtonBase_OnClick\"\n        Icon=\"Star24\">\n        <custom:CardControl.Header>\n            <controls:CardHeaderControl x:Name=\"_cardHeaderControl\" />\n        </custom:CardControl.Header>\n        <StackPanel Orientation=\"Horizontal\">\n            <wpfui:Button\n                Click=\"Edit_Click\"\n                Icon=\"Edit24\"\n                ToolTip=\"{x:Static resources:Resource.Edit}\" />\n            <wpfui:Button\n                Margin=\"8,0,0,0\"\n                Click=\"Delete_Click\"\n                Icon=\"Dismiss24\"\n                ToolTip=\"{x:Static resources:Resource.Delete}\" />\n        </StackPanel>\n    </custom:CardControl>\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/KeyboardBacklight/Spectrum/SpectrumKeyboardEffectControl.xaml.cs",
    "content": "﻿using System;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\n\nnamespace LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum;\n\npublic partial class SpectrumKeyboardEffectControl\n{\n    public new SpectrumKeyboardBacklightEffect Effect { get; }\n\n    public event EventHandler? Click;\n    public event EventHandler? Edit;\n    public event EventHandler? Delete;\n\n    public SpectrumKeyboardEffectControl(SpectrumKeyboardBacklightEffect effect)\n    {\n        Effect = effect;\n\n        InitializeComponent();\n\n        _cardHeaderControl.Title = effect.Type.GetDisplayName();\n\n        var subtitle = string.Empty;\n        if (effect.Type.IsAllLightsEffect())\n            subtitle += Resource.SpectrumKeyboardEffectControl_Description_AllZones;\n        else\n            subtitle += string.Format(Resource.SpectrumKeyboardEffectControl_Description_Zones, effect.Keys.Length);\n        _cardHeaderControl.Subtitle = subtitle;\n    }\n\n    private void ButtonBase_OnClick(object sender, RoutedEventArgs e)\n    {\n        Click?.Invoke(this, EventArgs.Empty);\n        e.Handled = true;\n    }\n\n    private void Edit_Click(object sender, RoutedEventArgs e)\n    {\n        Edit?.Invoke(this, EventArgs.Empty);\n        e.Handled = true;\n    }\n\n    private void Delete_Click(object sender, RoutedEventArgs e)\n    {\n        Delete?.Invoke(this, EventArgs.Empty);\n        e.Handled = true;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/LoadableControl.cs",
    "content": "﻿using System;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Media;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic class LoadableControl : UserControl\n{\n    private readonly ContentPresenter _contentPresenter = new();\n\n    private readonly ProgressRing _progressRing = new()\n    {\n        IsIndeterminate = true,\n        VerticalAlignment = VerticalAlignment.Top,\n        HorizontalAlignment = HorizontalAlignment.Center,\n        Width = 48,\n        Height = 48,\n    };\n\n    private bool _isLoading = true;\n\n    public bool IsLoading\n    {\n        get => _isLoading;\n        set\n        {\n            _isLoading = value;\n            UpdateLoadingState();\n        }\n    }\n\n    public bool IsIndeterminate\n    {\n        get => _progressRing.IsIndeterminate;\n        set => _progressRing.IsIndeterminate = value;\n    }\n\n    public double Progress\n    {\n        get => _progressRing.Progress;\n        set => _progressRing.Progress = value;\n    }\n\n    public double IndicatorWidth\n    {\n        get => _progressRing.Width;\n        set => _progressRing.Width = value;\n    }\n\n    public double IndicatorHeight\n    {\n        get => _progressRing.Height;\n        set => _progressRing.Height = value;\n    }\n\n    public HorizontalAlignment IndicatorHorizontalAlignment\n    {\n        get => _progressRing.HorizontalAlignment;\n        set => _progressRing.HorizontalAlignment = value;\n    }\n\n    public VerticalAlignment IndicatorVerticalAlignment\n    {\n        get => _progressRing.VerticalAlignment;\n        set => _progressRing.VerticalAlignment = value;\n    }\n\n    public Thickness IndicatorMargin\n    {\n        get => _progressRing.Margin;\n        set => _progressRing.Margin = value;\n    }\n\n    public Visibility ContentVisibilityWhileLoading { get; set; } = Visibility.Hidden;\n\n    protected override void OnInitialized(EventArgs e)\n    {\n        base.OnInitialized(e);\n\n        _contentPresenter.Content = Content;\n\n        _progressRing.RenderTransformOrigin = new(0.5, 0.5);\n        _progressRing.RenderTransform = new TransformGroup\n        {\n            Children =\n            {\n                new RotateTransform(-90),\n                new ScaleTransform(-1, 1),\n            }\n        };\n\n        var grid = new Grid();\n        grid.Children.Add(_contentPresenter);\n        grid.Children.Add(_progressRing);\n\n        UpdateLoadingState();\n\n        Content = grid;\n    }\n\n    private void UpdateLoadingState()\n    {\n        _contentPresenter.Visibility = IsLoading ? ContentVisibilityWhileLoading : Visibility.Visible;\n        _progressRing.Visibility = IsLoading ? Visibility.Visible : Visibility.Hidden;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Macro/AbstractMacroEventControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.Macro.AbstractMacroEventControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    mc:Ignorable=\"d\">\n    <wpfui:CardControl x:Name=\"_card\" Margin=\"0,0,0,8\">\n        <wpfui:CardControl.Header>\n            <controls:CardHeaderControl x:Name=\"_header\" />\n        </wpfui:CardControl.Header>\n    </wpfui:CardControl>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Macro/AbstractMacroEventControl.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Windows.Input;\nusing Humanizer;\nusing Humanizer.Localisation;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Macro;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Macro;\n\npublic abstract partial class AbstractMacroEventControl\n{\n    protected AbstractMacroEventControl()\n    {\n        InitializeComponent();\n    }\n\n    public abstract IEnumerable<MacroEvent> GetEvents();\n\n    protected abstract TimeSpan TotalDelay { get; }\n\n    public virtual void Set(MacroEvent macroEvent)\n    {\n        _card.Icon = macroEvent.Direction switch\n        {\n            MacroDirection.Up => SymbolRegular.ArrowCircleUp24,\n            MacroDirection.Down => SymbolRegular.ArrowCircleDown24,\n            MacroDirection.Wheel => SymbolRegular.ArrowRotateClockwise24,\n            MacroDirection.HorizontalWheel => SymbolRegular.ArrowRotateClockwise24,\n            MacroDirection.Move => SymbolRegular.ArrowMove24,\n            _ => SymbolRegular.Empty\n        };\n\n        _header.Title = (macroEvent.Source, macroEvent.Direction, macroEvent.Key) switch\n        {\n            (MacroSource.Keyboard, _, _) => KeyInterop.KeyFromVirtualKey((int)macroEvent.Key).ToString(),\n            (MacroSource.Mouse, MacroDirection.Move, _) => \"MOVE\",\n            (MacroSource.Mouse, MacroDirection.Wheel, >= 0x80000000) => \"WHEEL DOWN\",\n            (MacroSource.Mouse, MacroDirection.Wheel, _) => \"WHEEL UP\",\n            (MacroSource.Mouse, MacroDirection.HorizontalWheel, >= 0x80000000) => \"WHEEL LEFT\",\n            (MacroSource.Mouse, MacroDirection.HorizontalWheel, _) => \"WHEEL RIGHT\",\n            (MacroSource.Mouse, _, >= 0xFF) => \"XBUTTON\" + (macroEvent.Key >> 16),\n            (MacroSource.Mouse, _, 1) => \"LBUTTON\",\n            (MacroSource.Mouse, _, 2) => \"RBUTTON\",\n            (MacroSource.Mouse, _, 3) => \"MBUTTON\",\n            (MacroSource.Mouse, _, _) => \"BUTTON\" + macroEvent.Key,\n            _ => string.Empty\n        };\n\n        _header.Subtitle = macroEvent.Source.GetDisplayName() + $\" • {TotalDelay.Humanize(maxUnit: TimeUnit.Millisecond)}\";\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Macro/MacroSequenceControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.Macro.MacroSequenceControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:d=\"http://schemas.microsoft.com/expression/blend/2008\"\n    xmlns:mc=\"http://schemas.openxmlformats.org/markup-compatibility/2006\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    mc:Ignorable=\"d\">\n\n    <StackPanel Orientation=\"Vertical\">\n        <custom:CardControl\n            x:Name=\"_repeatCard\"\n            Margin=\"0,0,0,8\"\n            Icon=\"ArrowRepeatAll24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.MacroSequenceControl_Repeat_Title}\" />\n            </custom:CardControl.Header>\n            <ComboBox\n                x:Name=\"_repeatComboBox\"\n                MinWidth=\"150\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.MacroSequenceControl_Repeat_Title}\"\n                SelectionChanged=\"RepeatComboBox_SelectionChanged\" />\n        </custom:CardControl>\n        <custom:CardControl\n            x:Name=\"_ignoreDelaysCard\"\n            Margin=\"0,0,0,8\"\n            Icon=\"Clock24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.MacroSequenceControl_IgnoreDelays_Title}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_ignoreDelaysToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.MacroSequenceControl_IgnoreDelays_Title}\"\n                Click=\"IgnoreDelaysToggle_Click\" />\n        </custom:CardControl>\n        <custom:CardControl\n            x:Name=\"_interruptOnOtherKeyCard\"\n            Margin=\"0,0,0,16\"\n            Icon=\"ArrowStepInRight24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.MacroSequenceControl_InterruptOnOtherKey_Title}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_interruptOnOtherKeyToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.MacroSequenceControl_IgnoreDelays_Title}\"\n                Click=\"InterruptOnOtherKeyToggle_Click\" />\n        </custom:CardControl>\n        <custom:CardControl Margin=\"0,0,0,16\" Icon=\"Settings24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.MacroSequenceControl_RecordingOptions}\" />\n            </custom:CardControl.Header>\n            <ComboBox\n                x:Name=\"_settingsComboBox\"\n                MinWidth=\"150\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.MacroSequenceControl_RecordingOptions}\" />\n        </custom:CardControl>\n\n        <StackPanel\n            Margin=\"0,0,0,16\"\n            HorizontalAlignment=\"Right\"\n            Orientation=\"Horizontal\">\n            <wpfui:Button\n                x:Name=\"_clearButton\"\n                Margin=\"0,0,8,0\"\n                VerticalAlignment=\"Stretch\"\n                Appearance=\"Secondary\"\n                Click=\"ClearButton_Click\"\n                Icon=\"Dismiss24\"\n                ToolTip=\"{x:Static resources:Resource.Clear}\" />\n            <wpfui:Button\n                x:Name=\"_recordButton\"\n                MinWidth=\"150\"\n                Margin=\"0,0,4,0\"\n                Appearance=\"Primary\"\n                Click=\"RecordButton_Click\"\n                Content=\"{x:Static resources:Resource.MacroSequenceControl_Record}\" />\n        </StackPanel>\n\n        <StackPanel\n            x:Name=\"_macroEventsPanel\"\n            Margin=\"0,0,0,8\"\n            Orientation=\"Vertical\" />\n\n    </StackPanel>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Macro/MacroSequenceControl.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Input;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Macro;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Windows.Macro;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Macro;\n\npublic partial class MacroSequenceControl\n{\n    private readonly MacroController _controller = IoCContainer.Resolve<MacroController>();\n\n    private MacroRecordingWindow? _recordingWindow;\n    private MacroIdentifier _macroIdentifier;\n    private bool _isRefreshing;\n\n    public MacroSequenceControl()\n    {\n        InitializeComponent();\n\n        _controller.RecorderReceived += Controller_RecorderReceived;\n        _controller.RecorderStopped += Controller_RecorderStopped;\n    }\n\n    public void Set(MacroIdentifier macroIdentifier)\n    {\n        _isRefreshing = true;\n\n        _macroIdentifier = macroIdentifier;\n\n        _controller.StopRecording();\n\n        Mouse.OverrideCursor = null;\n\n        var sequence = _controller.GetSequences().GetValueOrDefault(_macroIdentifier);\n        var sequenceHasEvents = sequence.Events?.Length > 0;\n\n        _repeatCard.IsEnabled = sequenceHasEvents;\n        _ignoreDelaysCard.IsEnabled = sequenceHasEvents;\n        _interruptOnOtherKeyCard.IsEnabled = sequenceHasEvents;\n\n        _settingsComboBox.SetItems([MacroRecorderSettings.Keyboard, MacroRecorderSettings.Keyboard | MacroRecorderSettings.Mouse, MacroRecorderSettings.Keyboard | MacroRecorderSettings.Mouse | MacroRecorderSettings.Movement],\n            MacroRecorderSettings.Keyboard,\n            v => v switch\n            {\n                MacroRecorderSettings.Keyboard => Resource.MacroSequenceControl_Keyboard,\n                MacroRecorderSettings.Keyboard | MacroRecorderSettings.Mouse => Resource.MacroSequenceControl_KeyboardMouse,\n                MacroRecorderSettings.Keyboard | MacroRecorderSettings.Mouse | MacroRecorderSettings.Movement => Resource.MacroSequenceControl_KeyboardMouseMovement,\n                _ => string.Empty\n            });\n        _repeatComboBox.SetItems(MacroController.AllowedRepeatCounts,\n            Math.Clamp(sequence.RepeatCount, 1, 10),\n            v => v == 1 ? Resource.MacroSequenceControl_DontRepeat : v.ToString());\n        _ignoreDelaysToggle.IsChecked = sequence.IgnoreDelays;\n        _interruptOnOtherKeyToggle.IsChecked = sequence.InterruptOnOtherKey;\n\n        _recordButton.IsEnabled = true;\n        _clearButton.Visibility = sequenceHasEvents ? Visibility.Visible : Visibility.Collapsed;\n\n        _macroEventsPanel.Children.Clear();\n        foreach (var macroEvent in sequence.Events ?? [])\n            CreateControl(macroEvent);\n\n        _isRefreshing = false;\n    }\n\n    private void CreateControl(MacroEvent macroEvent)\n    {\n        if (macroEvent.Direction is MacroDirection.Move)\n        {\n            if (_macroEventsPanel.Children.OfType<AbstractMacroEventControl>().LastOrDefault() is MultiAbstractMacroEventControl last)\n            {\n                last.Set(macroEvent);\n            }\n            else\n            {\n                var macroEventControl = new MultiAbstractMacroEventControl();\n                macroEventControl.Set(macroEvent);\n                _macroEventsPanel.Children.Add(macroEventControl);\n            }\n        }\n        else\n        {\n            var macroEventControl = new SingleAbstractMacroEventControl();\n            macroEventControl.Set(macroEvent);\n            _macroEventsPanel.Children.Add(macroEventControl);\n        }\n    }\n\n    private void Controller_RecorderReceived(object? sender, MacroController.RecorderReceivedEventArgs e) => CreateControl(e.MacroEvent);\n\n    private void Controller_RecorderStopped(object? sender, MacroController.RecorderStoppedEventArgs e)\n    {\n        _recordingWindow?.Close();\n        _recordingWindow = null;\n\n        if (e.Interrupted)\n            Clear();\n        else\n            Save();\n    }\n\n    private void RepeatComboBox_SelectionChanged(object sender, RoutedEventArgs e) => Save();\n\n    private void IgnoreDelaysToggle_Click(object sender, RoutedEventArgs e) => Save();\n\n    private void InterruptOnOtherKeyToggle_Click(object sender, RoutedEventArgs e) => Save();\n\n    private void ClearButton_Click(object sender, RoutedEventArgs e) => Clear();\n\n    private async void RecordButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (!_settingsComboBox.TryGetSelectedItem(out MacroRecorderSettings settings))\n            return;\n\n        await RecordAsync(settings);\n    }\n\n    private async Task RecordAsync(MacroRecorderSettings settings)\n    {\n        _macroEventsPanel.Children.Clear();\n        _recordButton.IsEnabled = false;\n        _clearButton.Visibility = Visibility.Collapsed;\n\n        Mouse.OverrideCursor = Cursors.Wait;\n\n        if (settings.HasFlag(MacroRecorderSettings.Mouse) && settings.HasFlag(MacroRecorderSettings.Movement))\n        {\n            _recordingWindow = MacroRecordingWindow.CreatePreparing();\n            _recordingWindow.Owner = Window.GetWindow(this);\n            _recordingWindow.Show();\n\n            await Task.Delay(TimeSpan.FromSeconds(3));\n\n            _recordingWindow.Close();\n        }\n\n        _recordingWindow = MacroRecordingWindow.CreateRecording();\n        _recordingWindow.Owner = Window.GetWindow(this);\n        _recordingWindow.Show();\n\n        _controller.StartRecording(settings);\n    }\n\n    private void Clear()\n    {\n        _macroEventsPanel.Children.Clear();\n\n        Save();\n    }\n\n    private void Save()\n    {\n        if (_isRefreshing)\n            return;\n\n        Mouse.OverrideCursor = null;\n\n        var repeatCount = _repeatComboBox.TryGetSelectedItem(out int repeat) ? repeat : 1;\n        var ignoreDelays = _ignoreDelaysToggle.IsChecked ?? false;\n        var interruptOnOtherKey = _interruptOnOtherKeyToggle.IsChecked ?? false;\n        var macroEvents = _macroEventsPanel.Children\n            .OfType<AbstractMacroEventControl>()\n            .SelectMany(c => c.GetEvents())\n            .ToArray();\n\n        var sequences = _controller.GetSequences();\n        sequences[_macroIdentifier] = new MacroSequence\n        {\n            RepeatCount = repeatCount,\n            IgnoreDelays = ignoreDelays,\n            InterruptOnOtherKey = interruptOnOtherKey,\n            Events = macroEvents\n        };\n        _controller.SetSequences(sequences);\n\n        Set(_macroIdentifier);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Macro/MultiAbstractMacroEventControl.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing LenovoLegionToolkit.Lib.Macro;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Macro;\n\npublic class MultiAbstractMacroEventControl : AbstractMacroEventControl\n{\n    private readonly List<MacroEvent> _macroEvents = [];\n\n    public override IEnumerable<MacroEvent> GetEvents() => _macroEvents;\n\n    protected override TimeSpan TotalDelay => _macroEvents\n        .Select(me => me.Delay)\n        .Aggregate(TimeSpan.Zero, (subtotal, t) => subtotal.Add(t));\n\n    public override void Set(MacroEvent macroEvent)\n    {\n        _macroEvents.Add(macroEvent);\n\n        base.Set(macroEvent);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Macro/SingleAbstractMacroEventControl.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing LenovoLegionToolkit.Lib.Macro;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Macro;\n\npublic class SingleAbstractMacroEventControl : AbstractMacroEventControl\n{\n    private MacroEvent _macroEvent;\n\n    public override IEnumerable<MacroEvent> GetEvents() => [_macroEvent];\n\n    protected override TimeSpan TotalDelay => _macroEvent.Delay;\n\n    public override void Set(MacroEvent macroEvent)\n    {\n        _macroEvent = macroEvent;\n\n        base.Set(macroEvent);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/MultiColorPickerControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.MultiColorPickerControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\">\n    <StackPanel Orientation=\"Horizontal\">\n\n        <StackPanel x:Name=\"_buttons\" Orientation=\"Horizontal\" />\n\n        <wpfui:Button\n            x:Name=\"_addButton\"\n            Width=\"38\"\n            Height=\"38\"\n            Margin=\"8,0,0,0\"\n            Appearance=\"Primary\"\n            Click=\"AddButton_Click\"\n            Icon=\"Add24\" />\n\n    </StackPanel>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/MultiColorPickerControl.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Media;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic partial class MultiColorPickerControl\n{\n    private const int MAX_ITEMS = 3;\n\n    public Color[] SelectedColors\n    {\n        get => _buttons.Children.OfType<MultiColorPickerItemControl>()\n            .Select(c => c.SelectedColor)\n            .ToArray();\n        set\n        {\n            _buttons.Children.Clear();\n            foreach (var color in value.Take(MAX_ITEMS))\n            {\n                var picker = CreateColorPicker();\n                picker.SelectedColor = color;\n                _buttons.Children.Add(picker);\n            }\n\n            Update();\n        }\n    }\n\n    public event EventHandler? ColorsChangedContinuous;\n    public event EventHandler? ColorsChangedDelayed;\n\n    public MultiColorPickerControl() => InitializeComponent();\n\n    private void AddButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (SelectedColors.Length >= MAX_ITEMS)\n            return;\n\n        var picker = CreateColorPicker();\n        _buttons.Children.Add(picker);\n        Update();\n    }\n\n    private MultiColorPickerItemControl CreateColorPicker()\n    {\n        var picker = new MultiColorPickerItemControl\n        {\n            Margin = new(0, 0, 8, 0),\n        };\n        picker.ColorChangedContinuous += (_, _) => ColorsChangedContinuous?.Invoke(this, EventArgs.Empty);\n        picker.ColorChangedDelayed += (_, _) => ColorsChangedDelayed?.Invoke(this, EventArgs.Empty);\n        picker.Delete += (_, e) =>\n        {\n            _buttons.Children.Remove(picker);\n            Update();\n            e.Handled = true;\n        };\n        return picker;\n    }\n\n    private void Update()\n    {\n        _addButton.IsEnabled = SelectedColors.Length < MAX_ITEMS;\n\n        ColorsChangedContinuous?.Invoke(this, EventArgs.Empty);\n        ColorsChangedDelayed?.Invoke(this, EventArgs.Empty);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/MultiColorPickerItemControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.MultiColorPickerItemControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\">\n    <Grid Margin=\"8,0,0,0\">\n\n        <local:ColorPickerControl x:Name=\"_picker\" />\n\n        <Border\n            Width=\"20\"\n            Height=\"20\"\n            Background=\"{DynamicResource SolidBackgroundFillColorBaseBrush}\"\n            CornerRadius=\"10\"\n            Cursor=\"Hand\"\n            MouseLeftButtonDown=\"Delete_Click\"\n            MouseRightButtonDown=\"Delete_Click\">\n            <Border.RenderTransform>\n                <TranslateTransform X=\"14\" Y=\"-14\" />\n            </Border.RenderTransform>\n\n            <wpfui:SymbolIcon\n                FontSize=\"11\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n                Symbol=\"Dismiss12\" />\n\n        </Border>\n\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/MultiColorPickerItemControl.xaml.cs",
    "content": "﻿using System;\nusing System.Windows.Input;\nusing System.Windows.Media;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic partial class MultiColorPickerItemControl\n{\n    public Color SelectedColor\n    {\n        get => _picker.SelectedColor;\n        set => _picker.SelectedColor = value;\n    }\n\n    public event EventHandler? ColorChangedContinuous\n    {\n        add => _picker.ColorChangedContinuous += value;\n        remove => _picker.ColorChangedContinuous -= value;\n    }\n\n    public event EventHandler? ColorChangedDelayed\n    {\n        add => _picker.ColorChangedDelayed += value;\n        remove => _picker.ColorChangedDelayed -= value;\n    }\n\n    public event EventHandler<MouseButtonEventArgs>? Delete;\n\n    public MultiColorPickerItemControl() => InitializeComponent();\n\n    private void Delete_Click(object sender, MouseButtonEventArgs e) => Delete?.Invoke(this, e);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Packages/PackageControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Controls.Packages.PackageControl\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\">\n\n    <custom:CardControl Margin=\"0,0,0,8\">\n        <custom:CardControl.Header>\n            <Grid>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"150\" />\n                </Grid.ColumnDefinitions>\n\n                <StackPanel\n                    x:Name=\"_updateRebootStackPanel\"\n                    Grid.Row=\"0\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,0,0,8\"\n                    Orientation=\"Horizontal\">\n\n                    <StackPanel x:Name=\"_isUpdateStackPanel\" Orientation=\"Horizontal\">\n                        <wpfui:SymbolIcon\n                            Margin=\"0,0,4,0\"\n                            FontSize=\"18\"\n                            FontWeight=\"Medium\"\n                            Foreground=\"{DynamicResource SystemFillColorSuccessBrush}\"\n                            Symbol=\"ArrowSync24\" />\n                        <TextBlock\n                            FontSize=\"14\"\n                            FontWeight=\"Medium\"\n                            Foreground=\"{DynamicResource SystemFillColorSuccessBrush}\"\n                            Text=\"{x:Static resources:Resource.PackageControl_IsUpdateInfo}\"\n                            TextTrimming=\"CharacterEllipsis\" />\n                    </StackPanel>\n\n                    <StackPanel\n                        x:Name=\"_rebootStackPanel\"\n                        Margin=\"16,0,0,0\"\n                        Orientation=\"Horizontal\">\n                        <wpfui:SymbolIcon\n                            Margin=\"0,0,4,0\"\n                            FontSize=\"18\"\n                            FontWeight=\"Medium\"\n                            Foreground=\"{DynamicResource SystemFillColorCautionBrush}\"\n                            Symbol=\"Warning24\" />\n                        <TextBlock\n                            x:Name=\"_rebootTextBlock\"\n                            FontSize=\"14\"\n                            FontWeight=\"Medium\"\n                            Foreground=\"{DynamicResource SystemFillColorCautionBrush}\"\n                            Text=\"{x:Static resources:Resource.PackageControl_RebootRecommended}\"\n                            TextTrimming=\"CharacterEllipsis\" />\n                    </StackPanel>\n\n                </StackPanel>\n\n                <TextBlock\n                    x:Name=\"_dateTextBlock\"\n                    Grid.Row=\"1\"\n                    Grid.Column=\"0\"\n                    FontSize=\"12\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                    TextTrimming=\"CharacterEllipsis\" />\n\n                <TextBlock\n                    x:Name=\"_categoryTextBlock\"\n                    Grid.Row=\"2\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,4,0,8\"\n                    FontWeight=\"Medium\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                    MouseRightButtonUp=\"CopyToClipboard_MouseRightButtonUp\" />\n\n                <TextBlock\n                    x:Name=\"_titleTextBlock\"\n                    Grid.Row=\"3\"\n                    Grid.Column=\"0\"\n                    FontSize=\"14\"\n                    FontWeight=\"Medium\"\n                    MouseRightButtonUp=\"CopyToClipboard_MouseRightButtonUp\"\n                    TextTrimming=\"CharacterEllipsis\" />\n\n                <TextBlock\n                    x:Name=\"_descriptionTextBlock\"\n                    Grid.Row=\"4\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,8,0,8\"\n                    FontSize=\"13\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                    MouseRightButtonUp=\"CopyToClipboard_MouseRightButtonUp\"\n                    TextWrapping=\"Wrap\" />\n\n                <TextBlock\n                    x:Name=\"_detailTextBlock\"\n                    Grid.Row=\"5\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,4,0,0\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                    MouseRightButtonUp=\"CopyToClipboard_MouseRightButtonUp\"\n                    TextTrimming=\"CharacterEllipsis\" />\n\n                <TextBlock\n                    x:Name=\"_warningTextBlock\"\n                    Grid.Row=\"6\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,4,0,0\"\n                    Foreground=\"{DynamicResource SystemFillColorCautionBrush}\"\n                    Text=\"{x:Static resources:Resource.PackageControl_OldPackageWarning}\"\n                    TextTrimming=\"CharacterEllipsis\"\n                    Visibility=\"Collapsed\" />\n\n                <StackPanel\n                    x:Name=\"_idleStackPanel\"\n                    Grid.Row=\"0\"\n                    Grid.RowSpan=\"6\"\n                    Grid.Column=\"1\"\n                    HorizontalAlignment=\"Right\"\n                    Orientation=\"Horizontal\">\n\n                    <wpfui:Button\n                        x:Name=\"_readmeButton\"\n                        Margin=\"0,0,8,0\"\n                        Click=\"ReadmeButton_Click\"\n                        FontSize=\"18\"\n                        Icon=\"DocumentBulletList24\"\n                        ToolTip=\"{x:Static resources:Resource.PackageControl_OpenReadme}\" />\n\n                    <wpfui:Button\n                        Click=\"DownloadButton_Click\"\n                        FontSize=\"18\"\n                        Icon=\"ArrowDownload24\"\n                        ToolTip=\"{x:Static resources:Resource.PackageControl_Download}\" />\n\n                </StackPanel>\n\n                <StackPanel\n                    x:Name=\"_downloadingStackPanel\"\n                    Grid.Row=\"0\"\n                    Grid.RowSpan=\"7\"\n                    Grid.Column=\"1\"\n                    HorizontalAlignment=\"Right\"\n                    Orientation=\"Horizontal\"\n                    Visibility=\"Collapsed\">\n\n                    <Label x:Name=\"_downloadProgressLabel\" VerticalContentAlignment=\"Center\" />\n\n                    <wpfui:ProgressRing\n                        x:Name=\"_downloadProgressRing\"\n                        Width=\"24\"\n                        Height=\"24\"\n                        Margin=\"4,0,0,0\"\n                        IsIndeterminate=\"true\"\n                        RenderTransformOrigin=\"0.5,0.5\">\n                        <wpfui:ProgressRing.RenderTransform>\n                            <TransformGroup>\n                                <RotateTransform Angle=\"-90\" />\n                                <ScaleTransform ScaleX=\"-1\" />\n                            </TransformGroup>\n                        </wpfui:ProgressRing.RenderTransform>\n                    </wpfui:ProgressRing>\n\n                    <wpfui:Button\n                        Margin=\"8,0,0,0\"\n                        Click=\"CancelDownloadButton_Click\"\n                        FontSize=\"18\"\n                        Icon=\"Dismiss24\"\n                        ToolTip=\"{x:Static resources:Resource.Cancel}\" />\n\n                </StackPanel>\n\n            </Grid>\n        </custom:CardControl.Header>\n    </custom:CardControl>\n\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/Packages/PackageControl.xaml.cs",
    "content": "﻿using System;\nusing System.Net;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.PackageDownloader;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\n\nnamespace LenovoLegionToolkit.WPF.Controls.Packages;\n\npublic partial class PackageControl : IProgress<float>\n{\n    private readonly IPackageDownloader _packageDownloader;\n    private readonly Package _package;\n    private readonly Func<string> _getDownloadPath;\n\n    private CancellationTokenSource? _downloadPackageTokenSource;\n\n    public bool IsDownloading { get; private set; }\n\n    public PackageControl(IPackageDownloader packageDownloader, Package package, Func<string> getDownloadPath)\n    {\n        _packageDownloader = packageDownloader;\n        _package = package;\n        _getDownloadPath = getDownloadPath;\n\n        InitializeComponent();\n\n        Unloaded += PackageControl_Unloaded;\n\n        _dateTextBlock.Text = package.ReleaseDate.ToString(LocalizationHelper.ShortDateFormat);\n        _titleTextBlock.Text = package.Title;\n        _descriptionTextBlock.Text = package.Description;\n        _descriptionTextBlock.Visibility = string.IsNullOrWhiteSpace(package.Description) ? Visibility.Collapsed : Visibility.Visible;\n        _categoryTextBlock.Text = package.Category;\n        _detailTextBlock.Text = $\"{Resource.PackageControl_Version} {package.Version}  |  {package.FileSize}  |  {package.FileName}\";\n\n        _readmeButton.Visibility = package.Readme is null ? Visibility.Collapsed : Visibility.Visible;\n        _updateRebootStackPanel.Visibility = _isUpdateStackPanel.Visibility = package.IsUpdate ? Visibility.Visible : Visibility.Collapsed;\n\n        _rebootStackPanel.Visibility = package is { IsUpdate: true, Reboot: RebootType.Delayed or RebootType.Requested or RebootType.Forced or RebootType.ForcedPowerOff }\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n        _rebootTextBlock.Text = package.Reboot switch\n        {\n            RebootType.Delayed or RebootType.Requested => Resource.PackageControl_RebootRecommended,\n            RebootType.Forced => Resource.PackageControl_RebootRequired,\n            RebootType.ForcedPowerOff => Resource.PackageControl_ShutdownRequired,\n            _ => string.Empty\n        };\n\n        var showWarning = package.ReleaseDate < DateTime.UtcNow.AddYears(-1);\n        _warningTextBlock.Visibility = showWarning ? Visibility.Visible : Visibility.Collapsed;\n    }\n\n    private void PackageControl_Unloaded(object sender, RoutedEventArgs e) => _downloadPackageTokenSource?.Cancel();\n\n    public void Report(float value) => Dispatcher.Invoke(() =>\n    {\n        _downloadProgressRing.IsIndeterminate = !(value > 0);\n        _downloadProgressRing.Progress = value * 100;\n        _downloadProgressLabel.Content = $\"{value * 100:0}%\";\n    });\n\n    private async void CopyToClipboard_MouseRightButtonUp(object sender, MouseButtonEventArgs e)\n    {\n        e.Handled = true;\n\n        if (sender is not TextBlock tb)\n            return;\n\n        var str = tb.Text;\n\n        try\n        {\n            Clipboard.SetText(str);\n            await SnackbarHelper.ShowAsync(Resource.CopiedToClipboard_Title, string.Format(Resource.CopiedToClipboard_Message_WithParam, str));\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't copy to clipboard\", ex);\n        }\n    }\n\n    private void ReadmeButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (_package.Readme is null)\n            return;\n\n        new Uri(_package.Readme).Open();\n    }\n\n    private async void DownloadButton_Click(object sender, RoutedEventArgs e)\n    {\n        IsDownloading = true;\n\n        var result = false;\n\n        try\n        {\n            _idleStackPanel.Visibility = Visibility.Collapsed;\n            _downloadingStackPanel.Visibility = Visibility.Visible;\n\n            if (_downloadPackageTokenSource is not null)\n                await _downloadPackageTokenSource.CancelAsync();\n\n            _downloadPackageTokenSource = new();\n\n            var token = _downloadPackageTokenSource.Token;\n\n            await _packageDownloader.DownloadPackageFileAsync(_package, _getDownloadPath(), this, token);\n\n            result = true;\n        }\n        catch (OperationCanceledException) { }\n        catch (HttpRequestException ex) when (ex.StatusCode == HttpStatusCode.NotFound)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Not found 404.\", ex);\n\n            await SnackbarHelper.ShowAsync(Resource.PackageControl_Http404Error_Title, Resource.PackageControl_Http404Error_Message, SnackbarType.Error);\n        }\n        catch (HttpRequestException ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Error occurred when downloading package file.\", ex);\n\n            await SnackbarHelper.ShowAsync(Resource.PackageControl_HttpGeneralError_Title, Resource.PackageControl_HttpGeneralError_Message, SnackbarType.Error);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Error occurred when downloading package file.\", ex);\n\n            await SnackbarHelper.ShowAsync(Resource.PackageControl_GeneralError_Title, ex.Message, SnackbarType.Error);\n        }\n        finally\n        {\n            _idleStackPanel.Visibility = Visibility.Visible;\n            _downloadingStackPanel.Visibility = Visibility.Collapsed;\n            _downloadProgressRing.Progress = 0;\n            _downloadProgressLabel.Content = null;\n\n            IsDownloading = false;\n        }\n\n        if (result)\n            await SnackbarHelper.ShowAsync(Resource.PackageControl_DownloadComplete_Title, string.Format(Resource.PackageControl_DownloadComplete_Message, _package.FileName));\n    }\n\n    private void CancelDownloadButton_Click(object sender, RoutedEventArgs e) => _downloadPackageTokenSource?.Cancel();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Controls/SelectableControl.cs",
    "content": "﻿using System;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing System.Windows.Media;\nusing System.Windows.Shapes;\n\nnamespace LenovoLegionToolkit.WPF.Controls;\n\npublic class SelectableControl : UserControl\n{\n    public class SelectedEventArgs(Func<FrameworkElement, bool> containsCenter) : EventArgs\n    {\n        public Func<FrameworkElement, bool> ContainsCenter { get; } = containsCenter;\n    }\n\n    private readonly Grid _grid = new()\n    {\n        Background = new SolidColorBrush(Colors.Transparent)\n    };\n\n    private readonly ContentPresenter _contentPresenter = new();\n\n    private readonly Canvas _canvas = new();\n\n    private readonly Rectangle _selection = new()\n    {\n        StrokeThickness = 2,\n        Visibility = Visibility.Collapsed\n    };\n\n    private bool _mouseDown;\n    private Point _mouseDownPosition;\n\n    public Brush Stroke\n    {\n        get => _selection.Stroke;\n        set => _selection.Stroke = value;\n    }\n\n    public Brush Fill\n    {\n        get => _selection.Fill;\n        set => _selection.Fill = value;\n    }\n\n    public event EventHandler<SelectedEventArgs>? Selected;\n\n    protected override void OnInitialized(EventArgs e)\n    {\n        base.OnInitialized(e);\n\n        _contentPresenter.Content = Content;\n\n        _canvas.Children.Add(_selection);\n\n        _grid.Children.Add(_contentPresenter);\n        _grid.Children.Add(_canvas);\n\n        _grid.MouseDown += Grid_OnMouseDown;\n        _grid.MouseMove += Grid_OnMouseMove;\n        _grid.MouseUp += Grid_OnMouseUp;\n\n        Content = _grid;\n    }\n\n    private void Grid_OnMouseDown(object sender, MouseButtonEventArgs e)\n    {\n        _mouseDown = true;\n\n        _grid.CaptureMouse();\n        _mouseDownPosition = e.GetPosition(_grid);\n\n        Canvas.SetLeft(_selection, _mouseDownPosition.X);\n        Canvas.SetTop(_selection, _mouseDownPosition.Y);\n\n        _selection.Width = 0;\n        _selection.Height = 0;\n\n        _selection.Visibility = Visibility.Visible;\n    }\n\n    private void Grid_OnMouseMove(object sender, MouseEventArgs e)\n    {\n        if (!_mouseDown)\n            return;\n\n        var mousePosition = e.GetPosition(_grid);\n\n        if (_mouseDownPosition.X < mousePosition.X)\n        {\n            Canvas.SetLeft(_selection, _mouseDownPosition.X);\n            _selection.Width = mousePosition.X - _mouseDownPosition.X;\n        }\n        else\n        {\n            Canvas.SetLeft(_selection, mousePosition.X);\n            _selection.Width = _mouseDownPosition.X - mousePosition.X;\n        }\n\n        if (_mouseDownPosition.Y < mousePosition.Y)\n        {\n            Canvas.SetTop(_selection, _mouseDownPosition.Y);\n            _selection.Height = mousePosition.Y - _mouseDownPosition.Y;\n        }\n        else\n        {\n            Canvas.SetTop(_selection, mousePosition.Y);\n            _selection.Height = _mouseDownPosition.Y - mousePosition.Y;\n        }\n    }\n\n    private void Grid_OnMouseUp(object sender, MouseButtonEventArgs e)\n    {\n        if (!_mouseDown)\n            return;\n\n        _mouseDown = false;\n        _grid.ReleaseMouseCapture();\n        _selection.Visibility = Visibility.Collapsed;\n\n        var mouseUpPosition = e.GetPosition(_grid);\n\n        var minX = Math.Min(_mouseDownPosition.X, mouseUpPosition.X);\n        var minY = Math.Min(_mouseDownPosition.Y, mouseUpPosition.Y);\n        var maxX = Math.Max(_mouseDownPosition.X, mouseUpPosition.X);\n        var maxY = Math.Max(_mouseDownPosition.Y, mouseUpPosition.Y);\n\n        var rectangle = new Rect(minX, minY, maxX - minX, maxY - minY);\n\n        bool ContainsCenter(FrameworkElement element)\n        {\n            var elementRect = element.TransformToVisual(_grid)\n                .TransformBounds(new Rect(0, 0, element.ActualWidth, element.ActualHeight));\n\n            var elementCenterX = elementRect.X + elementRect.Width / 2;\n            var elementCenterY = elementRect.Y + elementRect.Height / 2;\n\n            return rectangle.Contains(elementCenterX, elementCenterY);\n        }\n\n        Selected?.Invoke(this, new SelectedEventArgs(ContainsCenter));\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Enums.cs",
    "content": "﻿namespace LenovoLegionToolkit.WPF;\n\npublic enum DashboardGroupType\n{\n    Power,\n    Graphics,\n    Display,\n    Other,\n    Custom\n}\n\npublic enum DashboardItem\n{\n    PowerMode,\n    BatteryMode,\n    BatteryNightChargeMode,\n    AlwaysOnUsb,\n    InstantBoot,\n    HybridMode,\n    DiscreteGpu,\n    OverclockDiscreteGpu,\n    PanelLogoBacklight,\n    PortsBacklight,\n    Resolution,\n    RefreshRate,\n    DpiScale,\n    Hdr,\n    OverDrive,\n    TurnOffMonitors,\n    Microphone,\n    FlipToStart,\n    TouchpadLock,\n    FnLock,\n    WinKeyLock,\n    WhiteKeyboardBacklight\n}\n\npublic enum SnackbarType\n{\n    Success,\n    Warning,\n    Error,\n    Info\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/AutomationPipelineTriggerExtensions.cs",
    "content": "﻿using System;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class AutomationPipelineTriggerExtensions\n{\n    public static SymbolRegular Icon(this IAutomationPipelineTrigger trigger) => trigger switch\n    {\n        IPowerStateAutomationPipelineTrigger => SymbolRegular.BatteryCharge24,\n        IPowerModeAutomationPipelineTrigger => SymbolRegular.Gauge24,\n        IGodModePresetChangedAutomationPipelineTrigger => SymbolRegular.Gauge24,\n        IGameAutomationPipelineTrigger => SymbolRegular.XboxController24,\n        IHDRPipelineTrigger => SymbolRegular.Hdr24,\n        IProcessesAutomationPipelineTrigger => SymbolRegular.WindowConsole20,\n        IUserInactivityPipelineTrigger => SymbolRegular.ClockAlarm24,\n        ISessionLockPipelineTrigger => SymbolRegular.LockClosed24,\n        ISessionUnlockPipelineTrigger => SymbolRegular.LockOpen24,\n        ITimeAutomationPipelineTrigger => SymbolRegular.HourglassHalf24,\n        IDeviceAutomationPipelineTrigger => SymbolRegular.UsbPlug24,\n        INativeWindowsMessagePipelineTrigger => SymbolRegular.Desktop24,\n        IOnStartupAutomationPipelineTrigger => SymbolRegular.Flash24,\n        IOnResumeAutomationPipelineTrigger => SymbolRegular.Flash24,\n        IWiFiConnectedPipelineTrigger => SymbolRegular.Wifi124,\n        IWiFiDisconnectedPipelineTrigger => SymbolRegular.WifiOff24,\n        IPeriodicAutomationPipelineTrigger => SymbolRegular.ArrowRepeatAll24,\n        _ => throw new ArgumentException($\"Unsupported trigger {trigger.GetType().Name}\")\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/ClipboardExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing System.Text;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class ClipboardExtensions\n{\n    public static void SetProcesses(IEnumerable<ProcessInfo> processes)\n    {\n        var sb = new StringBuilder();\n        foreach (var process in processes)\n            sb.AppendLine(process.ExecutablePath);\n        Clipboard.SetText(sb.ToString());\n    }\n\n    public static IEnumerable<ProcessInfo> GetProcesses() => Clipboard.GetText()\n        .Split(Environment.NewLine)\n        .Select(l => l.Trim('\"'))\n        .Where(File.Exists)\n        .Distinct()\n        .Select(ProcessInfo.FromPath);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/ColorExtensions.cs",
    "content": "﻿using System.Windows.Media;\nusing LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class ColorExtensions\n{\n    public static RGBColor ToRGBColor(this Color color) => new(color.R, color.G, color.B);\n}"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/ComboBoxExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class ComboBoxExtensions\n{\n    public static IEnumerable<T> GetItems<T>(this ComboBox comboBox)\n    {\n        return comboBox.Items.OfType<ComboBoxItem<T>>().Select(item => item.Value);\n    }\n\n    public static void SetItems<T>(this ComboBox comboBox, IEnumerable<T> items, T selectedItem, Func<T, object>? displayValueConverter = null)\n    {\n        var boxedItems = items.Select(v => new ComboBoxItem<T>(v, displayValueConverter)).ToArray();\n        var selectedBoxedItem = boxedItems.FirstOrDefault(bv => EqualityComparer<T>.Default.Equals(bv.Value, selectedItem));\n\n        comboBox.Items.Clear();\n        comboBox.Items.AddRange(boxedItems);\n        comboBox.SelectedValue = selectedBoxedItem;\n    }\n\n    public static void SelectItem<T>(this ComboBox comboBox, T item) where T : struct\n    {\n        var boxedItems = comboBox.Items.OfType<ComboBoxItem<T>>().Select(i => i.Value).ToArray();\n        comboBox.SelectedIndex = Array.IndexOf(boxedItems, item);\n    }\n\n    public static void ClearItems(this ComboBox comboBox)\n    {\n        comboBox.Items.Clear();\n        comboBox.SelectedValue = null;\n    }\n\n    public static bool TryGetSelectedItem<T>(this ComboBox comboBox, out T? value)\n    {\n        if (comboBox.SelectedItem is ComboBoxItem<T> selectedBoxedItem)\n        {\n            value = selectedBoxedItem.Value;\n            return true;\n        }\n\n        value = default;\n        return false;\n    }\n\n    public static T? GetNewValue<T>(this SelectionChangedEventArgs args) where T : struct\n    {\n        var items = args.AddedItems;\n        if (items.Count < 1 || items[0] is not ComboBoxItem<T> item)\n            return null;\n        return item.Value;\n    }\n\n    public static T? GetOldValue<T>(this SelectionChangedEventArgs args) where T : struct\n    {\n        var items = args.RemovedItems;\n        if (items.Count < 1 || items[0] is not ComboBoxItem<T> item)\n            return null;\n        return item.Value;\n    }\n\n    private class ComboBoxItem<T>(T value, Func<T, object>? displayString)\n    {\n        public static bool operator ==(ComboBoxItem<T> left, ComboBoxItem<T> right) => left.Equals(right);\n\n        public static bool operator !=(ComboBoxItem<T> left, ComboBoxItem<T> right) => !(left == right);\n\n        public T Value { get; } = value;\n\n        public override bool Equals(object? obj) => obj is ComboBoxItem<T> item && EqualityComparer<T>.Default.Equals(Value, item.Value);\n\n        public override int GetHashCode() => HashCode.Combine(Value);\n\n        public override string ToString() => displayString?.Invoke(Value).ToString() ?? Value?.ToString() ?? string.Empty;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/DashboardItemExtensions.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.WPF.Controls;\nusing LenovoLegionToolkit.WPF.Controls.Dashboard;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class DashboardItemExtensions\n{\n    public static SymbolRegular GetIcon(this DashboardItem dashboardItem) => dashboardItem switch\n    {\n        DashboardItem.PowerMode => SymbolRegular.Gauge24,\n        DashboardItem.BatteryMode => SymbolRegular.BatteryCharge24,\n        DashboardItem.BatteryNightChargeMode => SymbolRegular.WeatherMoon24,\n        DashboardItem.AlwaysOnUsb => SymbolRegular.UsbStick24,\n        DashboardItem.InstantBoot => SymbolRegular.PlugDisconnected24,\n        DashboardItem.HybridMode => SymbolRegular.LeafOne24,\n        DashboardItem.DiscreteGpu => SymbolRegular.DeveloperBoard24,\n        DashboardItem.OverclockDiscreteGpu => SymbolRegular.DeveloperBoardLightning20,\n        DashboardItem.Resolution => SymbolRegular.ScaleFill24,\n        DashboardItem.RefreshRate => SymbolRegular.DesktopPulse24,\n        DashboardItem.DpiScale => SymbolRegular.TextFontSize24,\n        DashboardItem.Hdr => SymbolRegular.Hdr24,\n        DashboardItem.OverDrive => SymbolRegular.TopSpeed24,\n        DashboardItem.PanelLogoBacklight => SymbolRegular.LightbulbCircle24,\n        DashboardItem.PortsBacklight => SymbolRegular.UsbPlug24,\n        DashboardItem.TurnOffMonitors => SymbolRegular.Desktop24,\n        DashboardItem.Microphone => SymbolRegular.Mic24,\n        DashboardItem.FlipToStart => SymbolRegular.Power24,\n        DashboardItem.TouchpadLock => SymbolRegular.Tablet24,\n        DashboardItem.FnLock => SymbolRegular.Keyboard24,\n        DashboardItem.WinKeyLock => SymbolRegular.Keyboard24,\n        DashboardItem.WhiteKeyboardBacklight => SymbolRegular.Keyboard24,\n        _ => throw new InvalidOperationException($\"Invalid DashboardItem {dashboardItem}\"),\n    };\n\n    public static string GetTitle(this DashboardItem dashboardItem) => dashboardItem switch\n    {\n        DashboardItem.PowerMode => Resource.PowerModeControl_Title,\n        DashboardItem.BatteryMode => Resource.BatteryModeControl_Title,\n        DashboardItem.BatteryNightChargeMode => Resource.BatteryNightChargeModeControl_Title,\n        DashboardItem.AlwaysOnUsb => Resource.AlwaysOnUSBControl_Title,\n        DashboardItem.InstantBoot => Resource.InstantBootControl_Title,\n        DashboardItem.HybridMode => $\"{Resource.ComboBoxHybridModeControl_Title} / {Resource.ToggleHybridModeControl_Title}\",\n        DashboardItem.DiscreteGpu => Resource.DiscreteGPUControl_Title,\n        DashboardItem.OverclockDiscreteGpu => Resource.OverclockDiscreteGPUControl_Title,\n        DashboardItem.Resolution => Resource.ResolutionControl_Title,\n        DashboardItem.RefreshRate => Resource.RefreshRateControl_Title,\n        DashboardItem.DpiScale => Resource.DpiScaleControl_Title,\n        DashboardItem.Hdr => Resource.HDRControl_Title,\n        DashboardItem.OverDrive => Resource.OverDriveControl_Title,\n        DashboardItem.PanelLogoBacklight => Resource.PanelLogoBacklightControl_Title,\n        DashboardItem.PortsBacklight => Resource.PortsBacklightControl_Title,\n        DashboardItem.TurnOffMonitors => Resource.TurnOffMonitorsControl_Title,\n        DashboardItem.Microphone => Resource.MicrophoneControl_Title,\n        DashboardItem.FlipToStart => Resource.FlipToStartControl_Title,\n        DashboardItem.TouchpadLock => Resource.TouchpadLockControl_Title,\n        DashboardItem.FnLock => Resource.FnLockControl_Title,\n        DashboardItem.WinKeyLock => Resource.WinKeyControl_Title,\n        DashboardItem.WhiteKeyboardBacklight => Resource.WhiteKeyboardBacklightControl_Title,\n        _ => throw new InvalidOperationException($\"Invalid DashboardItem {dashboardItem}\"),\n    };\n\n    public static async Task<IEnumerable<AbstractRefreshingControl>> GetControlAsync(this DashboardItem dashboardItem) => dashboardItem switch\n    {\n        DashboardItem.PowerMode => [new PowerModeControl()],\n        DashboardItem.BatteryMode => [new BatteryModeControl()],\n        DashboardItem.BatteryNightChargeMode => [new BatteryNightChargeModeControl()],\n        DashboardItem.AlwaysOnUsb => [new AlwaysOnUSBControl()],\n        DashboardItem.InstantBoot => [new InstantBootControl()],\n        DashboardItem.HybridMode => [await HybridModeControlFactory.GetControlAsync()],\n        DashboardItem.DiscreteGpu => [new DiscreteGPUControl()],\n        DashboardItem.OverclockDiscreteGpu => [new OverclockDiscreteGPUControl()],\n        DashboardItem.Resolution => [new ResolutionControl()],\n        DashboardItem.RefreshRate => [new RefreshRateControl()],\n        DashboardItem.DpiScale => [new DpiScaleControl()],\n        DashboardItem.Hdr => [new HDRControl()],\n        DashboardItem.OverDrive => [new OverDriveControl()],\n        DashboardItem.PanelLogoBacklight => [new PanelLogoBacklightControl()],\n        DashboardItem.PortsBacklight => [new PortsBacklightControl()],\n        DashboardItem.TurnOffMonitors => [new TurnOffMonitorsControl()],\n        DashboardItem.Microphone => [new MicrophoneControl()],\n        DashboardItem.FlipToStart => [new FlipToStartControl()],\n        DashboardItem.TouchpadLock => [new TouchpadLockControl()],\n        DashboardItem.FnLock => [new FnLockControl()],\n        DashboardItem.WinKeyLock => [new WinKeyControl()],\n        DashboardItem.WhiteKeyboardBacklight => [new WhiteKeyboardBacklightControl(), new OneLevelWhiteKeyboardBacklightControl()],\n        _ => throw new InvalidOperationException($\"Invalid DashboardItem {dashboardItem}\"),\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/DispatcherExtensions.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows.Threading;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class DispatcherExtensions\n{\n    public static void InvokeTask(this Dispatcher dispatcher, Func<Task> action) => dispatcher.Invoke(async () => await action());\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/ImageSourceExtensions.cs",
    "content": "﻿using System;\nusing System.Drawing;\nusing System.Reflection;\nusing System.Windows;\nusing System.Windows.Interop;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class ImageSourceExtensions\n{\n    public static ImageSource? ApplicationIcon(string? exePath)\n    {\n        if (exePath is null)\n            return null;\n\n        try\n        {\n            var icon = Icon.ExtractAssociatedIcon(exePath);\n            if (icon is null)\n                return null;\n\n            var imageSource = Imaging.CreateBitmapSourceFromHIcon(\n                icon.Handle,\n                Int32Rect.Empty,\n                BitmapSizeOptions.FromEmptyOptions());\n\n            return imageSource;\n\n        }\n        catch\n        {\n            return null;\n        }\n    }\n\n    public static ImageSource FromResource(string name)\n    {\n        var assemblyName = Assembly.GetExecutingAssembly().GetName().Name;\n        var path = \"pack://application:,,,/\" + assemblyName + \";component/\" + name;\n        var uri = new Uri(path, UriKind.RelativeOrAbsolute);\n        return BitmapFrame.Create(uri);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/ItemCollectionExtensions.cs",
    "content": "﻿using System.Collections;\nusing System.Windows.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class ItemCollectionExtensions\n{\n    public static void AddRange(this ItemCollection itemCollection, IEnumerable enumerable)\n    {\n        foreach (var item in enumerable)\n            itemCollection.Add(item);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/NavigationStoreExtensions.cs",
    "content": "﻿using System.Linq;\nusing Wpf.Ui.Controls;\nusing Wpf.Ui.Controls.Interfaces;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class NavigationStoreExtensions\n{\n    public static void NavigateToNext(this NavigationStore navigationStore)\n    {\n        var navigationItems = navigationStore.Items.OfType<INavigationItem>().ToList();\n        var current = navigationStore.Current ?? navigationItems.FirstOrDefault();\n\n        if (current is null)\n            return;\n\n        var index = (navigationItems.IndexOf(current) + 1) % navigationItems.Count;\n        var next = navigationItems[index];\n\n        navigationStore.Navigate(next.PageTag);\n    }\n\n    public static void NavigateToPrevious(this NavigationStore navigationStore)\n    {\n        var navigationItems = navigationStore.Items.OfType<INavigationItem>().ToList();\n        var current = navigationStore.Current ?? navigationItems.FirstOrDefault();\n\n        if (current is null)\n            return;\n\n        var index = navigationItems.IndexOf(current) - 1;\n        if (index < 0)\n            index = navigationItems.Count - 1;\n        var next = navigationItems[index];\n\n        navigationStore.Navigate(next.PageTag);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/PowerModeStateExtensions.cs",
    "content": "﻿using System.Windows.Media;\nusing LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class PowerModeStateExtensions\n{\n    public static SolidColorBrush GetSolidColorBrush(this PowerModeState powerModeState) => new(powerModeState switch\n    {\n        PowerModeState.Quiet => Color.FromRgb(53, 123, 242),\n        PowerModeState.Balance => Colors.White,\n        PowerModeState.Performance => Color.FromRgb(212, 51, 51),\n        PowerModeState.GodMode => Color.FromRgb(99, 52, 227),\n        _ => Colors.Transparent,\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/RGBColorExtensions.cs",
    "content": "﻿using System.Windows.Media;\nusing LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class RGBColorExtensions\n{\n    public static Color ToColor(this RGBColor color) => Color.FromRgb(color.R, color.G, color.B);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/UIElementExtensions.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Media;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class UIElementExtensions\n{\n    public static IEnumerable<T> GetVisibleChildrenOfType<T>(this UIElement depObj) where T : UIElement\n    {\n        if (depObj.Visibility != Visibility.Visible)\n            yield break;\n\n        for (var i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)\n        {\n            var child = VisualTreeHelper.GetChild(depObj, i);\n\n            switch (child)\n            {\n                case T value:\n                    {\n                        yield return value;\n                        break;\n                    }\n                case UIElement element:\n                    {\n                        foreach (var sub in GetVisibleChildrenOfType<T>(element))\n                            yield return sub;\n                        break;\n                    }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/UriExtensions.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class UriExtensions\n{\n    public static void Open(this Uri uri) => Process.Start(new ProcessStartInfo(uri.AbsoluteUri) { UseShellExecute = true });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Extensions/WindowExtensions.cs",
    "content": "﻿using System.Windows;\n\nnamespace LenovoLegionToolkit.WPF.Extensions;\n\npublic static class WindowExtensions\n{\n    public static void BringToForeground(this Window window)\n    {\n        window.ShowInTaskbar = true;\n\n        if (window.WindowState == WindowState.Minimized || window.Visibility == Visibility.Hidden)\n        {\n            window.Show();\n            window.WindowState = WindowState.Normal;\n        }\n\n        window.Activate();\n        window.Topmost = true;\n        window.Topmost = false;\n        window.Focus();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Flags.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Linq;\nusing LenovoLegionToolkit.Lib.Utils;\n\n// ReSharper disable StringLiteralTypo\n\nnamespace LenovoLegionToolkit.WPF;\n\npublic class Flags\n{\n    public bool IsTraceEnabled { get; }\n    public bool Minimized { get; }\n    public bool SkipCompatibilityCheck { get; }\n    public bool DisableTrayTooltip { get; }\n    public bool AllowAllPowerModesOnBattery { get; }\n    public bool ForceDisableRgbKeyboardSupport { get; }\n    public bool ForceDisableSpectrumKeyboardSupport { get; }\n    public bool ForceDisableLenovoLighting { get; }\n    public bool ExperimentalGPUWorkingMode { get; }\n    public bool EnableHybridModeAutomation { get; }\n    public Uri? ProxyUrl { get; }\n    public string? ProxyUsername { get; }\n    public string? ProxyPassword { get; }\n    public bool ProxyAllowAllCerts { get; }\n    public bool DisableUpdateChecker { get; }\n    public bool DisableConflictingSoftwareWarning { get; }\n\n    public Flags(IEnumerable<string> startupArgs)\n    {\n        var args = startupArgs.Concat(LoadExternalArgs()).ToArray();\n\n        IsTraceEnabled = BoolValue(args, \"--trace\");\n        Minimized = BoolValue(args, \"--minimized\");\n        SkipCompatibilityCheck = BoolValue(args, \"--skip-compat-check\");\n        DisableTrayTooltip = BoolValue(args, \"--disable-tray-tooltip\");\n        AllowAllPowerModesOnBattery = BoolValue(args, \"--allow-all-power-modes-on-battery\");\n        ForceDisableRgbKeyboardSupport = BoolValue(args, \"--force-disable-rgbkb\");\n        ForceDisableSpectrumKeyboardSupport = BoolValue(args, \"--force-disable-spectrumkb\");\n        ForceDisableLenovoLighting = BoolValue(args, \"--force-disable-lenovolighting\");\n        ExperimentalGPUWorkingMode = BoolValue(args, \"--experimental-gpu-working-mode\");\n        EnableHybridModeAutomation = BoolValue(args, \"--enable-hybrid-mode-automation\");\n        ProxyUrl = Uri.TryCreate(StringValue(args, \"--proxy-url\"), UriKind.Absolute, out var uri) ? uri : null;\n        ProxyUsername = StringValue(args, \"--proxy-username\");\n        ProxyPassword = StringValue(args, \"--proxy-password\");\n        ProxyAllowAllCerts = BoolValue(args, \"--proxy-allow-all-certs\");\n        DisableUpdateChecker = BoolValue(args, \"--disable-update-checker\");\n        DisableConflictingSoftwareWarning = BoolValue(args, \"--disable-conflicting-software-warning\");\n    }\n\n    private static string[] LoadExternalArgs()\n    {\n        try\n        {\n            var argsFile = Path.Combine(Folders.AppData, \"args.txt\");\n            return !File.Exists(argsFile) ? [] : File.ReadAllLines(argsFile);\n        }\n        catch\n        {\n            return [];\n        }\n    }\n\n    private static bool BoolValue(IEnumerable<string> values, string key) => values.Contains(key);\n\n    private static string? StringValue(IEnumerable<string> values, string key)\n    {\n        var value = values.FirstOrDefault(s => s.StartsWith(key));\n        return value?.Remove(0, key.Length + 1);\n    }\n\n    public override string ToString() =>\n        $\"{nameof(IsTraceEnabled)}: {IsTraceEnabled},\" +\n        $\" {nameof(Minimized)}: {Minimized},\" +\n        $\" {nameof(SkipCompatibilityCheck)}: {SkipCompatibilityCheck},\" +\n        $\" {nameof(DisableTrayTooltip)}: {DisableTrayTooltip},\" +\n        $\" {nameof(AllowAllPowerModesOnBattery)}: {AllowAllPowerModesOnBattery},\" +\n        $\" {nameof(ForceDisableRgbKeyboardSupport)}: {ForceDisableRgbKeyboardSupport},\" +\n        $\" {nameof(ForceDisableSpectrumKeyboardSupport)}: {ForceDisableSpectrumKeyboardSupport},\" +\n        $\" {nameof(ForceDisableLenovoLighting)}: {ForceDisableLenovoLighting},\" +\n        $\" {nameof(ExperimentalGPUWorkingMode)}: {ExperimentalGPUWorkingMode},\" +\n        $\" {nameof(EnableHybridModeAutomation)}: {EnableHybridModeAutomation},\" +\n        $\" {nameof(ProxyUrl)}: {ProxyUrl},\" +\n        $\" {nameof(ProxyUsername)}: {ProxyUsername},\" +\n        $\" {nameof(ProxyPassword)}: {ProxyPassword},\" +\n        $\" {nameof(ProxyAllowAllCerts)}: {ProxyAllowAllCerts},\" +\n        $\" {nameof(DisableUpdateChecker)}: {DisableUpdateChecker}, \" +\n        $\" {nameof(DisableConflictingSoftwareWarning)}: {DisableConflictingSoftwareWarning}\";\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/GlobalSuppressions.cs",
    "content": "﻿// This file is used by Code Analysis to maintain SuppressMessage\n// attributes that are applied to this project.\n// Project-level suppressions either have no target or are given\n// a specific target and scoped to a namespace, type, member, etc.\n\nusing System.Diagnostics.CodeAnalysis;\n\n[assembly: SuppressMessage(\"Performance\", \"CA1822:Mark members as static\")]\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/IoCModule.cs",
    "content": "﻿using Autofac;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.WPF.CLI;\nusing LenovoLegionToolkit.WPF.Settings;\nusing LenovoLegionToolkit.WPF.Utils;\n\nnamespace LenovoLegionToolkit.WPF;\n\npublic class IoCModule : Module\n{\n    protected override void Load(ContainerBuilder builder)\n    {\n        builder.Register<MainThreadDispatcher>();\n\n        builder.Register<SpectrumScreenCapture>();\n\n        builder.Register<ThemeManager>().AutoActivate();\n        builder.Register<NotificationsManager>().AutoActivate();\n\n        builder.Register<DashboardSettings>();\n\n        builder.Register<IpcServer>();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/LenovoLegionToolkit.WPF.csproj",
    "content": "﻿<Project Sdk=\"Microsoft.NET.Sdk\">\n\t<PropertyGroup>\n\t\t<TargetFramework>net8.0-windows</TargetFramework>\n\t\t<RuntimeIdentifier>win-x64</RuntimeIdentifier>\n\t\t<Platforms>x64</Platforms>\n\t\t<OutputType>WinExe</OutputType>\n\t\t<ApplicationIcon>Assets/icon.ico</ApplicationIcon>\n\t\t<AssemblyName>Lenovo Legion Toolkit</AssemblyName>\n\t\t<Copyright>© 2024 Bartosz Cichecki</Copyright>\n\t\t<FileVersion>0.0.1</FileVersion>\n\t\t<Version>0.0.1</Version>\n\t\t<Nullable>enable</Nullable>\n\t\t<UseWPF>true</UseWPF>\n\t\t<UseWindowsForms>true</UseWindowsForms>\n\t\t<SelfContained>false</SelfContained>\n\t\t<PublishSingleFile>false</PublishSingleFile>\n\t\t<PublishReadyToRun>false</PublishReadyToRun>\n\t\t<PublishUrl>publish\\</PublishUrl>\n\t\t<IncludeAllContentForSelfExtract>false</IncludeAllContentForSelfExtract>\n\t\t<RollForward>Major</RollForward>\n\t</PropertyGroup>\n\t<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|AnyCPU'\">\n\t\t<SourceRevisionId>build$([System.DateTime]::UtcNow.ToString(\"yyyyMMddHHmmss\"))</SourceRevisionId>\n\t</PropertyGroup>\n\t<PropertyGroup>\n\t\t<ApplicationManifest>app.manifest</ApplicationManifest>\n\t\t<AllowUnsafeBlocks>True</AllowUnsafeBlocks>\n\t\t<NeutralLanguage>en</NeutralLanguage>\n\t\t<SatelliteResourceLanguages>ar;bg;cs;de;en;el;es;fr;hu;it;ja;lv;nl;nl-nl;pl;pt;pt-br;ro;ru;sk;uk;tr;vi;zh;zh-hans;zh-hant</SatelliteResourceLanguages>\n\t</PropertyGroup>\n\t<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Debug|AnyCPU'\">\n\t  <DebugType>portable</DebugType>\n\t</PropertyGroup>\n\t<PropertyGroup Condition=\"'$(Configuration)|$(Platform)'=='Release|AnyCPU'\">\n\t  <DebugType>embedded</DebugType>\n\t</PropertyGroup>\n\t<ItemGroup>\n\t\t<PackageReference Include=\"Autofac\" Version=\"8.2.0\" />\n\t\t<PackageReference Include=\"Humanizer\" Version=\"2.14.1\" />\n\t\t<PackageReference Include=\"Markdig\" Version=\"0.40.0\" />\n\t\t<PackageReference Include=\"Markdig.Wpf\" Version=\"0.5.0.1\" />\n\t\t<PackageReference Include=\"Microsoft.CSharp\" Version=\"4.7.0\" />\n\t\t<PackageReference Include=\"PixiEditor.ColorPicker\" Version=\"3.4.2\" />\n\t\t<PackageReference Include=\"WPF-UI\" Version=\"2.1.0\" />\n\t</ItemGroup>\n\t<ItemGroup>\n\t\t<ProjectReference Include=\"..\\LenovoLegionToolkit.Lib\\LenovoLegionToolkit.Lib.csproj\" />\n\t\t<ProjectReference Include=\"..\\LenovoLegionToolkit.Lib.Automation\\LenovoLegionToolkit.Lib.Automation.csproj\" />\n\t\t<ProjectReference Include=\"..\\LenovoLegionToolkit.Lib.Macro\\LenovoLegionToolkit.Lib.Macro.csproj\" />\n\t\t<ProjectReference Include=\"..\\LenovoLegionToolkit.CLI.Lib\\LenovoLegionToolkit.CLI.Lib.csproj\" />\n\t</ItemGroup>\n\t<ItemGroup>\n\t\t<None Remove=\"Assets\\icon.ico\" />\n\t\t<None Remove=\"Assets\\default_exe.png\" />\n\t\t<None Remove=\"Assets\\Donate\\paypal_logo.png\" />\n\t\t<None Remove=\"Assets\\Donate\\paypal_qr.png\" />\n\t</ItemGroup>\n\t<ItemGroup>\n\t\t<Resource Include=\"Assets\\default_exe.png\" />\n\t\t<Resource Include=\"Assets\\icon.ico\" />\n\t\t<Resource Include=\"Assets\\Donate\\paypal_logo.png\" />\n\t\t<Resource Include=\"Assets\\Donate\\paypal_qr.png\" />\n\t</ItemGroup>\n\t<ItemGroup>\n\t  <Compile Update=\"Assets\\AssetResources.Designer.cs\">\n\t    <DesignTime>True</DesignTime>\n\t    <AutoGen>True</AutoGen>\n\t    <DependentUpon>AssetResources.resx</DependentUpon>\n\t  </Compile>\n\t  <Compile Update=\"Resources\\Resource.Designer.cs\">\n\t    <DesignTime>True</DesignTime>\n\t    <AutoGen>True</AutoGen>\n\t    <DependentUpon>Resource.resx</DependentUpon>\n\t  </Compile>\n\t</ItemGroup>\n\t<ItemGroup>\n\t  <EmbeddedResource Update=\"Assets\\AssetResources.resx\">\n\t    <Generator>ResXFileCodeGenerator</Generator>\n\t    <LastGenOutput>AssetResources.Designer.cs</LastGenOutput>\n\t  </EmbeddedResource>\n\t  <EmbeddedResource Update=\"Resources\\Resource.resx\">\n\t    <Generator>PublicResXFileCodeGenerator</Generator>\n\t    <LastGenOutput>Resource.Designer.cs</LastGenOutput>\n\t  </EmbeddedResource>\n\t</ItemGroup>\n</Project>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/LenovoLegionToolkit.WPF.csproj.DotSettings",
    "content": "﻿<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namespace:System;assembly=mscorlib\" xmlns:ss=\"urn:shemas-jetbrains-com:settings-storage-xaml\" xmlns:wpf=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">\n\t<s:String x:Key=\"/Default/CodeInspection/Daemon/ConfigureAwaitAnalysisMode/@EntryValue\">UI</s:String></wpf:ResourceDictionary>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/AboutPage.xaml",
    "content": "﻿<wpfui:UiPage\n    x:Class=\"LenovoLegionToolkit.WPF.Pages.AboutPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.AboutPage_Title}\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Scrollable=\"True\">\n\n    <StackPanel Margin=\"0,0,16,12\">\n        <TextBlock\n            Margin=\"0,16,0,24\"\n            Focusable=\"True\"\n            FontSize=\"24\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.AboutPage_Title}\" />\n\n        <TextBlock\n            Padding=\"0,0,0,8\"\n            Focusable=\"True\"\n            FontSize=\"16\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.AboutPage_AppName}\" />\n        <TextBlock\n            x:Name=\"_version\"\n            Padding=\"0,0,0,8\"\n            Focusable=\"True\"\n            Text=\"{x:Static resources:Resource.AboutPage_Version}\" />\n        <TextBlock\n            x:Name=\"_build\"\n            Padding=\"0,0,0,16\"\n            Focusable=\"True\"\n            Text=\"{x:Static resources:Resource.AboutPage_Build}\" />\n\n        <TextBlock x:Name=\"_copyright\" Focusable=\"True\" />\n        <TextBlock\n            x:Name=\"_translationCredit\"\n            Padding=\"0,8,0,0\"\n            Text=\"{x:Static resources:Resource.AboutPage_TranslationCredit}\" />\n\n        <TextBlock\n            Padding=\"0,24,0,8\"\n            Focusable=\"True\"\n            FontSize=\"14\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.AboutPage_Links}\" />\n        <wpfui:Hyperlink\n            Content=\"{x:Static resources:Resource.AboutPage_ProjectWebsiteOnGitHub}\"\n            Icon=\"Link24\"\n            NavigateUri=\"https://github.com/BartoszCichecki/LenovoLegionToolkit\" />\n        <wpfui:Hyperlink\n            Content=\"{x:Static resources:Resource.AboutPage_LatestReleaseOnGitHub}\"\n            Icon=\"Link24\"\n            NavigateUri=\"https://github.com/BartoszCichecki/LenovoLegionToolkit/releases/latest\" />\n\n        <TextBlock\n            Padding=\"0,24,0,8\"\n            Focusable=\"True\"\n            FontSize=\"14\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.AboutPage_ThirdPartyLibraries}\" />\n\n        <Grid>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <StackPanel Grid.Column=\"0\" Margin=\"0,0,32,0\">\n                <wpfui:Hyperlink Content=\"AsyncLock\" NavigateUri=\"https://github.com/neosmart/AsyncLock\" />\n                <wpfui:Hyperlink Content=\"Autofac\" NavigateUri=\"https://github.com/autofac/Autofac\" />\n                <wpfui:Hyperlink Content=\"ColorPicker\" NavigateUri=\"https://github.com/PixiEditor/ColorPicker\" />\n                <wpfui:Hyperlink Content=\"CsWin32\" NavigateUri=\"https://github.com/microsoft/CsWin32\" />\n                <wpfui:Hyperlink Content=\"Demystifier\" NavigateUri=\"https://github.com/benaadams/Ben.Demystifier\" />\n                <wpfui:Hyperlink Content=\"Humanizer\" NavigateUri=\"https://github.com/Humanizr/Humanizer\" />\n            </StackPanel>\n            <StackPanel Grid.Column=\"1\" Margin=\"0,0,32,0\">\n                <wpfui:Hyperlink Content=\"ManagedNativeWifi\" NavigateUri=\"https://github.com/emoacht/ManagedNativeWifi\" />\n                <wpfui:Hyperlink Content=\"Markdig\" NavigateUri=\"https://github.com/xoofx/markdig\" />\n                <wpfui:Hyperlink Content=\"Markdig.Wpf\" NavigateUri=\"https://github.com/Kryptos-FR/markdig.wpf\" />\n                <wpfui:Hyperlink Content=\"NAudio.Wasapi\" NavigateUri=\"https://github.com/naudio/NAudio\" />\n                <wpfui:Hyperlink Content=\"Newtonsoft.Json\" NavigateUri=\"https://github.com/JamesNK/Newtonsoft.Json\" />\n                <wpfui:Hyperlink Content=\"NvAPIWrapper\" NavigateUri=\"https://github.com/falahati/NvAPIWrapper\" />\n            </StackPanel>\n            <StackPanel Grid.Column=\"2\">\n                <wpfui:Hyperlink Content=\"octokit\" NavigateUri=\"https://github.com/octokit/octokit.net\" />\n                <wpfui:Hyperlink Content=\"pubsub\" NavigateUri=\"https://github.com/upta/pubsub\" />\n                <wpfui:Hyperlink Content=\"TaskScheduler\" NavigateUri=\"https://github.com/dahall/TaskScheduler\" />\n                <wpfui:Hyperlink Content=\"WindowsDisplayAPI\" NavigateUri=\"https://github.com/falahati/WindowsDisplayAPI\" />\n                <wpfui:Hyperlink Content=\"wpfui\" NavigateUri=\"https://github.com/lepoco/wpfui\" />\n            </StackPanel>\n\n        </Grid>\n\n        <TextBlock\n            Padding=\"0,24,0,8\"\n            AutomationProperties.Name=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n            Focusable=\"True\"\n            FontSize=\"14\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.AboutPage_ApplicationFolders}\" />\n\n        <wpfui:Hyperlink\n            Click=\"OpenApplicationDataFolder_Click\"\n            Content=\"{x:Static resources:Resource.AboutPage_Data}\"\n            Icon=\"Folder24\" />\n        <wpfui:Hyperlink\n            Click=\"OpenApplicationTempFolder_Click\"\n            Content=\"{x:Static resources:Resource.AboutPage_Temp}\"\n            Icon=\"Folder24\" />\n\n    </StackPanel>\n</wpfui:UiPage>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/AboutPage.xaml.cs",
    "content": "﻿using System.Diagnostics;\nusing System.Globalization;\nusing System.IO;\nusing System.Reflection;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Resources;\n\nnamespace LenovoLegionToolkit.WPF.Pages;\n\npublic partial class AboutPage\n{\n    private static string VersionText\n    {\n        get\n        {\n            var version = Assembly.GetEntryAssembly()?.GetName().Version;\n            if (version is null)\n                return string.Empty;\n            if (version.IsBeta())\n                return \"BETA\";\n            return version.ToString(3);\n        }\n    }\n\n    private static string BuildText => Assembly.GetEntryAssembly()?.GetBuildDateTimeString() ?? string.Empty;\n\n    private static string CopyrightText\n    {\n        get\n        {\n            var location = Assembly.GetEntryAssembly()?.Location;\n            if (location is null)\n                return string.Empty;\n            return FileVersionInfo.GetVersionInfo(location).LegalCopyright ?? string.Empty;\n        }\n    }\n\n    public AboutPage()\n    {\n        InitializeComponent();\n\n        _version.Text += $\" {VersionText}\";\n        _build.Text += $\" {BuildText}\";\n        _copyright.Text = CopyrightText;\n\n        _translationCredit.Visibility = Resource.Culture.Equals(new CultureInfo(\"en\")) ? Visibility.Collapsed : Visibility.Visible;\n    }\n\n    private void OpenApplicationDataFolder_Click(object sender, RoutedEventArgs e)\n    {\n        if (!Directory.Exists(Folders.AppData))\n            return;\n\n        Process.Start(\"explorer\", Folders.AppData);\n    }\n\n    private void OpenApplicationTempFolder_Click(object sender, RoutedEventArgs e)\n    {\n        if (!Directory.Exists(Folders.Temp))\n            return;\n\n        Process.Start(\"explorer\", Folders.Temp);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/AutomationPage.xaml",
    "content": "﻿<wpfui:UiPage\n    x:Class=\"LenovoLegionToolkit.WPF.Pages.AutomationPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.AutomationPage_Title}\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\">\n\n    <Grid Margin=\"0,0,0,0\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:DynamicScrollViewer x:Name=\"_scrollViewer\" Grid.Row=\"0\">\n            <Grid Margin=\"0,0,16,12\">\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n\n                <StackPanel Grid.Row=\"0\" Margin=\"0,24,0,24\">\n\n                    <TextBlock\n                        Focusable=\"True\"\n                        FontSize=\"24\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.AutomationPage_Actions_Title}\" />\n\n                    <TextBlock\n                        Margin=\"0,8,0,0\"\n                        Focusable=\"True\"\n                        Text=\"{x:Static resources:Resource.AutomationPage_Actions_Message}\" />\n                </StackPanel>\n\n                <controls:LoadableControl\n                    x:Name=\"_loaderAutomatic\"\n                    Grid.Row=\"1\"\n                    ContentVisibilityWhileLoading=\"Collapsed\">\n                    <StackPanel>\n\n                        <custom:CardControl Margin=\"0,0,0,24\">\n                            <custom:CardControl.Header>\n                                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.AutomationPage_ActionsEnabled_Title}\" Subtitle=\"{x:Static resources:Resource.AutomationPage_ActionsEnable_Message}\" />\n                            </custom:CardControl.Header>\n                            <wpfui:ToggleSwitch\n                                x:Name=\"_enableAutomaticPipelinesToggle\"\n                                Margin=\"0,0,0,8\"\n                                AutomationProperties.Name=\"{x:Static resources:Resource.AutomationPage_ActionsEnabled_Title}\"\n                                Click=\"EnableAutomaticPipelinesToggle_Click\" />\n                        </custom:CardControl>\n\n                        <TextBlock\n                            x:Name=\"_noAutomaticActionsText\"\n                            Margin=\"0,16,0,16\"\n                            HorizontalAlignment=\"Center\"\n                            Focusable=\"True\"\n                            FontWeight=\"Medium\"\n                            Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                            Text=\"{x:Static resources:Resource.AutomationPage_Actions_Empty}\" />\n\n                        <StackPanel x:Name=\"_automaticPipelinesStackPanel\" />\n\n                        <StackPanel Margin=\"0,8,0,0\" HorizontalAlignment=\"Right\">\n                            <wpfui:Button\n                                x:Name=\"_newAutomaticPipelineButton\"\n                                MinWidth=\"120\"\n                                Appearance=\"Primary\"\n                                Click=\"NewAutomaticPipelineButton_Click\"\n                                Content=\"{x:Static resources:Resource.AddNew}\" />\n                        </StackPanel>\n\n                    </StackPanel>\n                </controls:LoadableControl>\n\n                <StackPanel Grid.Row=\"2\" Margin=\"0,24,0,24\">\n\n                    <TextBlock\n                        Focusable=\"True\"\n                        FontSize=\"24\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.AutomationPage_QuickActions_Title}\" />\n\n                    <TextBlock\n                        Margin=\"0,8,0,0\"\n                        Focusable=\"True\"\n                        Text=\"{x:Static resources:Resource.AutomationPage_QuickActions_Message}\" />\n\n                </StackPanel>\n\n                <controls:LoadableControl\n                    x:Name=\"_loaderManual\"\n                    Grid.Row=\"3\"\n                    ContentVisibilityWhileLoading=\"Collapsed\">\n                    <StackPanel>\n\n                        <TextBlock\n                            x:Name=\"_noManualActionsText\"\n                            Margin=\"0,16,0,16\"\n                            HorizontalAlignment=\"Center\"\n                            Focusable=\"True\"\n                            FontWeight=\"Medium\"\n                            Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                            Text=\"{x:Static resources:Resource.AutomationPage_QuickActions_Empty}\" />\n\n                        <StackPanel x:Name=\"_manualPipelinesStackPanel\" />\n\n                        <StackPanel Margin=\"0,8,0,0\" HorizontalAlignment=\"Right\">\n                            <wpfui:Button\n                                MinWidth=\"120\"\n                                Appearance=\"Primary\"\n                                Click=\"NewManualPipelineButton_Click\"\n                                Content=\"{x:Static resources:Resource.AddNew}\" />\n                        </StackPanel>\n\n                    </StackPanel>\n                </controls:LoadableControl>\n\n            </Grid>\n        </wpfui:DynamicScrollViewer>\n\n        <StackPanel\n            x:Name=\"_saveRevertStackPanel\"\n            Grid.Row=\"1\"\n            Margin=\"12\"\n            HorizontalAlignment=\"Right\"\n            Orientation=\"Horizontal\"\n            Visibility=\"Collapsed\">\n\n            <wpfui:Button\n                x:Name=\"_saveButton\"\n                MinWidth=\"120\"\n                Appearance=\"Primary\"\n                Click=\"SaveButton_Click\"\n                Content=\"{x:Static resources:Resource.Save}\" />\n            <wpfui:Button\n                MinWidth=\"120\"\n                Margin=\"12,0,0,0\"\n                Click=\"RevertButton_Click\"\n                Content=\"{x:Static resources:Resource.Revert}\" />\n\n        </StackPanel>\n\n    </Grid>\n\n</wpfui:UiPage>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/AutomationPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Automation.Steps;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.WPF.Controls.Automation;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing LenovoLegionToolkit.WPF.Windows.Automation;\nusing LenovoLegionToolkit.WPF.Windows.Utils;\nusing Wpf.Ui.Common;\nusing MenuItem = Wpf.Ui.Controls.MenuItem;\n\nnamespace LenovoLegionToolkit.WPF.Pages;\n\npublic partial class AutomationPage\n{\n    public static bool EnableHybridModeAutomation;\n\n    private readonly AutomationProcessor _automationProcessor = IoCContainer.Resolve<AutomationProcessor>();\n\n    private IAutomationStep[] _supportedAutomationSteps = [];\n\n    public AutomationPage()\n    {\n        Initialized += AutomationPage_Initialized;\n\n        InitializeComponent();\n    }\n\n    private async void AutomationPage_Initialized(object? sender, EventArgs e)\n    {\n        await RefreshAsync();\n    }\n\n    private async void EnableAutomaticPipelinesToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var isChecked = _enableAutomaticPipelinesToggle.IsChecked;\n        if (isChecked.HasValue)\n            await _automationProcessor.SetEnabledAsync(isChecked.Value);\n    }\n\n    private void NewAutomaticPipelineButton_Click(object sender, RoutedEventArgs e)\n    {\n        var existingTriggersTypes = _automaticPipelinesStackPanel.Children.ToArray()\n            .OfType<AutomationPipelineControl>()\n            .Select(c => c.AutomationPipeline.Trigger)\n            .Where(t => t is not null)\n            .Select(t => t!.GetType())\n            .ToHashSet();\n\n        var window = new CreateAutomationPipelineWindow(existingTriggersTypes, AddAutomaticPipeline) { Owner = Window.GetWindow(this) };\n        window.ShowDialog();\n    }\n\n    private async void NewManualPipelineButton_Click(object sender, RoutedEventArgs e)\n    {\n        await AddManualPipelineAsync();\n    }\n\n    private async void SaveButton_Click(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            _saveButton.IsEnabled = false;\n            _saveButton.Content = Resource.Saving;\n\n            var automaticPipelines = _automaticPipelinesStackPanel.Children.ToArray()\n                .OfType<AutomationPipelineControl>()\n                .Select(c => c.CreateAutomationPipeline())\n                .ToList();\n\n            var manualPipelines = _manualPipelinesStackPanel.Children.ToArray()\n                .OfType<AutomationPipelineControl>()\n                .Select(c => c.CreateAutomationPipeline())\n                .ToList();\n\n            var pipelines = new List<AutomationPipeline>();\n            pipelines.AddRange(automaticPipelines);\n            pipelines.AddRange(manualPipelines);\n\n            await _automationProcessor.ReloadPipelinesAsync(pipelines);\n            await RefreshAsync();\n\n            await SnackbarHelper.ShowAsync(Resource.AutomationPage_Saved_Title, Resource.AutomationPage_Saved_Message);\n        }\n        finally\n        {\n            _saveButton.Content = Resource.Save;\n            _saveButton.IsEnabled = true;\n        }\n    }\n\n    private async void RevertButton_Click(object sender, RoutedEventArgs e)\n    {\n        await RefreshAsync();\n\n        await SnackbarHelper.ShowAsync(Resource.AutomationPage_Reverted_Title, Resource.AutomationPage_Reverted_Message);\n    }\n\n    private async Task RefreshAsync()\n    {\n        _scrollViewer.ScrollToTop();\n\n        _loaderAutomatic.IsLoading = true;\n        _loaderManual.IsLoading = true;\n\n        var initializedTasks = new List<Task> { Task.Delay(TimeSpan.FromSeconds(1)) };\n\n        _enableAutomaticPipelinesToggle.IsChecked = _automationProcessor.IsEnabled;\n\n        _automaticPipelinesStackPanel.Children.Clear();\n        _manualPipelinesStackPanel.Children.Clear();\n\n        var pipelines = await _automationProcessor.GetPipelinesAsync();\n\n        if (_supportedAutomationSteps.IsEmpty())\n            _supportedAutomationSteps = await GetSupportedAutomationStepsAsync();\n\n        foreach (var pipeline in pipelines.Where(p => p.Trigger is not null))\n        {\n            var control = GenerateControl(pipeline, _automaticPipelinesStackPanel);\n            _automaticPipelinesStackPanel.Children.Add(control);\n            initializedTasks.Add(control.InitializedTask);\n        }\n\n        foreach (var pipeline in pipelines.Where(p => p.Trigger is null))\n        {\n            var control = GenerateControl(pipeline, _manualPipelinesStackPanel, false);\n            _manualPipelinesStackPanel.Children.Add(control);\n            initializedTasks.Add(control.InitializedTask);\n        }\n\n        _saveRevertStackPanel.Visibility = Visibility.Collapsed;\n\n        _noAutomaticActionsText.Visibility = _automaticPipelinesStackPanel.Children.Count < 1\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n        _noManualActionsText.Visibility = _manualPipelinesStackPanel.Children.Count < 1\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n\n        await Task.WhenAll(initializedTasks);\n\n        _loaderAutomatic.IsLoading = false;\n        _loaderManual.IsLoading = false;\n    }\n\n    private static async Task<IAutomationStep[]> GetSupportedAutomationStepsAsync()\n    {\n        var steps = new List<IAutomationStep>\n        {\n            new AlwaysOnUsbAutomationStep(default),\n            new BatteryAutomationStep(default),\n            new BatteryNightChargeAutomationStep(default),\n            new DeactivateGPUAutomationStep(default),\n            new DelayAutomationStep(default),\n            new DisplayBrightnessAutomationStep(50),\n            new DpiScaleAutomationStep(default),\n            new FlipToStartAutomationStep(default),\n            new FnLockAutomationStep(default),\n            new GodModePresetAutomationStep(default),\n            new HDRAutomationStep(default),\n            new InstantBootAutomationStep(default),\n            new MacroAutomationStep(default),\n            new MicrophoneAutomationStep(default),\n            new SpeakerAutomationStep(default),\n            new NotificationAutomationStep(default),\n            new OneLevelWhiteKeyboardBacklightAutomationStep(default),\n            new OverclockDiscreteGPUAutomationStep(default),\n            new OverDriveAutomationStep(default),\n            new PanelLogoBacklightAutomationStep(default),\n            new PlaySoundAutomationStep(default),\n            new PortsBacklightAutomationStep(default),\n            new PowerModeAutomationStep(default),\n            new QuickActionAutomationStep(default),\n            new RefreshRateAutomationStep(default),\n            new ResolutionAutomationStep(default),\n            new RGBKeyboardBacklightAutomationStep(default),\n            new RunAutomationStep(default, default, default, default),\n            new SpectrumKeyboardBacklightBrightnessAutomationStep(0),\n            new SpectrumKeyboardBacklightProfileAutomationStep(1),\n            new SpectrumKeyboardBacklightImportProfileAutomationStep(default),\n            new TouchpadLockAutomationStep(default),\n            new TurnOffMonitorsAutomationStep(),\n            new TurnOffWiFiAutomationStep(),\n            new TurnOnWiFiAutomationStep(),\n            new WhiteKeyboardBacklightAutomationStep(default),\n            new WinKeyAutomationStep(default)\n        };\n\n        if (EnableHybridModeAutomation)\n            steps.Add(new HybridModeAutomationStep(default));\n\n        for (var index = steps.Count - 1; index >= 0; index--)\n        {\n            if (!await steps[index].IsSupportedAsync())\n                steps.RemoveAt(index);\n        }\n\n        return [.. steps];\n    }\n\n    private AutomationPipelineControl GenerateControl(AutomationPipeline pipeline, Panel stackPanel, bool allowQuickActionAutomationStep = true)\n    {\n        var supportedSteps = _supportedAutomationSteps;\n        if (!allowQuickActionAutomationStep)\n        {\n            supportedSteps = Array.FindAll(supportedSteps, s => s is not QuickActionAutomationStep);\n        }\n\n        var control = new AutomationPipelineControl(pipeline, supportedSteps);\n        control.MouseRightButtonUp += (_, e) =>\n        {\n            ShowPipelineContextMenu(control, stackPanel);\n            e.Handled = true;\n        };\n        control.OnChanged += (_, _) => PipelinesChanged();\n        control.OnDelete += (s, _) =>\n        {\n            if (s is AutomationPipelineControl c)\n                DeletePipeline(c, stackPanel);\n        };\n        return control;\n    }\n\n    private void PipelinesChanged()\n    {\n        _saveRevertStackPanel.Visibility = Visibility.Visible;\n    }\n\n    private void ShowPipelineContextMenu(AutomationPipelineControl control, Panel stackPanel)\n    {\n        var menuItems = new List<MenuItem>();\n\n        var index = stackPanel.Children.IndexOf(control);\n        var maxIndex = stackPanel.Children.Count - 1;\n\n        var moveUpMenuItem = new MenuItem { SymbolIcon = SymbolRegular.ArrowUp24, Header = Resource.MoveUp };\n        if (index > 0)\n            moveUpMenuItem.Click += (_, _) => MovePipeline(control, stackPanel, index - 1);\n        else\n            moveUpMenuItem.IsEnabled = false;\n        menuItems.Add(moveUpMenuItem);\n\n        var moveDownMenuItem = new MenuItem { SymbolIcon = SymbolRegular.ArrowDown24, Header = Resource.MoveDown };\n        if (index < maxIndex)\n            moveDownMenuItem.Click += (_, _) => MovePipeline(control, stackPanel, index + 1);\n        else\n            moveDownMenuItem.IsEnabled = false;\n        menuItems.Add(moveDownMenuItem);\n\n        var renameMenuItem = new MenuItem { SymbolIcon = SymbolRegular.Edit24, Header = Resource.Rename };\n        renameMenuItem.Click += async (_, _) => await RenamePipelineAsync(control);\n        menuItems.Add(renameMenuItem);\n\n        if (control.AutomationPipeline.Trigger is null)\n        {\n            var changeIconMenuItem = new MenuItem { SymbolIcon = SymbolRegular.Edit24, Header = Resource.AutomationPage_ChangeIcon };\n            changeIconMenuItem.Click += async (_, _) => await ChangePipelineIconAsync(control);\n            menuItems.Add(changeIconMenuItem);\n        }\n\n        var deleteMenuItem = new MenuItem { SymbolIcon = SymbolRegular.Delete24, Header = Resource.Delete };\n        deleteMenuItem.Click += (_, _) => DeletePipeline(control, stackPanel);\n        menuItems.Add(deleteMenuItem);\n\n        control.ContextMenu = new();\n        control.ContextMenu.Items.AddRange(menuItems);\n        control.ContextMenu.IsOpen = true;\n    }\n\n    private void MovePipeline(UIElement control, Panel stackPanel, int index)\n    {\n        stackPanel.Children.Remove(control);\n        stackPanel.Children.Insert(index, control);\n\n        PipelinesChanged();\n    }\n\n    private void AddAutomaticPipeline(IAutomationPipelineTrigger trigger)\n    {\n        var pipeline = new AutomationPipeline(trigger);\n        var control = GenerateControl(pipeline, _automaticPipelinesStackPanel);\n        _automaticPipelinesStackPanel.Children.Insert(0, control);\n\n        _noAutomaticActionsText.Visibility = _automaticPipelinesStackPanel.Children.Count < 1\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n\n        PipelinesChanged();\n    }\n\n    private async Task AddManualPipelineAsync()\n    {\n        var newName = await MessageBoxHelper.ShowInputAsync(this,\n            Resource.AutomationPage_AddManualPipeline_Title,\n            Resource.AutomationPage_AddManualPipeline_Placeholder);\n        if (string.IsNullOrWhiteSpace(newName))\n            return;\n\n        var pipeline = new AutomationPipeline(newName);\n        var control = GenerateControl(pipeline, _manualPipelinesStackPanel, false);\n        _manualPipelinesStackPanel.Children.Insert(0, control);\n\n        _noManualActionsText.Visibility = _manualPipelinesStackPanel.Children.Count < 1\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n\n        PipelinesChanged();\n    }\n\n    private async Task RenamePipelineAsync(AutomationPipelineControl control)\n    {\n        var name = control.GetName();\n        var newName = await MessageBoxHelper.ShowInputAsync(this,\n            Resource.AutomationPage_RenamePipeline_Title,\n            Resource.AutomationPage_RenamePipeline_Placeholder,\n            name,\n            allowEmpty: true);\n\n        control.SetName(newName);\n    }\n\n    private async Task ChangePipelineIconAsync(AutomationPipelineControl control)\n    {\n        try\n        {\n            var window = new SymbolRegularPicker { Owner = Window.GetWindow(this) };\n            window.ShowDialog();\n\n            var icon = await window.SymbolRegularTask;\n            control.SetIcon(icon);\n        }\n        catch (OperationCanceledException) { }\n    }\n\n    private void DeletePipeline(UIElement control, Panel stackPanel)\n    {\n        stackPanel.Children.Remove(control);\n\n        _noAutomaticActionsText.Visibility = _automaticPipelinesStackPanel.Children.Count < 1\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n        _noManualActionsText.Visibility = _manualPipelinesStackPanel.Children.Count < 1\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n\n        PipelinesChanged();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/BatteryPage.xaml",
    "content": "﻿<wpfui:UiPage\n    x:Class=\"LenovoLegionToolkit.WPF.Pages.BatteryPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.BatteryPage_Title}\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Scrollable=\"True\">\n\n    <StackPanel Margin=\"0,0,16,12\">\n        <TextBlock\n            Margin=\"0,16,0,24\"\n            Focusable=\"True\"\n            FontSize=\"24\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.BatteryPage_Title}\" />\n\n        <StackPanel Margin=\"0,0,0,24\" Orientation=\"Horizontal\">\n            <wpfui:SymbolIcon\n                x:Name=\"_batteryIcon\"\n                FontSize=\"96\"\n                Symbol=\"Battery024\" />\n            <StackPanel\n                Margin=\"16,0,0,0\"\n                VerticalAlignment=\"Center\"\n                Orientation=\"Vertical\">\n                <TextBlock\n                    x:Name=\"_percentRemaining\"\n                    Margin=\"0,0,0,4\"\n                    HorizontalAlignment=\"Left\"\n                    AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_Title}\"\n                    FlowDirection=\"LeftToRight\"\n                    Focusable=\"True\"\n                    FontSize=\"32\"\n                    FontWeight=\"Medium\" />\n                <TextBlock\n                    x:Name=\"_status\"\n                    Margin=\"0,0,0,2\"\n                    AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_Title}\"\n                    Focusable=\"True\"\n                    FontSize=\"16\"\n                    FontWeight=\"Medium\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n                <TextBlock\n                    x:Name=\"_lowBattery\"\n                    Margin=\"0,0,0,2\"\n                    Focusable=\"True\"\n                    FontSize=\"14\"\n                    Foreground=\"{DynamicResource SystemFillColorCautionBrush}\"\n                    Text=\"{x:Static resources:Resource.BatteryPage_LowLevel}\"\n                    Visibility=\"Hidden\" />\n                <TextBlock\n                    x:Name=\"_lowWattageCharger\"\n                    Focusable=\"True\"\n                    FontSize=\"14\"\n                    Foreground=\"{DynamicResource SystemFillColorCautionBrush}\"\n                    Text=\"{x:Static resources:Resource.BatteryPage_LowWattageChargerConnected}\"\n                    Visibility=\"Hidden\" />\n            </StackPanel>\n        </StackPanel>\n\n        <custom:CardControl x:Name=\"_batteryTemperatureCardControl\" Margin=\"0,0,0,24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_BatteryTemperature_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_BatteryTemperature_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryTemperatureText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_BatteryTemperature_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_DischargeRate_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_DischargeRate_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryDischargeRateText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_DischargeRate_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_MinDischargeRate_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_MinDischargeRate_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryMinDischargeRateText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_MinDischargeRate_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_MaxDischargeRate_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_MaxDischargeRate_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryMaxDischargeRateText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_MaxDischargeRate_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />    \n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_CurrentCapacity_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_CurrentCapacity_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryCapacityText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_CurrentCapacity_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_FullChargeCapacity_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_FullChargeCapacity_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryFullChargeCapacityText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_FullChargeCapacity_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_DesignCapacity_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_DesignCapacity_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryDesignCapacityText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_DesignCapacity_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_BatteryHealth_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_BatteryHealth_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryHealthText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_BatteryHealth_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />    \n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_OnBatterySince_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_OnBatterySince_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_onBatterySinceText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_OnBatterySince_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_CycleCount_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_CycleCount_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryCycleCountText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_CycleCount_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n        <custom:CardControl x:Name=\"_batteryManufactureDateCardControl\" Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_ManufactureDate_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_ManufactureDate_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryManufactureDateText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_ManufactureDate_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n        <custom:CardControl x:Name=\"_batteryFirstUseDateCardControl\" Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.BatteryPage_FirstUseDate_Title}\" Subtitle=\"{x:Static resources:Resource.BatteryPage_FirstUse_Message}\" />\n            </custom:CardControl.Header>\n            <TextBlock\n                x:Name=\"_batteryFirstUseDateText\"\n                AutomationProperties.HelpText=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.BatteryPage_FirstUseDate_Title}\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"True\"\n                FontSize=\"14\" />\n        </custom:CardControl>\n\n    </StackPanel>\n</wpfui:UiPage>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/BatteryPage.xaml.cs",
    "content": "﻿using System;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing Humanizer;\nusing Humanizer.Localisation;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Pages;\n\npublic partial class BatteryPage\n{\n    private readonly ApplicationSettings _settings = IoCContainer.Resolve<ApplicationSettings>();\n\n    private CancellationTokenSource? _cts;\n    private Task? _refreshTask;\n\n    public BatteryPage()\n    {\n        InitializeComponent();\n\n        IsVisibleChanged += BatteryPage_IsVisibleChanged;\n    }\n\n    private async void BatteryPage_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n        {\n            Refresh();\n            return;\n        }\n\n        if (_cts is not null)\n            await _cts.CancelAsync();\n\n        _cts = null;\n\n        if (_refreshTask is not null)\n            await _refreshTask;\n\n        _refreshTask = null;\n    }\n\n    private void Refresh()\n    {\n        _cts?.Cancel();\n        _cts = new CancellationTokenSource();\n\n        var token = _cts.Token;\n\n        _refreshTask = Task.Run(async () =>\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Battery information refresh started...\");\n\n            while (!token.IsCancellationRequested)\n            {\n                try\n                {\n                    var batteryInfo = Battery.GetBatteryInformation();\n                    var powerAdapterStatus = await Power.IsPowerAdapterConnectedAsync();\n                    var onBatterySince = Battery.GetOnBatterySince();\n                    Dispatcher.Invoke(() => Set(batteryInfo, powerAdapterStatus, onBatterySince));\n\n                    await Task.Delay(TimeSpan.FromSeconds(2), token);\n                }\n                catch (OperationCanceledException) { }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Battery information refresh failed.\", ex);\n                }\n            }\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Battery information refresh stopped.\");\n        }, token);\n    }\n\n    private void Set(BatteryInformation batteryInfo, PowerAdapterStatus powerAdapterStatus, DateTime? onBatterySince)\n    {\n        var number = (int)Math.Round(batteryInfo.BatteryPercentage / 10.0);\n        _batteryIcon.Symbol = number switch\n        {\n            10 => SymbolRegular.Battery1024,\n            9 => SymbolRegular.Battery924,\n            8 => SymbolRegular.Battery824,\n            7 => SymbolRegular.Battery724,\n            6 => SymbolRegular.Battery624,\n            5 => SymbolRegular.Battery524,\n            4 => SymbolRegular.Battery424,\n            3 => SymbolRegular.Battery324,\n            2 => SymbolRegular.Battery224,\n            1 => SymbolRegular.Battery124,\n            _ => SymbolRegular.Battery024,\n        };\n\n        _percentRemaining.Text = $\"{batteryInfo.BatteryPercentage}%\";\n        _status.Text = GetStatusText(batteryInfo);\n        _lowBattery.Visibility = batteryInfo.IsLowBattery ? Visibility.Visible : Visibility.Collapsed;\n        _lowWattageCharger.Visibility = powerAdapterStatus == PowerAdapterStatus.ConnectedLowWattage ? Visibility.Visible : Visibility.Collapsed;\n\n        if (batteryInfo.BatteryTemperatureC is not null)\n            _batteryTemperatureText.Text = GetTemperatureText(batteryInfo.BatteryTemperatureC);\n        else\n            _batteryTemperatureCardControl.Visibility = Visibility.Collapsed;\n\n        if (!batteryInfo.IsCharging && onBatterySince.HasValue)\n        {\n            var onBatterySinceValue = onBatterySince.Value;\n            var dateText = onBatterySinceValue.ToString(\"G\", Resource.Culture);\n            var duration = DateTime.Now.Subtract(onBatterySinceValue);\n            _onBatterySinceText.Text = $\"{dateText} ({duration.Humanize(2, Resource.Culture, minUnit: TimeUnit.Second)})\";\n        }\n        else\n        {\n            _onBatterySinceText.Text = \"-\";\n        }\n\n        _batteryDischargeRateText.Text = $\"{batteryInfo.DischargeRate / 1000.0:+0.00;-0.00;0.00} W\";\n        _batteryMinDischargeRateText.Text = $\"{batteryInfo.MinDischargeRate / 1000.0:+0.00;-0.00;0.00} W\";\n        _batteryMaxDischargeRateText.Text = $\"{batteryInfo.MaxDischargeRate / 1000.0:+0.00;-0.00;0.00} W\";\n        _batteryCapacityText.Text = $\"{batteryInfo.EstimateChargeRemaining / 1000.0:0.00} Wh\";\n        _batteryFullChargeCapacityText.Text = $\"{batteryInfo.FullChargeCapacity / 1000.0:0.00} Wh\";\n        _batteryDesignCapacityText.Text = $\"{batteryInfo.DesignCapacity / 1000.0:0.00} Wh\";\n        _batteryHealthText.Text = $\"{batteryInfo.BatteryHealth:0.00} %\";\n\n        if (batteryInfo.ManufactureDate is not null)\n            _batteryManufactureDateText.Text = batteryInfo.ManufactureDate?.ToString(LocalizationHelper.ShortDateFormat) ?? \"-\";\n        else\n            _batteryManufactureDateCardControl.Visibility = Visibility.Collapsed;\n\n        if (batteryInfo.FirstUseDate is not null)\n            _batteryFirstUseDateText.Text = batteryInfo.FirstUseDate?.ToString(LocalizationHelper.ShortDateFormat) ?? \"-\";\n        else\n            _batteryFirstUseDateCardControl.Visibility = Visibility.Collapsed;\n\n        _batteryCycleCountText.Text = $\"{batteryInfo.CycleCount}\";\n    }\n\n    private static string GetStatusText(BatteryInformation batteryInfo)\n    {\n        if (batteryInfo.IsCharging)\n        {\n            if (batteryInfo.DischargeRate > 0)\n                return Resource.BatteryPage_ACAdapterConnectedAndCharging;\n\n            return Resource.BatteryPage_ACAdapterConnectedNotCharging;\n        }\n\n        if (batteryInfo.BatteryLifeRemaining < 0)\n            return Resource.BatteryPage_EstimatingBatteryLife;\n\n        var time = TimeSpan.FromSeconds(batteryInfo.BatteryLifeRemaining).Humanize(2, Resource.Culture);\n        return string.Format(Resource.BatteryPage_EstimatedBatteryLifeRemaining, time);\n    }\n\n    private string GetTemperatureText(double? temperature)\n    {\n        _batteryTemperatureCardControl.Tag = temperature;\n\n        if (temperature is null)\n            return \"—\";\n\n        if (_settings.Store.TemperatureUnit == TemperatureUnit.F)\n        {\n            temperature *= 9.0 / 5.0;\n            temperature += 32;\n            return $\"{temperature:0.0} {Resource.Fahrenheit}\";\n        }\n\n        return $\"{temperature:0.0} {Resource.Celsius}\";\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/DashboardPage.xaml",
    "content": "﻿<wpfui:UiPage\n    x:Class=\"LenovoLegionToolkit.WPF.Pages.DashboardPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:dashboard=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Dashboard\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.DashboardPage_Title}\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Initialized=\"DashboardPage_Initialized\"\n    Scrollable=\"True\"\n    SizeChanged=\"DashboardPage_SizeChanged\">\n\n    <controls:LoadableControl\n        x:Name=\"_loader\"\n        Margin=\"0,0,0,12\"\n        IndicatorMargin=\"0,64,0,0\">\n        <StackPanel>\n            <dashboard:SensorsControl x:Name=\"_sensors\" Margin=\"0,16,16,0\" />\n            <Grid x:Name=\"_content\" />\n        </StackPanel>\n    </controls:LoadableControl>\n\n</wpfui:UiPage>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/DashboardPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Controls.Dashboard;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Settings;\nusing LenovoLegionToolkit.WPF.Windows.Dashboard;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Pages;\n\npublic partial class DashboardPage\n{\n    private readonly DashboardSettings _dashboardSettings = IoCContainer.Resolve<DashboardSettings>();\n\n    private readonly List<DashboardGroupControl> _dashboardGroupControls = [];\n\n    public DashboardPage() => InitializeComponent();\n\n    private async void DashboardPage_Initialized(object? sender, EventArgs e)\n    {\n        await RefreshAsync();\n    }\n\n    private async Task RefreshAsync()\n    {\n        _loader.IsLoading = true;\n\n        var initializedTasks = new List<Task> { Task.Delay(TimeSpan.FromSeconds(1)) };\n\n        ScrollHost?.ScrollToTop();\n\n        _sensors.Visibility = _dashboardSettings.Store.ShowSensors ? Visibility.Visible : Visibility.Collapsed;\n\n        _dashboardGroupControls.Clear();\n        _content.ColumnDefinitions.Clear();\n        _content.RowDefinitions.Clear();\n        _content.Children.Clear();\n\n        var groups = _dashboardSettings.Store.Groups ?? DashboardGroup.DefaultGroups;\n\n        if (Log.Instance.IsTraceEnabled)\n        {\n            Log.Instance.Trace($\"Groups:\");\n            foreach (var group in groups)\n                Log.Instance.Trace($\" - {group}\");\n        }\n\n        _content.ColumnDefinitions.Add(new ColumnDefinition { Width = new(1, GridUnitType.Star) });\n        _content.ColumnDefinitions.Add(new ColumnDefinition { Width = new(1, GridUnitType.Star) });\n\n        foreach (var group in groups)\n        {\n            _content.RowDefinitions.Add(new RowDefinition { Height = new(1, GridUnitType.Auto) });\n\n            var control = new DashboardGroupControl(group);\n            _content.Children.Add(control);\n            _dashboardGroupControls.Add(control);\n            initializedTasks.Add(control.InitializedTask);\n        }\n\n        _content.RowDefinitions.Add(new RowDefinition { Height = new(1, GridUnitType.Auto) });\n\n        var editDashboardHyperlink = new Hyperlink\n        {\n            Icon = SymbolRegular.Edit24,\n            Content = Resource.DashboardPage_Customize,\n            Margin = new(0, 16, 0, 0),\n            HorizontalAlignment = HorizontalAlignment.Center\n        };\n        editDashboardHyperlink.Click += (_, _) =>\n        {\n            var window = new EditDashboardWindow { Owner = Window.GetWindow(this) };\n            window.Apply += async (_, _) => await RefreshAsync();\n            window.ShowDialog();\n        };\n\n        Grid.SetRow(editDashboardHyperlink, groups.Length);\n        Grid.SetColumn(editDashboardHyperlink, 0);\n        Grid.SetColumnSpan(editDashboardHyperlink, 2);\n\n        _content.Children.Add(editDashboardHyperlink);\n\n        LayoutGroups(ActualWidth);\n\n        await Task.WhenAll(initializedTasks);\n\n        _loader.IsLoading = false;\n    }\n\n    private void DashboardPage_SizeChanged(object sender, SizeChangedEventArgs e)\n    {\n        if (!e.WidthChanged)\n            return;\n\n        LayoutGroups(e.NewSize.Width);\n    }\n\n    private void LayoutGroups(double width)\n    {\n        if (width > 1000)\n            Expand();\n        else\n            Collapse();\n    }\n\n    private void Expand()\n    {\n        var lastColumn = _content.ColumnDefinitions.LastOrDefault();\n        if (lastColumn is not null)\n            lastColumn.Width = new(1, GridUnitType.Star);\n\n        for (var index = 0; index < _dashboardGroupControls.Count; index++)\n        {\n            var control = _dashboardGroupControls[index];\n            Grid.SetRow(control, index - (index % 2));\n            Grid.SetColumn(control, index % 2);\n        }\n    }\n\n    private void Collapse()\n    {\n        var lastColumn = _content.ColumnDefinitions.LastOrDefault();\n        if (lastColumn is not null)\n            lastColumn.Width = new(0, GridUnitType.Pixel);\n\n        for (var index = 0; index < _dashboardGroupControls.Count; index++)\n        {\n            var control = _dashboardGroupControls[index];\n            Grid.SetRow(control, index);\n            Grid.SetColumn(control, 0);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/DonatePage.xaml",
    "content": "﻿<wpfui:UiPage\n    x:Class=\"LenovoLegionToolkit.WPF.Pages.DonatePage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.DonatePage_Title}\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Scrollable=\"True\">\n\n    <StackPanel Margin=\"0,0,16,12\">\n        <TextBlock\n            Margin=\"0,16,0,24\"\n            Focusable=\"True\"\n            FontSize=\"24\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.DonatePage_Title}\" />\n\n        <TextBlock\n            MaxWidth=\"450\"\n            Margin=\"0,0,0,24\"\n            HorizontalAlignment=\"Left\"\n            Focusable=\"True\"\n            FontSize=\"14\"\n            Text=\"{x:Static resources:Resource.DonatePage_Message}\"\n            TextAlignment=\"Justify\"\n            TextWrapping=\"Wrap\" />\n\n        <StackPanel x:Name=\"_paypal\" Margin=\"0,8,0,0\">\n\n            <Border\n                Width=\"300\"\n                HorizontalAlignment=\"Left\"\n                Background=\"Black\"\n                BorderBrush=\"Gray\"\n                BorderThickness=\"2\"\n                CornerRadius=\"16\"\n                Cursor=\"Hand\"\n                MouseLeftButtonDown=\"PayPalDonateButton_Click\"\n                MouseRightButtonDown=\"PayPalDonateButton_Click\">\n                <StackPanel Orientation=\"Vertical\">\n                    <Label\n                        Margin=\"0,8,0,-4\"\n                        HorizontalContentAlignment=\"Center\"\n                        Content=\"{x:Static resources:Resource.DonatePage_DonateWith}\"\n                        FontSize=\"16\"\n                        Foreground=\"White\" />\n                    <Image\n                        Height=\"48\"\n                        Margin=\"24,8,24,8\"\n                        RenderOptions.BitmapScalingMode=\"Fant\"\n                        Source=\"/Assets/Donate/paypal_logo.png\" />\n                </StackPanel>\n            </Border>\n\n            <Border\n                Width=\"300\"\n                Margin=\"0,16,0,0\"\n                HorizontalAlignment=\"Left\"\n                Background=\"White\"\n                CornerRadius=\"16\"\n                RenderOptions.BitmapScalingMode=\"Fant\">\n                <Image Margin=\"16\" Source=\"/Assets/Donate/paypal_qr.png\" />\n            </Border>\n\n        </StackPanel>\n\n    </StackPanel>\n</wpfui:UiPage>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/DonatePage.xaml.cs",
    "content": "﻿using System.Windows;\nusing LenovoLegionToolkit.WPF.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Pages;\n\npublic partial class DonatePage\n{\n    public DonatePage()\n    {\n        InitializeComponent();\n    }\n\n    private void PayPalDonateButton_Click(object sender, RoutedEventArgs e)\n    {\n        Constants.PayPalUri.Open();\n        e.Handled = true;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/KeyboardBacklightPage.xaml",
    "content": "﻿<wpfui:UiPage\n    x:Class=\"LenovoLegionToolkit.WPF.Pages.KeyboardBacklightPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.KeyboardBacklightPage_Title}\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Initialized=\"KeyboardBacklightPage_Initialized\"\n    Scrollable=\"True\">\n\n    <StackPanel Margin=\"0,0,0,0\">\n\n        <TextBlock\n            x:Name=\"_titleTextBlock\"\n            Margin=\"0,16,0,24\"\n            Focusable=\"True\"\n            FontSize=\"24\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.KeyboardBacklightPage_Title}\" />\n\n        <controls:LoadableControl x:Name=\"_loader\" IndicatorMargin=\"0,64,0,0\">\n            <StackPanel x:Name=\"_content\" Margin=\"0,0,8,0\">\n                <TextBlock\n                    x:Name=\"_noKeyboardsText\"\n                    FontSize=\"14\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                    Text=\"{x:Static resources:Resource.KeyboardBacklightPage_NoCompatibleKeyboardsFound}\"\n                    Visibility=\"Collapsed\" />\n            </StackPanel>\n        </controls:LoadableControl>\n\n    </StackPanel>\n\n</wpfui:UiPage>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/KeyboardBacklightPage.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.RGB;\nusing LenovoLegionToolkit.WPF.Controls.KeyboardBacklight.Spectrum;\n\nnamespace LenovoLegionToolkit.WPF.Pages;\n\npublic partial class KeyboardBacklightPage\n{\n    public KeyboardBacklightPage() => InitializeComponent();\n\n    private async void KeyboardBacklightPage_Initialized(object? sender, EventArgs e)\n    {\n        _titleTextBlock.Visibility = Visibility.Collapsed;\n\n        await Task.Delay(TimeSpan.FromSeconds(1));\n\n        _titleTextBlock.Visibility = Visibility.Visible;\n\n        var spectrumController = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();\n        if (await spectrumController.IsSupportedAsync())\n        {\n            var control = new SpectrumKeyboardBacklightControl();\n            _content.Children.Add(control);\n            _loader.IsLoading = false;\n            return;\n        }\n\n        var rgbController = IoCContainer.Resolve<RGBKeyboardBacklightController>();\n        if (await rgbController.IsSupportedAsync())\n        {\n            var control = new RGBKeyboardBacklightControl();\n            _content.Children.Add(control);\n            _loader.IsLoading = false;\n            return;\n        }\n\n        _noKeyboardsText.Visibility = Visibility.Visible;\n        _loader.IsLoading = false;\n    }\n    public static async Task<bool> IsSupportedAsync()\n    {\n        var spectrumController = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();\n        if (await spectrumController.IsSupportedAsync())\n            return true;\n\n        var rgbController = IoCContainer.Resolve<RGBKeyboardBacklightController>();\n        if (await rgbController.IsSupportedAsync())\n            return true;\n\n        return false;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/MacroPage.xaml",
    "content": "﻿<wpfui:UiPage\n    x:Class=\"LenovoLegionToolkit.WPF.Pages.MacroPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:macro=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Macro\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.MacroPage_Title}\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Scrollable=\"True\">\n\n    <StackPanel Margin=\"0,0,16,12\">\n        <TextBlock\n            Margin=\"0,16,0,8\"\n            Focusable=\"True\"\n            FontSize=\"24\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.MacroPage_Title}\" />\n\n        <TextBlock\n            Margin=\"0,0,0,24\"\n            Focusable=\"True\"\n            Text=\"{x:Static resources:Resource.MacroPage_Subtitle}\" />\n\n        <custom:CardControl Margin=\"0,0,0,32\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.MacroPage_Enable_Title}\" Subtitle=\"{x:Static resources:Resource.MacroPage_Enable_Subtitle}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_enableMacroToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.MacroPage_Enable_Title}\"\n                Click=\"EnableMacroToggle_Click\" />\n        </custom:CardControl>\n\n        <Grid VerticalAlignment=\"Stretch\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"*\" />\n            </Grid.RowDefinitions>\n\n            <Grid x:Name=\"_numberPad\" Grid.Column=\"0\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"56\" />\n                    <ColumnDefinition Width=\"56\" />\n                    <ColumnDefinition Width=\"56\" />\n                </Grid.ColumnDefinitions>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"56\" />\n                    <RowDefinition Height=\"56\" />\n                    <RowDefinition Height=\"56\" />\n                    <RowDefinition Height=\"56\" />\n                    <RowDefinition Height=\"56\" />\n                </Grid.RowDefinitions>\n\n                <wpfui:Button\n                    Grid.Row=\"0\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"7\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x67\" />\n                <wpfui:Button\n                    Grid.Row=\"0\"\n                    Grid.Column=\"1\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"8\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x68\" />\n                <wpfui:Button\n                    Grid.Row=\"0\"\n                    Grid.Column=\"2\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"9\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x69\" />\n\n                <wpfui:Button\n                    Grid.Row=\"1\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"4\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x64\" />\n                <wpfui:Button\n                    Grid.Row=\"1\"\n                    Grid.Column=\"1\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"5\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x65\" />\n                <wpfui:Button\n                    Grid.Row=\"1\"\n                    Grid.Column=\"2\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"6\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x66\" />\n\n                <wpfui:Button\n                    Grid.Row=\"2\"\n                    Grid.Column=\"0\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"1\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x61\" />\n                <wpfui:Button\n                    Grid.Row=\"2\"\n                    Grid.Column=\"1\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"2\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x62\" />\n                <wpfui:Button\n                    Grid.Row=\"2\"\n                    Grid.Column=\"2\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"3\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x63\" />\n\n                <wpfui:Button\n                    Grid.Row=\"3\"\n                    Grid.Column=\"1\"\n                    Margin=\"0,0,8,8\"\n                    HorizontalAlignment=\"Stretch\"\n                    VerticalAlignment=\"Stretch\"\n                    Click=\"NumberPadButton_Click\"\n                    Content=\"0\"\n                    FontSize=\"18\"\n                    FontWeight=\"SemiBold\"\n                    Tag=\"0x60\" />\n\n            </Grid>\n\n            <macro:MacroSequenceControl\n                x:Name=\"_sequenceControl\"\n                Grid.Column=\"1\"\n                Margin=\"32,0,0,0\" />\n\n        </Grid>\n    </StackPanel>\n</wpfui:UiPage>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/MacroPage.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Macro;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Pages;\n\npublic partial class MacroPage\n{\n    private readonly MacroController _controller = IoCContainer.Resolve<MacroController>();\n\n    public MacroPage()\n    {\n        Initialized += MacroPage_Initialized;\n\n        InitializeComponent();\n    }\n\n    private void MacroPage_Initialized(object? sender, EventArgs e)\n    {\n        _enableMacroToggle.IsChecked = _controller.IsEnabled;\n\n        var zeroNumberButton = _numberPad.Children.OfType<Button>().Last();\n        Reload(zeroNumberButton);\n    }\n\n    private void EnableMacroToggle_Click(object sender, RoutedEventArgs e)\n    {\n        _controller.SetEnabled(_enableMacroToggle.IsChecked ?? false);\n    }\n\n    private void NumberPadButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (sender is not Button button)\n            return;\n\n        _numberPad.Children\n            .OfType<Button>()\n            .ForEach(b => b.Appearance = ControlAppearance.Secondary);\n\n        Reload(button);\n    }\n\n    private void Reload(Button button)\n    {\n        button.Appearance = ControlAppearance.Primary;\n\n        var key = Convert.ToUInt64((string)button.Tag, 16);\n        _sequenceControl.Set(new(MacroSource.Keyboard, key));\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/PackagesPage.xaml",
    "content": "﻿<wpfui:UiPage\n    x:Class=\"LenovoLegionToolkit.WPF.Pages.PackagesPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.PackagesPage_Title}\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\">\n\n    <Grid Margin=\"0,0,0,0\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <Grid Grid.Row=\"0\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <TextBlock\n                Grid.Row=\"0\"\n                Margin=\"0,24,0,24\"\n                Focusable=\"True\"\n                FontSize=\"24\"\n                FontWeight=\"Medium\"\n                Text=\"{x:Static resources:Resource.PackagesPage_Title}\" />\n\n            <custom:CardControl\n                Grid.Row=\"1\"\n                Margin=\"0,0,16,8\"\n                FocusVisualStyle=\"{DynamicResource DefaultControlFocusVisualStyle}\">\n                <custom:CardControl.Header>\n                    <Grid>\n                        <Grid.RowDefinitions>\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"Auto\" />\n                            <RowDefinition Height=\"Auto\" />\n                        </Grid.RowDefinitions>\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"Auto\" />\n                            <ColumnDefinition Width=\"3*\" />\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                        </Grid.ColumnDefinitions>\n\n                        <Label\n                            Grid.Row=\"0\"\n                            Grid.Column=\"0\"\n                            VerticalContentAlignment=\"Center\"\n                            Content=\"{x:Static resources:Resource.PackagesPage_MachineType}\">\n                            <Label.Foreground>\n                                <SolidColorBrush Color=\"{DynamicResource TextFillColorPrimary}\" />\n                            </Label.Foreground>\n                        </Label>\n                        <Label\n                            Grid.Row=\"1\"\n                            Grid.Column=\"0\"\n                            Margin=\"0,8,0,0\"\n                            VerticalContentAlignment=\"Center\"\n                            Content=\"{x:Static resources:Resource.PackagesPage_OperatingSystem}\">\n                            <Label.Foreground>\n                                <SolidColorBrush Color=\"{DynamicResource TextFillColorPrimary}\" />\n                            </Label.Foreground>\n                        </Label>\n                        <Label\n                            Grid.Row=\"2\"\n                            Grid.Column=\"0\"\n                            Margin=\"0,8,0,0\"\n                            VerticalContentAlignment=\"Center\"\n                            Content=\"{x:Static resources:Resource.PackagesPage_DownloadTo}\">\n                            <Label.Foreground>\n                                <SolidColorBrush Color=\"{DynamicResource TextFillColorPrimary}\" />\n                            </Label.Foreground>\n                        </Label>\n\n                        <wpfui:TextBox\n                            x:Name=\"_machineTypeTextBox\"\n                            Grid.Row=\"0\"\n                            Grid.Column=\"1\"\n                            Margin=\"8,0,0,0\"\n                            AutomationProperties.Name=\"{x:Static resources:Resource.PackagesPage_MachineType}\"\n                            ClearButtonEnabled=\"False\"\n                            PlaceholderText=\"(eg. 82JQ)\" />\n                        <ComboBox\n                            x:Name=\"_osComboBox\"\n                            Grid.Row=\"1\"\n                            Grid.Column=\"1\"\n                            Margin=\"8,8,0,0\"\n                            AutomationProperties.Name=\"{x:Static resources:Resource.PackagesPage_OperatingSystem}\"\n                            MaxDropDownHeight=\"Auto\" />\n                        <Grid\n                            Grid.Row=\"2\"\n                            Grid.Column=\"1\"\n                            Margin=\"8,8,0,0\">\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n\n                            <wpfui:TextBox\n                                x:Name=\"_downloadToText\"\n                                Grid.Column=\"0\"\n                                AutomationProperties.Name=\"{x:Static resources:Resource.PackagesPage_DownloadTo}\"\n                                ClearButtonEnabled=\"False\"\n                                PlaceholderText=\"(eg. 82JQ)\"\n                                TextChanged=\"DownloadToText_OnTextChanged\" />\n\n                            <wpfui:Button\n                                Grid.Column=\"1\"\n                                Margin=\"4,0,0,0\"\n                                VerticalAlignment=\"Stretch\"\n                                Click=\"DownloadToButton_Click\"\n                                Icon=\"MoreHorizontal24\"\n                                ToolTip=\"{x:Static resources:Resource.PackagesPage_DownloadTo}\" />\n\n                            <wpfui:Button\n                                Grid.Column=\"2\"\n                                Margin=\"4,0,0,-1\"\n                                VerticalAlignment=\"Stretch\"\n                                Click=\"OpenDownloadToButton_Click\"\n                                Icon=\"Open24\"\n                                ToolTip=\"{x:Static resources:Resource.PackagesPage_OpenDownloadTo}\" />\n\n                        </Grid>\n\n                        <StackPanel\n                            Grid.Row=\"0\"\n                            Grid.RowSpan=\"3\"\n                            Grid.Column=\"3\"\n                            HorizontalAlignment=\"Right\">\n\n                            <TextBlock\n                                Margin=\"0,0,0,4\"\n                                AutomationProperties.Name=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n                                Focusable=\"True\"\n                                Text=\"{x:Static resources:Resource.PackagesPage_Source}\" />\n                            <RadioButton\n                                x:Name=\"_sourcePrimaryRadio\"\n                                AutomationProperties.HelpText=\"{x:Static resources:Resource.PackagesPage_PrimarySource_Message}\"\n                                AutomationProperties.Name=\"{x:Static resources:Resource.PackagesPage_PrimarySource}\"\n                                Focusable=\"True\"\n                                GroupName=\"source\"\n                                IsChecked=\"True\">\n                                <StackPanel>\n                                    <TextBlock Text=\"{x:Static resources:Resource.PackagesPage_PrimarySource}\" />\n                                    <TextBlock\n                                        FontSize=\"12\"\n                                        Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                                        Text=\"{x:Static resources:Resource.PackagesPage_PrimarySource_Message}\" />\n                                </StackPanel>\n                            </RadioButton>\n                            <RadioButton\n                                x:Name=\"_sourceSecondaryRadio\"\n                                AutomationProperties.HelpText=\"{x:Static resources:Resource.PackagesPage_SecondarySource_Message}\"\n                                AutomationProperties.Name=\"{x:Static resources:Resource.PackagesPage_SecondarySource}\"\n                                GroupName=\"source\">\n                                <StackPanel>\n                                    <TextBlock Text=\"{x:Static resources:Resource.PackagesPage_SecondarySource}\" />\n                                    <TextBlock\n                                        FontSize=\"12\"\n                                        Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                                        Text=\"{x:Static resources:Resource.PackagesPage_SecondarySource_Message}\" />\n                                </StackPanel>\n                            </RadioButton>\n\n                        </StackPanel>\n\n                        <wpfui:Button\n                            x:Name=\"_downloadPackagesButton\"\n                            Grid.Row=\"3\"\n                            Grid.Column=\"3\"\n                            HorizontalAlignment=\"Stretch\"\n                            VerticalAlignment=\"Bottom\"\n                            Appearance=\"Primary\"\n                            Click=\"DownloadPackagesButton_Click\"\n                            Content=\"{x:Static resources:Resource.Refresh}\"\n                            IsEnabled=\"false\" />\n\n                        <wpfui:Button\n                            x:Name=\"_cancelDownloadPackagesButton\"\n                            Grid.Row=\"3\"\n                            Grid.Column=\"3\"\n                            HorizontalAlignment=\"Stretch\"\n                            VerticalAlignment=\"Bottom\"\n                            Appearance=\"Secondary\"\n                            Click=\"CancelDownloadPackagesButton_Click\"\n                            Content=\"{x:Static resources:Resource.Cancel}\"\n                            IsEnabled=\"false\"\n                            Visibility=\"Collapsed\" />\n                    </Grid>\n                </custom:CardControl.Header>\n            </custom:CardControl>\n\n            <controls:LoadableControl\n                x:Name=\"_loader\"\n                Grid.Row=\"2\"\n                IndicatorVerticalAlignment=\"Center\"\n                Visibility=\"Hidden\">\n                <wpfui:DynamicScrollViewer x:Name=\"_scrollViewer\">\n\n                    <StackPanel>\n\n                        <custom:InfoBar\n                            x:Name=\"_infoBar\"\n                            Title=\"{x:Static resources:Resource.PackagesPage_Disclaimer_Message}\"\n                            Margin=\"0,0,16,8\"\n                            IsClosable=\"False\"\n                            IsOpen=\"True\"\n                            Severity=\"Informational\" />\n\n                        <Grid Margin=\"0,0,16,8\">\n                            <Grid.ColumnDefinitions>\n                                <ColumnDefinition Width=\"250\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                                <ColumnDefinition Width=\"*\" />\n                                <ColumnDefinition Width=\"Auto\" />\n                            </Grid.ColumnDefinitions>\n\n                            <wpfui:TextBox\n                                x:Name=\"_filterTextBox\"\n                                Grid.Column=\"0\"\n                                AutomationProperties.Name=\"{x:Static resources:Resource.Filter}\"\n                                Icon=\"Search24\"\n                                PlaceholderEnabled=\"True\"\n                                PlaceholderText=\"{x:Static resources:Resource.Filter}\"\n                                TextChanged=\"FilterTextBox_TextChanged\" />\n\n                            <CheckBox\n                                x:Name=\"_onlyShowUpdatesCheckBox\"\n                                Grid.Column=\"1\"\n                                Margin=\"16,0,0,0\"\n                                Checked=\"OnlyShowUpdatesCheckBox_OnChecked\"\n                                Content=\"{x:Static resources:Resource.PackagesPage_OnlyShowUpdates}\"\n                                Unchecked=\"OnlyShowUpdatesCheckBox_OnChecked\" />\n\n                            <ComboBox\n                                x:Name=\"_sortingComboBox\"\n                                Grid.Column=\"3\"\n                                MaxDropDownHeight=\"Auto\"\n                                SelectedIndex=\"2\"\n                                SelectionChanged=\"SortingComboBox_SelectionChanged\">\n                                <ComboBoxItem Content=\"{x:Static resources:Resource.PackagesPage_Sort_Name}\" />\n                                <ComboBoxItem Content=\"{x:Static resources:Resource.PackagesPage_Sort_Category}\" />\n                                <ComboBoxItem Content=\"{x:Static resources:Resource.PackagesPage_Sort_Date}\" />\n                            </ComboBox>\n\n                        </Grid>\n\n                        <StackPanel x:Name=\"_packagesStackPanel\" Margin=\"0,0,16,12\" />\n\n                    </StackPanel>\n\n                </wpfui:DynamicScrollViewer>\n            </controls:LoadableControl>\n\n        </Grid>\n    </Grid>\n</wpfui:UiPage>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/PackagesPage.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Net.Http;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Forms;\nusing System.Windows.Media;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.PackageDownloader;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Controls.Packages;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing HorizontalAlignment = System.Windows.HorizontalAlignment;\nusing MenuItem = Wpf.Ui.Controls.MenuItem;\n\nnamespace LenovoLegionToolkit.WPF.Pages;\n\npublic partial class PackagesPage : IProgress<float>\n{\n    private readonly PackageDownloaderSettings _packageDownloaderSettings = IoCContainer.Resolve<PackageDownloaderSettings>();\n    private readonly PackageDownloaderFactory _packageDownloaderFactory = IoCContainer.Resolve<PackageDownloaderFactory>();\n\n    private IPackageDownloader? _packageDownloader;\n\n    private CancellationTokenSource? _getPackagesTokenSource;\n\n    private CancellationTokenSource? _filterDebounceCancellationTokenSource;\n\n    private List<Package>? _packages;\n\n    public PackagesPage()\n    {\n        Initialized += PackagesPage_Initialized;\n\n        InitializeComponent();\n    }\n\n    private async void PackagesPage_Initialized(object? sender, EventArgs e)\n    {\n        _machineTypeTextBox.Text = (await Compatibility.GetMachineInformationAsync()).MachineType;\n        _osComboBox.SetItems(Enum.GetValues<OS>(), OSExtensions.GetCurrent(), os => os.GetDisplayName());\n\n        var downloadsFolder = KnownFolders.GetPath(KnownFolder.Downloads);\n        _downloadToText.PlaceholderText = downloadsFolder;\n        _downloadToText.Text = Directory.Exists(_packageDownloaderSettings.Store.DownloadPath)\n            ? _packageDownloaderSettings.Store.DownloadPath\n            : downloadsFolder;\n\n        _downloadPackagesButton.IsEnabled = true;\n        _cancelDownloadPackagesButton.IsEnabled = true;\n\n        _sourcePrimaryRadio.Tag = PackageDownloaderFactory.Type.Vantage;\n        _sourceSecondaryRadio.Tag = PackageDownloaderFactory.Type.PCSupport;\n    }\n\n    public void Report(float value) => Dispatcher.Invoke(() =>\n    {\n        _loader.IsIndeterminate = value < 0;\n        _loader.Progress = value;\n    });\n\n    private void DownloadToText_OnTextChanged(object sender, TextChangedEventArgs e)\n    {\n        var location = _downloadToText.Text;\n\n        if (!Directory.Exists(location))\n            return;\n\n        _packageDownloaderSettings.Store.DownloadPath = location;\n        _packageDownloaderSettings.SynchronizeStore();\n    }\n\n    private void OpenDownloadToButton_Click(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            var location = GetDownloadLocation();\n\n            if (!Directory.Exists(location))\n                return;\n\n            Process.Start(\"explorer\", location);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to open download location.\", ex);\n        }\n    }\n\n    private void DownloadToButton_Click(object sender, RoutedEventArgs e)\n    {\n        using var ofd = new FolderBrowserDialog();\n        ofd.InitialDirectory = _downloadToText.Text;\n\n        if (ofd.ShowDialog() != DialogResult.OK)\n            return;\n\n        var selectedPath = ofd.SelectedPath;\n        _downloadToText.Text = selectedPath;\n        _packageDownloaderSettings.Store.DownloadPath = selectedPath;\n        _packageDownloaderSettings.SynchronizeStore();\n    }\n\n    private async void DownloadPackagesButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (!await ShouldInterruptDownloadsIfRunning())\n            return;\n\n        var errorOccurred = false;\n        try\n        {\n            _downloadPackagesButton.Visibility = Visibility.Collapsed;\n            _cancelDownloadPackagesButton.Visibility = Visibility.Visible;\n            _loader.Visibility = Visibility.Visible;\n            _loader.IsLoading = true;\n            _packages = null;\n\n            _packagesStackPanel.Children.Clear();\n            _scrollViewer.ScrollToHome();\n\n            _filterTextBox.Text = string.Empty;\n            _sortingComboBox.SelectedIndex = 2;\n\n            var machineType = _machineTypeTextBox.Text.Trim();\n\n            if (string.IsNullOrWhiteSpace(machineType) || machineType.Length != 4 ||\n                !_osComboBox.TryGetSelectedItem(out OS os))\n            {\n                await SnackbarHelper.ShowAsync(Resource.PackagesPage_DownloadFailed_Title,\n                    Resource.PackagesPage_DownloadFailed_Message);\n                return;\n            }\n\n            if (_getPackagesTokenSource is not null)\n                await _getPackagesTokenSource.CancelAsync();\n\n            _getPackagesTokenSource = new();\n\n            var token = _getPackagesTokenSource.Token;\n\n            var packageDownloaderType = new[] { _sourcePrimaryRadio, _sourceSecondaryRadio }\n                .Where(r => r.IsChecked == true)\n                .Select(r => (PackageDownloaderFactory.Type)r.Tag)\n                .First();\n\n            switch (packageDownloaderType)\n            {\n                case PackageDownloaderFactory.Type.Vantage:\n                    _onlyShowUpdatesCheckBox.Visibility = Visibility.Visible;\n                    _onlyShowUpdatesCheckBox.IsChecked = _packageDownloaderSettings.Store.OnlyShowUpdates;\n                    break;\n                default:\n                    _onlyShowUpdatesCheckBox.Visibility = Visibility.Hidden;\n                    _onlyShowUpdatesCheckBox.IsChecked = false;\n                    break;\n            }\n\n            _packageDownloader = _packageDownloaderFactory.GetInstance(packageDownloaderType);\n            var packages = await _packageDownloader.GetPackagesAsync(machineType, os, this, token);\n\n            _packages = packages;\n\n            Reload();\n        }\n        catch (UpdateCatalogNotFoundException ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Update catalog not found.\", ex);\n\n            await SnackbarHelper.ShowAsync(Resource.PackagesPage_UpdateCatalogNotFound_Title, Resource.PackagesPage_UpdateCatalogNotFound_Message, SnackbarType.Info);\n\n            errorOccurred = true;\n        }\n        catch (OperationCanceledException)\n        {\n            errorOccurred = true;\n        }\n        catch (HttpRequestException ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Error occurred when downloading packages.\", ex);\n\n            await SnackbarHelper.ShowAsync(Resource.PackagesPage_Error_Title, Resource.PackagesPage_Error_CheckInternet_Message, SnackbarType.Error);\n\n            errorOccurred = true;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Error occurred when downloading packages.\", ex);\n\n            await SnackbarHelper.ShowAsync(Resource.PackagesPage_Error_Title, ex.Message, SnackbarType.Error);\n\n            errorOccurred = true;\n        }\n        finally\n        {\n            _downloadPackagesButton.Visibility = Visibility.Visible;\n            _cancelDownloadPackagesButton.Visibility = Visibility.Collapsed;\n            _loader.IsLoading = false;\n            _loader.Progress = 0;\n            _loader.IsIndeterminate = true;\n\n            if (errorOccurred)\n            {\n                _packagesStackPanel.Children.Clear();\n                _loader.Visibility = Visibility.Collapsed;\n                _loader.IsLoading = true;\n            }\n        }\n    }\n\n    private void CancelDownloadPackagesButton_Click(object sender, RoutedEventArgs e) => _getPackagesTokenSource?.Cancel();\n\n    private async void FilterTextBox_TextChanged(object sender, TextChangedEventArgs e)\n    {\n        if (!await ShouldInterruptDownloadsIfRunning())\n            return;\n\n        try\n        {\n            if (_packages is null)\n                return;\n\n            if (_filterDebounceCancellationTokenSource is not null)\n                await _filterDebounceCancellationTokenSource.CancelAsync();\n\n            _filterDebounceCancellationTokenSource = new();\n\n            await Task.Delay(500, _filterDebounceCancellationTokenSource.Token);\n\n            _packagesStackPanel.Children.Clear();\n            _scrollViewer.ScrollToHome();\n\n            Reload();\n        }\n        catch (OperationCanceledException) { }\n    }\n\n    private async void OnlyShowUpdatesCheckBox_OnChecked(object sender, RoutedEventArgs e)\n    {\n        if (!await ShouldInterruptDownloadsIfRunning())\n            return;\n\n        if (_packages is null)\n            return;\n\n        _packageDownloaderSettings.Store.OnlyShowUpdates = _onlyShowUpdatesCheckBox.IsChecked ?? false;\n        _packageDownloaderSettings.SynchronizeStore();\n\n        _packagesStackPanel.Children.Clear();\n        _scrollViewer.ScrollToHome();\n\n        Reload();\n    }\n\n    private async void SortingComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (!await ShouldInterruptDownloadsIfRunning())\n            return;\n\n        if (_packages is null)\n            return;\n\n        _packagesStackPanel.Children.Clear();\n        _scrollViewer.ScrollToHome();\n\n        Reload();\n    }\n\n    private string GetDownloadLocation()\n    {\n        var location = _downloadToText.Text.Trim();\n\n        if (!Directory.Exists(location))\n        {\n            var downloads = KnownFolders.GetPath(KnownFolder.Downloads);\n            location = downloads;\n            _downloadToText.Text = downloads;\n            _packageDownloaderSettings.Store.DownloadPath = downloads;\n            _packageDownloaderSettings.SynchronizeStore();\n        }\n\n        return location;\n    }\n\n    private ContextMenu? GetContextMenu(Package package, IEnumerable<Package> packages)\n    {\n        if (_packageDownloaderSettings.Store.HiddenPackages.Contains(package.Id))\n            return null;\n\n        var hideMenuItem = new MenuItem\n        {\n            SymbolIcon = SymbolRegular.EyeOff24,\n            Header = Resource.Hide,\n        };\n        hideMenuItem.Click += (_, _) =>\n        {\n            _packageDownloaderSettings.Store.HiddenPackages.Add(package.Id);\n            _packageDownloaderSettings.SynchronizeStore();\n\n            Reload();\n        };\n\n        var hideAllMenuItem = new MenuItem\n        {\n            SymbolIcon = SymbolRegular.EyeOff24,\n            Header = Resource.HideAll,\n        };\n        hideAllMenuItem.Click += (_, _) =>\n        {\n            foreach (var id in packages.Select(p => p.Id))\n                _packageDownloaderSettings.Store.HiddenPackages.Add(id);\n            _packageDownloaderSettings.SynchronizeStore();\n\n            Reload();\n        };\n\n        var cm = new ContextMenu();\n        cm.Items.Add(hideMenuItem);\n        cm.Items.Add(hideAllMenuItem);\n        return cm;\n    }\n\n    private async Task<bool> ShouldInterruptDownloadsIfRunning()\n    {\n        if (_packagesStackPanel?.Children is null)\n            return true;\n\n        if (_packagesStackPanel.Children.ToArray().OfType<PackageControl>().Where(pc => pc.IsDownloading).IsEmpty())\n            return true;\n\n        return await MessageBoxHelper.ShowAsync(this, Resource.PackagesPage_DownloadInProgress_Title, Resource.PackagesPage_DownloadInProgress_Message);\n    }\n\n    private void Reload()\n    {\n        if (_packageDownloader is null)\n            return;\n\n        _packagesStackPanel.Children.Clear();\n\n        if (_packages is null || _packages.Count == 0)\n            return;\n\n        var packages = SortAndFilter(_packages);\n\n        foreach (var package in packages)\n        {\n            var control = new PackageControl(_packageDownloader, package, GetDownloadLocation)\n            {\n                ContextMenu = GetContextMenu(package, packages)\n            };\n            _packagesStackPanel.Children.Add(control);\n        }\n\n        if (packages.IsEmpty())\n        {\n            var tb = new TextBlock\n            {\n                Text = Resource.PackagesPage_NoMatchingDownloads,\n                Foreground = (SolidColorBrush)FindResource(\"TextFillColorSecondaryBrush\"),\n                HorizontalAlignment = HorizontalAlignment.Center,\n                Margin = new(0, 32, 0, 32),\n                Focusable = true\n            };\n            _packagesStackPanel.Children.Add(tb);\n        }\n\n        if (_packageDownloaderSettings.Store.HiddenPackages.Count != 0)\n        {\n            var clearHidden = new Hyperlink\n            {\n                Icon = SymbolRegular.Eye24,\n                Content = \"Show hidden downloads\",\n                HorizontalAlignment = HorizontalAlignment.Right,\n            };\n            clearHidden.Click += (_, _) =>\n            {\n                _packageDownloaderSettings.Store.HiddenPackages.Clear();\n                _packageDownloaderSettings.SynchronizeStore();\n\n                Reload();\n            };\n            _packagesStackPanel.Children.Add(clearHidden);\n        }\n    }\n\n    private List<Package> SortAndFilter(List<Package> packages)\n    {\n        var result = _sortingComboBox.SelectedIndex switch\n        {\n            0 => packages.OrderBy(p => p.Title),\n            1 => packages.OrderBy(p => p.Category),\n            2 => packages.OrderByDescending(p => p.ReleaseDate),\n            _ => packages.AsEnumerable(),\n        };\n\n        result = result.Where(p => !_packageDownloaderSettings.Store.HiddenPackages.Contains(p.Id));\n\n        if (_onlyShowUpdatesCheckBox.IsChecked ?? false)\n            result = result.Where(p => p.IsUpdate);\n\n        if (!string.IsNullOrWhiteSpace(_filterTextBox.Text))\n            result = result.Where(p => p.Index.Contains(_filterTextBox.Text, StringComparison.InvariantCultureIgnoreCase));\n\n        return result.ToList();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/SettingsPage.xaml",
    "content": "﻿<wpfui:UiPage\n    x:Class=\"LenovoLegionToolkit.WPF.Pages.SettingsPage\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.SettingsPage_Title}\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Scrollable=\"True\">\n\n    <StackPanel Margin=\"0,0,16,12\">\n\n        <TextBlock\n            Margin=\"0,16,0,24\"\n            AutomationProperties.Name=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n            Focusable=\"True\"\n            FontSize=\"24\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.SettingsPage_Title}\" />\n\n        <custom:CardControl\n            x:Name=\"_langCardControl\"\n            Margin=\"0,0,0,8\"\n            Icon=\"LocalLanguage24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_Language_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_Language_Message}\" />\n            </custom:CardControl.Header>\n            <ComboBox\n                x:Name=\"_langComboBox\"\n                MinWidth=\"160\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_Language_Title}\"\n                MaxDropDownHeight=\"Auto\"\n                SelectionChanged=\"LangComboBox_SelectionChanged\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\" Icon=\"Temperature24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_Temperature_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_Temperature_Message}\" />\n            </custom:CardControl.Header>\n            <ComboBox\n                x:Name=\"_temperatureComboBox\"\n                MinWidth=\"160\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_Temperature_Title}\"\n                MaxDropDownHeight=\"Auto\"\n                SelectionChanged=\"TemperatureComboBox_SelectionChanged\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\" Icon=\"DarkTheme24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_Theme_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_Theme_Description}\" />\n            </custom:CardControl.Header>\n            <ComboBox\n                x:Name=\"_themeComboBox\"\n                MinWidth=\"160\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_Theme_Title}\"\n                MaxDropDownHeight=\"Auto\"\n                SelectionChanged=\"ThemeComboBox_SelectionChanged\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,24\" Icon=\"Color24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_AccentColor_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_AccentColor_Description}\" />\n            </custom:CardControl.Header>\n            <StackPanel Orientation=\"Horizontal\">\n                <controls:ColorPickerControl x:Name=\"_accentColorPicker\" ColorChangedDelayed=\"AccentColorPicker_Changed\" />\n                <ComboBox\n                    x:Name=\"_accentColorSourceComboBox\"\n                    MinWidth=\"160\"\n                    Margin=\"8,0,0,0\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_AccentColor_Title}\"\n                    MaxDropDownHeight=\"Auto\"\n                    SelectionChanged=\"AccentColorSourceComboBox_SelectionChanged\" />\n            </StackPanel>\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_Autorun_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_Autorun_Message}\" />\n            </custom:CardControl.Header>\n            <ComboBox\n                x:Name=\"_autorunComboBox\"\n                MinWidth=\"160\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_Autorun_Title}\"\n                MaxDropDownHeight=\"Auto\"\n                SelectionChanged=\"AutorunComboBox_SelectionChanged\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_MinimizeToTray_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_MinimizeToTray_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_minimizeToTrayToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_MinimizeToTray_Title}\"\n                Click=\"MinimizeToTrayToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_MinimizeOnClose_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_MinimizeOnClose_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_minimizeOnCloseToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_MinimizeOnClose_Title}\"\n                Click=\"MinimizeOnCloseToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl x:Name=\"_vantageCard\" Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_DisableVantage_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_DisableVantage_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_vantageToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_DisableVantage_Title}\"\n                Click=\"VantageToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl x:Name=\"_legionZoneCard\" Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_DisableLegionZone_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_DisableLegionZone_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_legionZoneToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_DisableLegionZone_Title}\"\n                Click=\"LegionZoneToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl x:Name=\"_fnKeysCard\" Margin=\"0,0,0,24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_DisableLenovoHotkeys_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_DisableLenovoHotkeys_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_fnKeysToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_DisableLenovoHotkeys_Title}\"\n                Click=\"FnKeysToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_SmartFnLock_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_SmartFnLock_Message}\" />\n            </custom:CardControl.Header>\n            <ComboBox\n                x:Name=\"_smartFnLockComboBox\"\n                MinWidth=\"150\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_SmartFnLock_Title}\"\n                SelectionChanged=\"SmartFnLockComboBox_SelectionChanged\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardAction\n            x:Name=\"_smartKeySinglePressActionCard\"\n            Margin=\"0,0,0,8\"\n            Click=\"SmartKeySinglePressActionCard_Click\">\n            <custom:CardAction.Content>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_SmartKeySinglePressAction_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_SmartKeySinglePressAction_Message}\" />\n            </custom:CardAction.Content>\n        </custom:CardAction>\n\n        <custom:CardAction\n            x:Name=\"_smartKeyDoublePressActionCard\"\n            Margin=\"0,0,0,8\"\n            Click=\"SmartKeyDoublePressActionCard_Click\">\n            <custom:CardAction.Content>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_SmartKeyDoublePressAction_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_SmartKeyDoublePressAction_Message}\" />\n            </custom:CardAction.Content>\n        </custom:CardAction>\n\n        <custom:CardAction\n            x:Name=\"_notificationsCard\"\n            Margin=\"0,0,0,8\"\n            Click=\"NotificationsCard_Click\">\n            <custom:CardAction.Content>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_Notifications_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_Notifications_Message}\" />\n            </custom:CardAction.Content>\n        </custom:CardAction>\n\n        <custom:CardAction\n            x:Name=\"_excludeRefreshRatesCard\"\n            Margin=\"0,0,0,8\"\n            Click=\"ExcludeRefreshRates_Click\">\n            <custom:CardAction.Content>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_ExcludeRefreshRates_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_ExcludeRefreshRates_Message}\" />\n            </custom:CardAction.Content>\n        </custom:CardAction>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_synchronizeBrightnessToAllPowerPlansToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title}\"\n                Click=\"SynchronizeBrightnessToAllPowerPlansToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardAction\n            x:Name=\"_bootLogoCard\"\n            Margin=\"0,0,0,8\"\n            Click=\"BootLogo_Click\">\n            <custom:CardAction.Content>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_BootLogo_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_BootLogo_Message}\" />\n            </custom:CardAction.Content>\n        </custom:CardAction>\n\n        <TextBlock\n            x:Name=\"_updateTextBlock\"\n            Margin=\"0,16,0,24\"\n            AutomationProperties.Name=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n            Focusable=\"True\"\n            FontSize=\"24\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.SettingsPage_Update_Title}\" />\n\n        <custom:CardControl x:Name=\"_checkUpdatesCard\" Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_CheckUpdates_Title}\" />\n            </custom:CardControl.Header>\n            <wpfui:Button\n                x:Name=\"_checkUpdatesButton\"\n                MinWidth=\"160\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_CheckUpdates_Title}\"\n                Click=\"CheckUpdates_Click\"\n                Content=\"{x:Static resources:Resource.SettingsPage_CheckUpdatesButton_Content}\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl x:Name=\"_updateCheckFrequencyCard\" Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_UpdateCheckFrequency_Title}\" />\n            </custom:CardControl.Header>\n            <ComboBox\n                x:Name=\"_updateCheckFrequencyComboBox\"\n                MinWidth=\"160\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_UpdateCheckFrequency_Title}\"\n                MaxDropDownHeight=\"Auto\"\n                SelectionChanged=\"UpdateCheckFrequencyComboBox_SelectionChanged\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <TextBlock\n            Margin=\"0,16,0,24\"\n            AutomationProperties.Name=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n            Focusable=\"True\"\n            FontSize=\"24\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.SettingsPage_Power_Title}\" />\n\n        <custom:CardControl x:Name=\"_godModeFnQSwitchableCard\" Margin=\"0,0,0,24\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.Settings_GodModeFnQSwitchable_Title}\" Subtitle=\"{x:Static resources:Resource.Settings_GodModeFnQSwitchable_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_godModeFnQSwitchableToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.Settings_GodModeFnQSwitchable_Title}\"\n                Click=\"GodModeFnQSwitchableToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl x:Name=\"_powerModeMappingCard\" Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_PowerModeMapping_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_PowerModeMapping_Message}\" />\n            </custom:CardControl.Header>\n            <ComboBox\n                x:Name=\"_powerModeMappingComboBox\"\n                MinWidth=\"160\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_PowerModeMapping_Title}\"\n                MaxDropDownHeight=\"Auto\"\n                SelectionChanged=\"PowerModeMappingComboBox_SelectionChanged\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardAction\n            x:Name=\"_powerModesCard\"\n            Margin=\"0,0,0,8\"\n            Click=\"PowerModes_Click\">\n            <custom:CardAction.Content>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_WindowsPowerModes_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_WindowsPowerModes_Message}\" />\n            </custom:CardAction.Content>\n        </custom:CardAction>\n\n        <custom:CardAction\n            x:Name=\"_windowsPowerPlansCard\"\n            Margin=\"0,0,0,8\"\n            Click=\"WindowsPowerPlans_Click\">\n            <custom:CardAction.Content>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_WindowsPowerPlans_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_WindowsPowerPlans_Message}\" />\n            </custom:CardAction.Content>\n        </custom:CardAction>\n\n        <custom:CardControl\n            x:Name=\"_windowsPowerPlansControlPanelCard\"\n            Margin=\"0,0,0,8\"\n            Click=\"WindowsPowerPlansControlPanel_Click\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_WindowsPowerPlansControlPanel_Title}\" />\n            </custom:CardControl.Header>\n            <wpfui:SymbolIcon\n                Margin=\"4,0,0,0\"\n                FontSize=\"20\"\n                Symbol=\"Open24\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,16,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_OnBatterySinceReset_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_OnBatterySinceReset_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_onBatterySinceResetToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_OnBatterySinceReset_Title}\"\n                Click=\"OnBatterySinceResetToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <TextBlock\n            Margin=\"0,16,0,24\"\n            AutomationProperties.Name=\"{Binding RelativeSource={RelativeSource Mode=Self}, Path=Text}\"\n            Focusable=\"True\"\n            FontSize=\"24\"\n            FontWeight=\"Medium\"\n            Text=\"{x:Static resources:Resource.SettingsPage_Integrations_Title}\" />\n\n        <custom:CardControl Margin=\"0,0,0,16\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_HWiNFO_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_HWiNFO_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_hwinfoIntegrationToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_HWiNFO_Title}\"\n                Click=\"HWiNFOIntegrationToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_CLI_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_CLI_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_cliInterfaceToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_CLI_Title}\"\n                Click=\"CLIInterfaceToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n\n        <custom:CardControl Margin=\"0,0,0,8\">\n            <custom:CardControl.Header>\n                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SettingsPage_CLIAddToPath_Title}\" Subtitle=\"{x:Static resources:Resource.SettingsPage_CLIAddToPath_Message}\" />\n            </custom:CardControl.Header>\n            <wpfui:ToggleSwitch\n                x:Name=\"_cliPathToggle\"\n                Margin=\"0,0,0,8\"\n                AutomationProperties.Name=\"{x:Static resources:Resource.SettingsPage_CLIAddToPath_Title}\"\n                Click=\"CLIPathToggle_Click\"\n                Visibility=\"Hidden\" />\n        </custom:CardControl>\n    </StackPanel>\n</wpfui:UiPage>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Pages/SettingsPage.xaml.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Globalization;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Integrations;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.System.Management;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.CLI;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing LenovoLegionToolkit.WPF.Windows;\nusing LenovoLegionToolkit.WPF.Windows.Settings;\n\nnamespace LenovoLegionToolkit.WPF.Pages;\n\npublic partial class SettingsPage\n{\n    private readonly ApplicationSettings _settings = IoCContainer.Resolve<ApplicationSettings>();\n    private readonly IntegrationsSettings _integrationsSettings = IoCContainer.Resolve<IntegrationsSettings>();\n\n    private readonly VantageDisabler _vantageDisabler = IoCContainer.Resolve<VantageDisabler>();\n    private readonly LegionZoneDisabler _legionZoneDisabler = IoCContainer.Resolve<LegionZoneDisabler>();\n    private readonly FnKeysDisabler _fnKeysDisabler = IoCContainer.Resolve<FnKeysDisabler>();\n    private readonly PowerModeFeature _powerModeFeature = IoCContainer.Resolve<PowerModeFeature>();\n    private readonly RGBKeyboardBacklightController _rgbKeyboardBacklightController = IoCContainer.Resolve<RGBKeyboardBacklightController>();\n    private readonly ThemeManager _themeManager = IoCContainer.Resolve<ThemeManager>();\n    private readonly HWiNFOIntegration _hwinfoIntegration = IoCContainer.Resolve<HWiNFOIntegration>();\n    private readonly IpcServer _ipcServer = IoCContainer.Resolve<IpcServer>();\n    private readonly UpdateChecker _updateChecker = IoCContainer.Resolve<UpdateChecker>();\n    private readonly UpdateCheckSettings _updateCheckSettings = IoCContainer.Resolve<UpdateCheckSettings>();\n\n    private bool _isRefreshing;\n\n    public SettingsPage()\n    {\n        InitializeComponent();\n\n        IsVisibleChanged += SettingsPage_IsVisibleChanged;\n\n        _themeManager.ThemeApplied += ThemeManager_ThemeApplied;\n    }\n\n    private async void SettingsPage_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private void ThemeManager_ThemeApplied(object? sender, EventArgs e)\n    {\n        if (!_isRefreshing)\n            UpdateAccentColorPicker();\n    }\n\n    private async Task RefreshAsync()\n    {\n        _isRefreshing = true;\n\n        var loadingTask = Task.Delay(TimeSpan.FromMilliseconds(500));\n\n        var languages = LocalizationHelper.Languages.OrderBy(LocalizationHelper.LanguageDisplayName, StringComparer.InvariantCultureIgnoreCase).ToArray();\n        var language = await LocalizationHelper.GetLanguageAsync();\n        if (languages.Length > 1)\n        {\n            _langComboBox.SetItems(languages, language, LocalizationHelper.LanguageDisplayName);\n            _langComboBox.Visibility = Visibility.Visible;\n        }\n        else\n        {\n            _langCardControl.Visibility = Visibility.Collapsed;\n        }\n\n        _temperatureComboBox.SetItems(Enum.GetValues<TemperatureUnit>(), _settings.Store.TemperatureUnit, t => t switch\n        {\n            TemperatureUnit.C => Resource.Celsius,\n            TemperatureUnit.F => Resource.Fahrenheit,\n            _ => new ArgumentOutOfRangeException(nameof(t))\n        });\n        _themeComboBox.SetItems(Enum.GetValues<Theme>(), _settings.Store.Theme, t => t.GetDisplayName());\n\n        UpdateAccentColorPicker();\n        _accentColorSourceComboBox.SetItems(Enum.GetValues<AccentColorSource>(), _settings.Store.AccentColorSource, t => t.GetDisplayName());\n\n        _autorunComboBox.SetItems(Enum.GetValues<AutorunState>(), Autorun.State, t => t.GetDisplayName());\n        _minimizeToTrayToggle.IsChecked = _settings.Store.MinimizeToTray;\n        _minimizeOnCloseToggle.IsChecked = _settings.Store.MinimizeOnClose;\n\n        var vantageStatus = await _vantageDisabler.GetStatusAsync();\n        _vantageCard.Visibility = vantageStatus != SoftwareStatus.NotFound ? Visibility.Visible : Visibility.Collapsed;\n        _vantageToggle.IsChecked = vantageStatus == SoftwareStatus.Disabled;\n\n        var legionZoneStatus = await _legionZoneDisabler.GetStatusAsync();\n        _legionZoneCard.Visibility = legionZoneStatus != SoftwareStatus.NotFound ? Visibility.Visible : Visibility.Collapsed;\n        _legionZoneToggle.IsChecked = legionZoneStatus == SoftwareStatus.Disabled;\n\n        var fnKeysStatus = await _fnKeysDisabler.GetStatusAsync();\n        _fnKeysCard.Visibility = fnKeysStatus != SoftwareStatus.NotFound ? Visibility.Visible : Visibility.Collapsed;\n        _fnKeysToggle.IsChecked = fnKeysStatus == SoftwareStatus.Disabled;\n\n        _smartFnLockComboBox.SetItems([ModifierKey.None, ModifierKey.Alt, ModifierKey.Alt | ModifierKey.Ctrl | ModifierKey.Shift],\n            _settings.Store.SmartFnLockFlags,\n            m => m is ModifierKey.None ? Resource.Off : m.GetFlagsDisplayName(ModifierKey.None));\n\n        _smartKeySinglePressActionCard.Visibility = fnKeysStatus != SoftwareStatus.Enabled ? Visibility.Visible : Visibility.Collapsed;\n        _smartKeyDoublePressActionCard.Visibility = fnKeysStatus != SoftwareStatus.Enabled ? Visibility.Visible : Visibility.Collapsed;\n\n        _notificationsCard.Visibility = fnKeysStatus != SoftwareStatus.Enabled ? Visibility.Visible : Visibility.Collapsed;\n        _excludeRefreshRatesCard.Visibility = fnKeysStatus != SoftwareStatus.Enabled ? Visibility.Visible : Visibility.Collapsed;\n        _synchronizeBrightnessToAllPowerPlansToggle.IsChecked = _settings.Store.SynchronizeBrightnessToAllPowerPlans;\n        _onBatterySinceResetToggle.IsChecked = _settings.Store.ResetBatteryOnSinceTimerOnReboot;\n\n        _bootLogoCard.Visibility = await BootLogo.IsSupportedAsync() ? Visibility.Visible : Visibility.Collapsed;\n\n        if (_updateChecker.Disable)\n        {\n            _updateTextBlock.Visibility = Visibility.Collapsed;\n            _checkUpdatesCard.Visibility = Visibility.Collapsed;\n            _updateCheckFrequencyCard.Visibility = Visibility.Collapsed;\n        }\n        else\n        {\n            _checkUpdatesButton.Visibility = Visibility.Visible;\n            _updateCheckFrequencyComboBox.Visibility = Visibility.Visible;\n            _updateCheckFrequencyComboBox.SetItems(Enum.GetValues<UpdateCheckFrequency>(), _updateCheckSettings.Store.UpdateCheckFrequency, t => t.GetDisplayName());\n        }\n\n        try\n        {\n            var mi = await Compatibility.GetMachineInformationAsync();\n            if (mi.Features[CapabilityID.GodModeFnQSwitchable])\n            {\n                _godModeFnQSwitchableCard.Visibility = Visibility.Visible;\n                _godModeFnQSwitchableToggle.IsChecked = await WMI.LenovoOtherMethod.GetFeatureValueAsync(CapabilityID.GodModeFnQSwitchable) == 1;\n            }\n            else\n            {\n                _godModeFnQSwitchableCard.Visibility = Visibility.Collapsed;\n            }\n        }\n        catch (Exception ex)\n        {\n            _godModeFnQSwitchableCard.Visibility = Visibility.Collapsed;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to get GodModeFnQSwitchable status.\", ex);\n        }\n\n        _powerModeMappingComboBox.SetItems(Enum.GetValues<PowerModeMappingMode>(), _settings.Store.PowerModeMappingMode, t => t.GetDisplayName());\n\n        var isPowerModeFeatureSupported = await _powerModeFeature.IsSupportedAsync();\n        _powerModeMappingCard.Visibility = isPowerModeFeatureSupported ? Visibility.Visible : Visibility.Collapsed;\n        _powerModesCard.Visibility = _settings.Store.PowerModeMappingMode == PowerModeMappingMode.WindowsPowerMode && isPowerModeFeatureSupported ? Visibility.Visible : Visibility.Collapsed;\n        _windowsPowerPlansCard.Visibility = _settings.Store.PowerModeMappingMode == PowerModeMappingMode.WindowsPowerPlan && isPowerModeFeatureSupported ? Visibility.Visible : Visibility.Collapsed;\n        _windowsPowerPlansControlPanelCard.Visibility = _settings.Store.PowerModeMappingMode == PowerModeMappingMode.WindowsPowerPlan && isPowerModeFeatureSupported ? Visibility.Visible : Visibility.Collapsed;\n\n        _onBatterySinceResetToggle.Visibility = Visibility.Visible;\n\n        _hwinfoIntegrationToggle.IsChecked = _integrationsSettings.Store.HWiNFO;\n        _cliInterfaceToggle.IsChecked = _integrationsSettings.Store.CLI;\n        _cliPathToggle.IsChecked = SystemPath.HasCLI();\n\n        await loadingTask;\n\n        _temperatureComboBox.Visibility = Visibility.Visible;\n        _themeComboBox.Visibility = Visibility.Visible;\n        _autorunComboBox.Visibility = Visibility.Visible;\n        _minimizeToTrayToggle.Visibility = Visibility.Visible;\n        _minimizeOnCloseToggle.Visibility = Visibility.Visible;\n        _vantageToggle.Visibility = Visibility.Visible;\n        _legionZoneToggle.Visibility = Visibility.Visible;\n        _fnKeysToggle.Visibility = Visibility.Visible;\n        _smartFnLockComboBox.Visibility = Visibility.Visible;\n        _synchronizeBrightnessToAllPowerPlansToggle.Visibility = Visibility.Visible;\n        _godModeFnQSwitchableToggle.Visibility = Visibility.Visible;\n        _powerModeMappingComboBox.Visibility = Visibility.Visible;\n        _hwinfoIntegrationToggle.Visibility = Visibility.Visible;\n        _cliInterfaceToggle.Visibility = Visibility.Visible;\n        _cliPathToggle.Visibility = Visibility.Visible;\n\n        _isRefreshing = false;\n    }\n\n    private async void LangComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (!_langComboBox.TryGetSelectedItem(out CultureInfo? cultureInfo) || cultureInfo is null)\n            return;\n\n        await LocalizationHelper.SetLanguageAsync(cultureInfo);\n\n        App.Current.RestartMainWindow();\n    }\n\n    private void TemperatureComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (!_temperatureComboBox.TryGetSelectedItem(out TemperatureUnit temperatureUnit))\n            return;\n\n        _settings.Store.TemperatureUnit = temperatureUnit;\n        _settings.SynchronizeStore();\n    }\n\n    private void ThemeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (!_themeComboBox.TryGetSelectedItem(out Theme state))\n            return;\n\n        _settings.Store.Theme = state;\n        _settings.SynchronizeStore();\n\n        _themeManager.Apply();\n    }\n\n    private void AccentColorPicker_Changed(object sender, EventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (_settings.Store.AccentColorSource != AccentColorSource.Custom)\n            return;\n\n        _settings.Store.AccentColor = _accentColorPicker.SelectedColor.ToRGBColor();\n        _settings.SynchronizeStore();\n\n        _themeManager.Apply();\n    }\n\n    private void AccentColorSourceComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (!_accentColorSourceComboBox.TryGetSelectedItem(out AccentColorSource state))\n            return;\n\n        _settings.Store.AccentColorSource = state;\n        _settings.SynchronizeStore();\n\n        UpdateAccentColorPicker();\n\n        _themeManager.Apply();\n    }\n\n    private void UpdateAccentColorPicker()\n    {\n        _accentColorPicker.Visibility = _settings.Store.AccentColorSource == AccentColorSource.Custom ? Visibility.Visible : Visibility.Collapsed;\n        _accentColorPicker.SelectedColor = _themeManager.GetAccentColor().ToColor();\n    }\n\n    private void AutorunComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (!_autorunComboBox.TryGetSelectedItem(out AutorunState state))\n            return;\n\n        Autorun.Set(state);\n    }\n\n    private void SmartFnLockComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (!_smartFnLockComboBox.TryGetSelectedItem(out ModifierKey modifierKey))\n            return;\n\n        _settings.Store.SmartFnLockFlags = modifierKey;\n        _settings.SynchronizeStore();\n    }\n\n    private void SmartKeySinglePressActionCard_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var window = new SelectSmartKeyPipelinesWindow { Owner = Window.GetWindow(this) };\n        window.ShowDialog();\n    }\n\n    private void SmartKeyDoublePressActionCard_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var window = new SelectSmartKeyPipelinesWindow(isDoublePress: true) { Owner = Window.GetWindow(this) };\n        window.ShowDialog();\n    }\n\n    private void MinimizeToTrayToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var state = _minimizeToTrayToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.MinimizeToTray = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void MinimizeOnCloseToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var state = _minimizeOnCloseToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.MinimizeOnClose = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private async void VantageToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        _vantageToggle.IsEnabled = false;\n\n        var state = _vantageToggle.IsChecked;\n        if (state is null)\n            return;\n\n        if (state.Value)\n        {\n            try\n            {\n                await _vantageDisabler.DisableAsync();\n            }\n            catch\n            {\n                await SnackbarHelper.ShowAsync(Resource.SettingsPage_DisableVantage_Error_Title, Resource.SettingsPage_DisableVantage_Error_Message, SnackbarType.Error);\n                return;\n            }\n\n            try\n            {\n                if (await _rgbKeyboardBacklightController.IsSupportedAsync())\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Setting light control owner and restoring preset...\");\n\n                    await _rgbKeyboardBacklightController.SetLightControlOwnerAsync(true, true);\n                }\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Couldn't set light control owner or current preset.\", ex);\n            }\n\n            try\n            {\n                var controller = IoCContainer.Resolve<SpectrumKeyboardBacklightController>();\n                if (await controller.IsSupportedAsync())\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Starting Aurora if needed...\");\n\n                    var result = await controller.StartAuroraIfNeededAsync();\n                    if (result)\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Aurora started.\");\n                    }\n                    else\n                    {\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"Aurora not needed.\");\n                    }\n                }\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Couldn't start Aurora if needed.\", ex);\n            }\n        }\n        else\n        {\n            try\n            {\n                if (await _rgbKeyboardBacklightController.IsSupportedAsync())\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Setting light control owner...\");\n\n                    await _rgbKeyboardBacklightController.SetLightControlOwnerAsync(false);\n                }\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Couldn't set light control owner.\", ex);\n            }\n\n            try\n            {\n                if (IoCContainer.TryResolve<SpectrumKeyboardBacklightController>() is { } spectrumKeyboardBacklightController)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Making sure Aurora is stopped...\");\n\n                    if (await spectrumKeyboardBacklightController.IsSupportedAsync())\n                        await spectrumKeyboardBacklightController.StopAuroraIfNeededAsync();\n                }\n            }\n            catch (Exception ex)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Couldn't stop Aurora.\", ex);\n            }\n\n            try\n            {\n                await _vantageDisabler.EnableAsync();\n            }\n            catch\n            {\n                await SnackbarHelper.ShowAsync(Resource.SettingsPage_EnableVantage_Error_Title, Resource.SettingsPage_EnableVantage_Error_Message, SnackbarType.Error);\n                return;\n            }\n        }\n\n        _vantageToggle.IsEnabled = true;\n    }\n\n    private async void LegionZoneToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        _legionZoneToggle.IsEnabled = false;\n\n        var state = _legionZoneToggle.IsChecked;\n        if (state is null)\n            return;\n\n        if (state.Value)\n        {\n            try\n            {\n                await _legionZoneDisabler.DisableAsync();\n            }\n            catch\n            {\n                await SnackbarHelper.ShowAsync(Resource.SettingsPage_DisableLegionZone_Error_Title, Resource.SettingsPage_DisableLegionZone_Error_Message, SnackbarType.Error);\n                return;\n            }\n        }\n        else\n        {\n            try\n            {\n                await _legionZoneDisabler.EnableAsync();\n            }\n            catch\n            {\n                await SnackbarHelper.ShowAsync(Resource.SettingsPage_EnableLegionZone_Error_Title, Resource.SettingsPage_EnableLegionZone_Error_Message, SnackbarType.Error);\n                return;\n            }\n        }\n\n        _legionZoneToggle.IsEnabled = true;\n    }\n\n    private async void FnKeysToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        _fnKeysToggle.IsEnabled = false;\n\n        var state = _fnKeysToggle.IsChecked;\n        if (state is null)\n            return;\n\n        if (state.Value)\n        {\n            try\n            {\n                await _fnKeysDisabler.DisableAsync();\n            }\n            catch\n            {\n                await SnackbarHelper.ShowAsync(Resource.SettingsPage_DisableLenovoHotkeys_Error_Title, Resource.SettingsPage_DisableLenovoHotkeys_Error_Message, SnackbarType.Error);\n                return;\n            }\n        }\n        else\n        {\n            try\n            {\n                await _fnKeysDisabler.EnableAsync();\n            }\n            catch\n            {\n                await SnackbarHelper.ShowAsync(Resource.SettingsPage_EnableLenovoHotkeys_Error_Title, Resource.SettingsPage_EnableLenovoHotkeys_Error_Message, SnackbarType.Error);\n                return;\n            }\n        }\n\n        _fnKeysToggle.IsEnabled = true;\n\n        _smartKeySinglePressActionCard.Visibility = state.Value ? Visibility.Visible : Visibility.Collapsed;\n        _smartKeyDoublePressActionCard.Visibility = state.Value ? Visibility.Visible : Visibility.Collapsed;\n        _notificationsCard.Visibility = state.Value ? Visibility.Visible : Visibility.Collapsed;\n        _excludeRefreshRatesCard.Visibility = state.Value ? Visibility.Visible : Visibility.Collapsed;\n    }\n\n    private void NotificationsCard_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var window = new NotificationsSettingsWindow { Owner = Window.GetWindow(this) };\n        window.ShowDialog();\n    }\n\n    private void ExcludeRefreshRates_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var window = new ExcludeRefreshRatesWindow { Owner = Window.GetWindow(this) };\n        window.ShowDialog();\n    }\n\n    private void SynchronizeBrightnessToAllPowerPlansToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var state = _synchronizeBrightnessToAllPowerPlansToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.SynchronizeBrightnessToAllPowerPlans = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void BootLogo_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var window = new BootLogoWindow { Owner = Window.GetWindow(this) };\n        window.ShowDialog();\n    }\n\n    private async void CheckUpdates_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (App.Current.MainWindow is not MainWindow mainWindow)\n            return;\n\n        mainWindow.CheckForUpdates(true);\n        await SnackbarHelper.ShowAsync(Resource.SettingsPage_CheckUpdates_Started_Title, type: SnackbarType.Info);\n    }\n\n    private void UpdateCheckFrequencyComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (!_updateCheckFrequencyComboBox.TryGetSelectedItem(out UpdateCheckFrequency frequency))\n            return;\n\n        _updateCheckSettings.Store.UpdateCheckFrequency = frequency;\n        _updateCheckSettings.SynchronizeStore();\n        _updateChecker.UpdateMinimumTimeSpanForRefresh();\n    }\n\n    private async void GodModeFnQSwitchableToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var state = _godModeFnQSwitchableToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _godModeFnQSwitchableToggle.IsEnabled = false;\n\n        await WMI.LenovoOtherMethod.SetFeatureValueAsync(CapabilityID.GodModeFnQSwitchable, state.Value ? 1 : 0);\n\n        _godModeFnQSwitchableToggle.IsEnabled = true;\n    }\n\n    private async void PowerModeMappingComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (!_powerModeMappingComboBox.TryGetSelectedItem(out PowerModeMappingMode powerModeMappingMode))\n            return;\n\n        _settings.Store.PowerModeMappingMode = powerModeMappingMode;\n        _settings.SynchronizeStore();\n\n        var isPowerModeFeatureSupported = await _powerModeFeature.IsSupportedAsync();\n        _powerModesCard.Visibility = _settings.Store.PowerModeMappingMode == PowerModeMappingMode.WindowsPowerMode && isPowerModeFeatureSupported ? Visibility.Visible : Visibility.Collapsed;\n        _windowsPowerPlansCard.Visibility = _settings.Store.PowerModeMappingMode == PowerModeMappingMode.WindowsPowerPlan && isPowerModeFeatureSupported ? Visibility.Visible : Visibility.Collapsed;\n        _windowsPowerPlansControlPanelCard.Visibility = _settings.Store.PowerModeMappingMode == PowerModeMappingMode.WindowsPowerPlan && isPowerModeFeatureSupported ? Visibility.Visible : Visibility.Collapsed;\n    }\n\n    private void WindowsPowerPlans_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var window = new WindowsPowerPlansWindow { Owner = Window.GetWindow(this) };\n        window.ShowDialog();\n    }\n\n    private void PowerModes_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var window = new WindowsPowerModesWindow { Owner = Window.GetWindow(this) };\n        window.ShowDialog();\n    }\n\n    private void WindowsPowerPlansControlPanel_Click(object sender, RoutedEventArgs e)\n    {\n        Process.Start(\"control\", \"/name Microsoft.PowerOptions\");\n    }\n\n    private void OnBatterySinceResetToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        var state = _onBatterySinceResetToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.ResetBatteryOnSinceTimerOnReboot = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private async void HWiNFOIntegrationToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        _integrationsSettings.Store.HWiNFO = _hwinfoIntegrationToggle.IsChecked ?? false;\n        _integrationsSettings.SynchronizeStore();\n\n        await _hwinfoIntegration.StartStopIfNeededAsync();\n    }\n\n    private async void CLIInterfaceToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        _integrationsSettings.Store.CLI = _cliInterfaceToggle.IsChecked ?? false;\n        _integrationsSettings.SynchronizeStore();\n\n        await _ipcServer.StartStopIfNeededAsync();\n    }\n\n    private void CLIPathToggle_Click(object sender, RoutedEventArgs e)\n    {\n        if (_isRefreshing)\n            return;\n\n        SystemPath.SetCLI(_cliPathToggle.IsChecked ?? false);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Properties/launchSettings.json",
    "content": "{\n  \"profiles\": {\n    \"LenovoLegionToolkit.WPF\": {\n      \"commandName\": \"Project\",\n      \"commandLineArgs\": \"\"\n    },\n    \"LenovoLegionToolkit.WPF (Trace)\": {\n      \"commandName\": \"Project\",\n      \"commandLineArgs\": \"--trace\"\n    },\n    \"LenovoLegionToolkit.WPF (Minimized)\": {\n      \"commandName\": \"Project\",\n      \"commandLineArgs\": \"--minimized\"\n    },\n    \"LenovoLegionToolkit.WPF (Trace, Minimized)\": {\n      \"commandName\": \"Project\",\n      \"commandLineArgs\": \"--trace --minimized\"\n    }\n  }\n}"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.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 LenovoLegionToolkit.WPF.Resources {\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    public class Resource {\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 Resource() {\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        public 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(\"LenovoLegionToolkit.WPF.Resources.Resource\", typeof(Resource).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        public 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 string similar to Application Folders.\n        /// </summary>\n        public static string AboutPage_ApplicationFolders {\n            get {\n                return ResourceManager.GetString(\"AboutPage_ApplicationFolders\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Legion Toolkit.\n        /// </summary>\n        public static string AboutPage_AppName {\n            get {\n                return ResourceManager.GetString(\"AboutPage_AppName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Build.\n        /// </summary>\n        public static string AboutPage_Build {\n            get {\n                return ResourceManager.GetString(\"AboutPage_Build\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Data.\n        /// </summary>\n        public static string AboutPage_Data {\n            get {\n                return ResourceManager.GetString(\"AboutPage_Data\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Latest release on GitHub.\n        /// </summary>\n        public static string AboutPage_LatestReleaseOnGitHub {\n            get {\n                return ResourceManager.GetString(\"AboutPage_LatestReleaseOnGitHub\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Links.\n        /// </summary>\n        public static string AboutPage_Links {\n            get {\n                return ResourceManager.GetString(\"AboutPage_Links\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Project website on GitHub.\n        /// </summary>\n        public static string AboutPage_ProjectWebsiteOnGitHub {\n            get {\n                return ResourceManager.GetString(\"AboutPage_ProjectWebsiteOnGitHub\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Temp.\n        /// </summary>\n        public static string AboutPage_Temp {\n            get {\n                return ResourceManager.GetString(\"AboutPage_Temp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Third-party libraries.\n        /// </summary>\n        public static string AboutPage_ThirdPartyLibraries {\n            get {\n                return ResourceManager.GetString(\"AboutPage_ThirdPartyLibraries\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to About.\n        /// </summary>\n        public static string AboutPage_Title {\n            get {\n                return ResourceManager.GetString(\"AboutPage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Translations provided by community..\n        /// </summary>\n        public static string AboutPage_TranslationCredit {\n            get {\n                return ResourceManager.GetString(\"AboutPage_TranslationCredit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Version.\n        /// </summary>\n        public static string AboutPage_Version {\n            get {\n                return ResourceManager.GetString(\"AboutPage_Version\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Delete.\n        /// </summary>\n        public static string AbstractAutomationStepControl_Delete {\n            get {\n                return ResourceManager.GetString(\"AbstractAutomationStepControl_Delete\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Active.\n        /// </summary>\n        public static string Active {\n            get {\n                return ResourceManager.GetString(\"Active\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add.\n        /// </summary>\n        public static string Add {\n            get {\n                return ResourceManager.GetString(\"Add\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add step.\n        /// </summary>\n        public static string AddAutomationStepWindow_Title {\n            get {\n                return ResourceManager.GetString(\"AddAutomationStepWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add new.\n        /// </summary>\n        public static string AddNew {\n            get {\n                return ResourceManager.GetString(\"AddNew\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Charge USB devices, when the laptop is off, sleeping or hibernated..\n        /// </summary>\n        public static string AlwaysOnUsbAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"AlwaysOnUsbAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Always on USB.\n        /// </summary>\n        public static string AlwaysOnUsbAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"AlwaysOnUsbAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Charge USB devices, when the laptop is off, sleeping or hibernated..\n        /// </summary>\n        public static string AlwaysOnUSBControl_Message {\n            get {\n                return ResourceManager.GetString(\"AlwaysOnUSBControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Always on USB.\n        /// </summary>\n        public static string AlwaysOnUSBControl_Title {\n            get {\n                return ResourceManager.GetString(\"AlwaysOnUSBControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apply.\n        /// </summary>\n        public static string Apply {\n            get {\n                return ResourceManager.GetString(\"Apply\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apply &amp; Close.\n        /// </summary>\n        public static string ApplyAndClose {\n            get {\n                return ResourceManager.GetString(\"ApplyAndClose\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Legion Toolkit.\n        /// </summary>\n        public static string AppName {\n            get {\n                return ResourceManager.GetString(\"AppName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No Actions defined. Click &quot;Add new&quot; to create new Action..\n        /// </summary>\n        public static string AutomationPage_Actions_Empty {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_Actions_Empty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to If enabled, these action will run automatically. Whenever state changes, all actions will be evaluated from top to bottom.\n        ///Only actions that match current state will run..\n        /// </summary>\n        public static string AutomationPage_Actions_Message {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_Actions_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Actions.\n        /// </summary>\n        public static string AutomationPage_Actions_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_Actions_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Legion Toolkit must be running for automatic actions to work..\n        /// </summary>\n        public static string AutomationPage_ActionsEnable_Message {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_ActionsEnable_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable.\n        /// </summary>\n        public static string AutomationPage_ActionsEnabled_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_ActionsEnabled_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Name....\n        /// </summary>\n        public static string AutomationPage_AddManualPipeline_Placeholder {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_AddManualPipeline_Placeholder\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add new.\n        /// </summary>\n        public static string AutomationPage_AddManualPipeline_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_AddManualPipeline_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change icon.\n        /// </summary>\n        public static string AutomationPage_ChangeIcon {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_ChangeIcon\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No Quick Actions defined. Click &quot;Add new&quot; to create new Quick Action..\n        /// </summary>\n        public static string AutomationPage_QuickActions_Empty {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_QuickActions_Empty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quick actions are available in the right click menu of the tray icon..\n        /// </summary>\n        public static string AutomationPage_QuickActions_Message {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_QuickActions_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quick Actions.\n        /// </summary>\n        public static string AutomationPage_QuickActions_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_QuickActions_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Name....\n        /// </summary>\n        public static string AutomationPage_RenamePipeline_Placeholder {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_RenamePipeline_Placeholder\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rename.\n        /// </summary>\n        public static string AutomationPage_RenamePipeline_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_RenamePipeline_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All changes reverted!.\n        /// </summary>\n        public static string AutomationPage_Reverted_Message {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_Reverted_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reverted.\n        /// </summary>\n        public static string AutomationPage_Reverted_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_Reverted_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Changes were saved successfully!.\n        /// </summary>\n        public static string AutomationPage_Saved_Message {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_Saved_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saved.\n        /// </summary>\n        public static string AutomationPage_Saved_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_Saved_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Automation.\n        /// </summary>\n        public static string AutomationPage_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add step.\n        /// </summary>\n        public static string AutomationPipelineControl_AddStep {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_AddStep\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Configure.\n        /// </summary>\n        public static string AutomationPipelineControl_Configure {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_Configure\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exclusive.\n        /// </summary>\n        public static string AutomationPipelineControl_Exclusive {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_Exclusive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do not execute further actions when this action runs..\n        /// </summary>\n        public static string AutomationPipelineControl_Exclusive_ToolTip {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_Exclusive_ToolTip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Running....\n        /// </summary>\n        public static string AutomationPipelineControl_Running {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_Running\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Run now.\n        /// </summary>\n        public static string AutomationPipelineControl_RunNow {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_RunNow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Completed with errors..\n        /// </summary>\n        public static string AutomationPipelineControl_RunNow_Error_Message {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_RunNow_Error_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Run now.\n        /// </summary>\n        public static string AutomationPipelineControl_RunNow_Error_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_RunNow_Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Completed successfully!.\n        /// </summary>\n        public static string AutomationPipelineControl_RunNow_Success_Message {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_RunNow_Success_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Run now.\n        /// </summary>\n        public static string AutomationPipelineControl_RunNow_Success_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_RunNow_Success_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} step.\n        /// </summary>\n        public static string AutomationPipelineControl_Step {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_Step\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} steps.\n        /// </summary>\n        public static string AutomationPipelineControl_Step_Many {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_Step_Many\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to After {0}.\n        /// </summary>\n        public static string AutomationPipelineControl_SubtitlePart_After {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_SubtitlePart_After\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Apps.\n        /// </summary>\n        public static string AutomationPipelineControl_SubtitlePart_Apps {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_SubtitlePart_Apps\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At sunrise.\n        /// </summary>\n        public static string AutomationPipelineControl_SubtitlePart_AtSunrise {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_SubtitlePart_AtSunrise\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At sunset.\n        /// </summary>\n        public static string AutomationPipelineControl_SubtitlePart_AtSunset {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_SubtitlePart_AtSunset\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to At {0:D2}:{1:D2}.\n        /// </summary>\n        public static string AutomationPipelineControl_SubtitlePart_AtTime {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_SubtitlePart_AtTime\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power Mode.\n        /// </summary>\n        public static string AutomationPipelineControl_SubtitlePart_PowerMode {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_SubtitlePart_PowerMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset.\n        /// </summary>\n        public static string AutomationPipelineControl_SubtitlePart_Preset {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_SubtitlePart_Preset\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unnamed.\n        /// </summary>\n        public static string AutomationPipelineControl_Unnamed {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineControl_Unnamed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Configure.\n        /// </summary>\n        public static string AutomationPipelineTriggerConfigurationWindow_Title {\n            get {\n                return ResourceManager.GetString(\"AutomationPipelineTriggerConfigurationWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Automatically detects when certain games are running and tweaks CPU and GPU performance. Temperatures and fan noise might increase..\n        /// </summary>\n        public static string BalanceModeSettingsWindow_AIEngine_Message {\n            get {\n                return ResourceManager.GetString(\"BalanceModeSettingsWindow_AIEngine_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable AI Engine.\n        /// </summary>\n        public static string BalanceModeSettingsWindow_AIEngine_Title {\n            get {\n                return ResourceManager.GetString(\"BalanceModeSettingsWindow_AIEngine_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Balance Mode Settings.\n        /// </summary>\n        public static string BalanceModeSettingsWindow_Title {\n            get {\n                return ResourceManager.GetString(\"BalanceModeSettingsWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose how the battery is charged..\n        /// </summary>\n        public static string BatteryAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery Mode.\n        /// </summary>\n        public static string BatteryAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose how the battery is charged..\n        /// </summary>\n        public static string BatteryModeControl_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryModeControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery Mode.\n        /// </summary>\n        public static string BatteryModeControl_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryModeControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When enabled, this device will charge to 80% when plugged in overnight and finish charging to 100% by the time you use this device in the morning..\n        /// </summary>\n        public static string BatteryNightChargeAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryNightChargeAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overnight Battery Charging.\n        /// </summary>\n        public static string BatteryNightChargeAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryNightChargeAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When enabled, this device will charge to 80% when plugged in overnight and finish charging to 100% by the time you use this device in the morning..\n        /// </summary>\n        public static string BatteryNightChargeModeControl_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryNightChargeModeControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overnight Battery Charging.\n        /// </summary>\n        public static string BatteryNightChargeModeControl_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryNightChargeModeControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Connected, charging....\n        /// </summary>\n        public static string BatteryPage_ACAdapterConnectedAndCharging {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_ACAdapterConnectedAndCharging\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Connected, not charging.\n        /// </summary>\n        public static string BatteryPage_ACAdapterConnectedNotCharging {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_ACAdapterConnectedNotCharging\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery maximum charge capacity..\n        /// </summary>\n        public static string BatteryPage_BatteryHealth_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_BatteryHealth_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery health.\n        /// </summary>\n        public static string BatteryPage_BatteryHealth_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_BatteryHealth_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Current temperature of the battery..\n        /// </summary>\n        public static string BatteryPage_BatteryTemperature_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_BatteryTemperature_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery temperature.\n        /// </summary>\n        public static string BatteryPage_BatteryTemperature_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_BatteryTemperature_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Current battery capacity..\n        /// </summary>\n        public static string BatteryPage_CurrentCapacity_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_CurrentCapacity_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Current capacity.\n        /// </summary>\n        public static string BatteryPage_CurrentCapacity_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_CurrentCapacity_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Number of charge/discharge cycles..\n        /// </summary>\n        public static string BatteryPage_CycleCount_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_CycleCount_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cycle count.\n        /// </summary>\n        public static string BatteryPage_CycleCount_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_CycleCount_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery capacity as designed..\n        /// </summary>\n        public static string BatteryPage_DesignCapacity_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_DesignCapacity_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Design capacity.\n        /// </summary>\n        public static string BatteryPage_DesignCapacity_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_DesignCapacity_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rate at which battery is charged (+), or discharged (-)..\n        /// </summary>\n        public static string BatteryPage_DischargeRate_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_DischargeRate_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Discharge rate.\n        /// </summary>\n        public static string BatteryPage_DischargeRate_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_DischargeRate_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Estimated time remaining: {0}.\n        /// </summary>\n        public static string BatteryPage_EstimatedBatteryLifeRemaining {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_EstimatedBatteryLifeRemaining\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Estimating time....\n        /// </summary>\n        public static string BatteryPage_EstimatingBatteryLife {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_EstimatingBatteryLife\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When was the battery first used..\n        /// </summary>\n        public static string BatteryPage_FirstUse_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_FirstUse_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to First use date.\n        /// </summary>\n        public static string BatteryPage_FirstUseDate_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_FirstUseDate_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery capacity when fully charged..\n        /// </summary>\n        public static string BatteryPage_FullChargeCapacity_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_FullChargeCapacity_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Full charge capacity.\n        /// </summary>\n        public static string BatteryPage_FullChargeCapacity_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_FullChargeCapacity_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery level low.\n        /// </summary>\n        public static string BatteryPage_LowLevel {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_LowLevel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Low wattage charger connected.\n        /// </summary>\n        public static string BatteryPage_LowWattageChargerConnected {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_LowWattageChargerConnected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When was the battery manufactured..\n        /// </summary>\n        public static string BatteryPage_ManufactureDate_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_ManufactureDate_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Manufacture date.\n        /// </summary>\n        public static string BatteryPage_ManufactureDate_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_ManufactureDate_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maximum rate at which battery is charged (+), or discharged (-)..\n        /// </summary>\n        public static string BatteryPage_MaxDischargeRate_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_MaxDischargeRate_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maximum discharge rate.\n        /// </summary>\n        public static string BatteryPage_MaxDischargeRate_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_MaxDischargeRate_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Minimum rate at which battery is charged (+), or discharged (-)..\n        /// </summary>\n        public static string BatteryPage_MinDischargeRate_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_MinDischargeRate_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Minimum discharge rate.\n        /// </summary>\n        public static string BatteryPage_MinDischargeRate_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_MinDischargeRate_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Time since laptop was last connected to AC power.\n        ///This time might not be accurate, if laptop was charged when sleeping or off..\n        /// </summary>\n        public static string BatteryPage_OnBatterySince_Message {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_OnBatterySince_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to On battery since.\n        /// </summary>\n        public static string BatteryPage_OnBatterySince_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_OnBatterySince_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery.\n        /// </summary>\n        public static string BatteryPage_Title {\n            get {\n                return ResourceManager.GetString(\"BatteryPage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Customize.\n        /// </summary>\n        public static string BootLogoWindow_Customize {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_Customize\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom Boot Logo is set.\n        /// </summary>\n        public static string BootLogoWindow_CustomLogoSet {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_CustomLogoSet\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default Boot Logo is set.\n        /// </summary>\n        public static string BootLogoWindow_DefaultLogoSet {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_DefaultLogoSet\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom boot logo must be exactly {0} pixels large.\n        ///Supported formats are: {1}..\n        /// </summary>\n        public static string BootLogoWindow_Description {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom logo could not be set: {0}.\n        /// </summary>\n        public static string BootLogoWindow_SetCustomFailed {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_SetCustomFailed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom boot logo set..\n        /// </summary>\n        public static string BootLogoWindow_SetCustomSuccess {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_SetCustomSuccess\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default logo could not be set: {0}.\n        /// </summary>\n        public static string BootLogoWindow_SetDefaultFailed {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_SetDefaultFailed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default boot logo set..\n        /// </summary>\n        public static string BootLogoWindow_SetDefaultSuccess {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_SetDefaultSuccess\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannot mount EFI partition..\n        /// </summary>\n        public static string BootLogoWindow_SetError_Cannot_Mount_EFI_Partition {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannot set UEFI privilege..\n        /// </summary>\n        public static string BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Invalid image format..\n        /// </summary>\n        public static string BootLogoWindow_SetError_Invalid_Image_Format {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_SetError_Invalid_Image_Format\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Invalid image size..\n        /// </summary>\n        public static string BootLogoWindow_SetError_Invalid_Image_Size {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_SetError_Invalid_Image_Size\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Not enough free space on EFI partition..\n        /// </summary>\n        public static string BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Status.\n        /// </summary>\n        public static string BootLogoWindow_Status {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_Status\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Boot Logo.\n        /// </summary>\n        public static string BootLogoWindow_Title {\n            get {\n                return ResourceManager.GetString(\"BootLogoWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cancel.\n        /// </summary>\n        public static string Cancel {\n            get {\n                return ResourceManager.GetString(\"Cancel\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to °C.\n        /// </summary>\n        public static string Celsius {\n            get {\n                return ResourceManager.GetString(\"Celsius\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Clear.\n        /// </summary>\n        public static string Clear {\n            get {\n                return ResourceManager.GetString(\"Clear\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Close.\n        /// </summary>\n        public static string Close {\n            get {\n                return ResourceManager.GetString(\"Close\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Blue.\n        /// </summary>\n        public static string Color_Blue {\n            get {\n                return ResourceManager.GetString(\"Color_Blue\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Green.\n        /// </summary>\n        public static string Color_Green {\n            get {\n                return ResourceManager.GetString(\"Color_Green\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Red.\n        /// </summary>\n        public static string Color_Red {\n            get {\n                return ResourceManager.GetString(\"Color_Red\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select GPU operating mode based on your computer&apos;s usage and power conditions.\n        ///Switching modes may require restart..\n        /// </summary>\n        public static string ComboBoxHybridModeAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"ComboBoxHybridModeAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GPU Working Mode.\n        /// </summary>\n        public static string ComboBoxHybridModeAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"ComboBoxHybridModeAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select GPU operating mode based on your computer&apos;s usage and power conditions.\n        ///Switching modes may require restart..\n        /// </summary>\n        public static string ComboBoxHybridModeControl_Message {\n            get {\n                return ResourceManager.GetString(\"ComboBoxHybridModeControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Changing to {0} requires restart. Do you want to restart now?.\n        /// </summary>\n        public static string ComboBoxHybridModeControl_RestartRequired_Message {\n            get {\n                return ResourceManager.GetString(\"ComboBoxHybridModeControl_RestartRequired_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Restart required.\n        /// </summary>\n        public static string ComboBoxHybridModeControl_RestartRequired_Title {\n            get {\n                return ResourceManager.GetString(\"ComboBoxHybridModeControl_RestartRequired_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GPU Working Mode.\n        /// </summary>\n        public static string ComboBoxHybridModeControl_Title {\n            get {\n                return ResourceManager.GetString(\"ComboBoxHybridModeControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Error occured when reading device information..\n        /// </summary>\n        public static string CompatibilityCheckError_Message {\n            get {\n                return ResourceManager.GetString(\"CompatibilityCheckError_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quick Actions.\n        /// </summary>\n        public static string ContextMenu_QuickActions {\n            get {\n                return ResourceManager.GetString(\"ContextMenu_QuickActions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Continue.\n        /// </summary>\n        public static string Continue {\n            get {\n                return ResourceManager.GetString(\"Continue\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Text copied to clipboard..\n        /// </summary>\n        public static string CopiedToClipboard_Message {\n            get {\n                return ResourceManager.GetString(\"CopiedToClipboard_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to &quot;{0}&quot; copied to clipboard..\n        /// </summary>\n        public static string CopiedToClipboard_Message_WithParam {\n            get {\n                return ResourceManager.GetString(\"CopiedToClipboard_Message_WithParam\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copied!.\n        /// </summary>\n        public static string CopiedToClipboard_Title {\n            get {\n                return ResourceManager.GetString(\"CopiedToClipboard_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy all.\n        /// </summary>\n        public static string CopyAll {\n            get {\n                return ResourceManager.GetString(\"CopyAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create.\n        /// </summary>\n        public static string Create {\n            get {\n                return ResourceManager.GetString(\"Create\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create Action.\n        /// </summary>\n        public static string CreateAutomationPipelineWindow_Title {\n            get {\n                return ResourceManager.GetString(\"CreateAutomationPipelineWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Customize.\n        /// </summary>\n        public static string DashboardPage_Customize {\n            get {\n                return ResourceManager.GetString(\"DashboardPage_Customize\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display.\n        /// </summary>\n        public static string DashboardPage_Display_Title {\n            get {\n                return ResourceManager.GetString(\"DashboardPage_Display_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Graphics.\n        /// </summary>\n        public static string DashboardPage_Graphics_Title {\n            get {\n                return ResourceManager.GetString(\"DashboardPage_Graphics_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Other.\n        /// </summary>\n        public static string DashboardPage_Other_Title {\n            get {\n                return ResourceManager.GetString(\"DashboardPage_Other_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power.\n        /// </summary>\n        public static string DashboardPage_Power_Title {\n            get {\n                return ResourceManager.GetString(\"DashboardPage_Power_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Home.\n        /// </summary>\n        public static string DashboardPage_Title {\n            get {\n                return ResourceManager.GetString(\"DashboardPage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable discrete GPU if it is active unnecessarily.\n        ///\n        ///WARNING: This action will not run correctly, if internal display is off or Hybrid mode is not active..\n        /// </summary>\n        public static string DeactivateGPUAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"DeactivateGPUAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deactivate GPU.\n        /// </summary>\n        public static string DeactivateGPUAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"DeactivateGPUAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default.\n        /// </summary>\n        public static string Default {\n            get {\n                return ResourceManager.GetString(\"Default\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add delay before running next step..\n        /// </summary>\n        public static string DelayAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"DelayAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Delay.\n        /// </summary>\n        public static string DelayAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"DelayAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Delete.\n        /// </summary>\n        public static string Delete {\n            get {\n                return ResourceManager.GetString(\"Delete\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deselect all.\n        /// </summary>\n        public static string DeselectAll {\n            get {\n                return ResourceManager.GetString(\"DeselectAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show connected devices only.\n        /// </summary>\n        public static string DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected {\n            get {\n                return ResourceManager.GetString(\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show removable devices only.\n        /// </summary>\n        public static string DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable {\n            get {\n                return ResourceManager.GetString(\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show selected devices only.\n        /// </summary>\n        public static string DeviceAutomationPipelineTriggerTabItemContent_OnlySelected {\n            get {\n                return ResourceManager.GetString(\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to BIOS version.\n        /// </summary>\n        public static string DeviceInformationWindow_BiosVersion_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_BiosVersion_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Device.\n        /// </summary>\n        public static string DeviceInformationWindow_Device_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_Device_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Support.\n        /// </summary>\n        public static string DeviceInformationWindow_LenovoSupport {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_LenovoSupport\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Machine Type.\n        /// </summary>\n        public static string DeviceInformationWindow_MachineType_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_MachineType_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Manufacturer.\n        /// </summary>\n        public static string DeviceInformationWindow_Manufacturer_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_Manufacturer_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Model.\n        /// </summary>\n        public static string DeviceInformationWindow_Model_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_Model_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refresh.\n        /// </summary>\n        public static string DeviceInformationWindow_Refresh {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_Refresh\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Serial number.\n        /// </summary>\n        public static string DeviceInformationWindow_SerialNumber_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_SerialNumber_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to About your device.\n        /// </summary>\n        public static string DeviceInformationWindow_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Warranty.\n        /// </summary>\n        public static string DeviceInformationWindow_Warranty_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_Warranty_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to End date.\n        /// </summary>\n        public static string DeviceInformationWindow_WarrantyEndDate_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_WarrantyEndDate_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start date.\n        /// </summary>\n        public static string DeviceInformationWindow_WarrantyStartDate_Title {\n            get {\n                return ResourceManager.GetString(\"DeviceInformationWindow_WarrantyStartDate_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Devices.\n        /// </summary>\n        public static string DevicePipelineTriggerTabItemContent_Devices {\n            get {\n                return ResourceManager.GetString(\"DevicePipelineTriggerTabItemContent_Devices\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to dGPU connected.\n        /// </summary>\n        public static string DGPU_Connected_Title {\n            get {\n                return ResourceManager.GetString(\"DGPU_Connected_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to dGPU disconnected.\n        /// </summary>\n        public static string DGPU_Disconnected_Title {\n            get {\n                return ResourceManager.GetString(\"DGPU_Disconnected_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deactivate.\n        /// </summary>\n        public static string DiscreteGPUControl_Deactivate {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_Deactivate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Kill apps.\n        /// </summary>\n        public static string DiscreteGPUControl_KillApps {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_KillApps\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable discrete GPU, if it is active unnecessarily..\n        /// </summary>\n        public static string DiscreteGPUControl_Message {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to A monitor is connected to nVidia GPU..\n        /// </summary>\n        public static string DiscreteGPUControl_MonitorConnected {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_MonitorConnected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No processes.\n        /// </summary>\n        public static string DiscreteGPUControl_NoProcesses {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_NoProcesses\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Performance state.\n        /// </summary>\n        public static string DiscreteGPUControl_PerformanceState {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_PerformanceState\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unknown.\n        /// </summary>\n        public static string DiscreteGPUControl_PerformanceState_Unknown {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_PerformanceState_Unknown\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Processes.\n        /// </summary>\n        public static string DiscreteGPUControl_Processes {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_Processes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Restart GPU.\n        /// </summary>\n        public static string DiscreteGPUControl_RestartGPU {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_RestartGPU\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Discrete GPU.\n        /// </summary>\n        public static string DiscreteGPUControl_Title {\n            get {\n                return ResourceManager.GetString(\"DiscreteGPUControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change display brightness of the built-in display.\n        ///\n        ///WARNING: This action will not run correctly, if internal display is off..\n        /// </summary>\n        public static string DisplayBrightnessAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"DisplayBrightnessAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Display brightness.\n        /// </summary>\n        public static string DisplayBrightnessAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"DisplayBrightnessAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Donate with.\n        /// </summary>\n        public static string DonatePage_DonateWith {\n            get {\n                return ResourceManager.GetString(\"DonatePage_DonateWith\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Development and maintenance of Lenovo Legion Toolkit takes a lot of time. If you like using this software you can support its future by donating an amount of your choice.\n        ///\n        ///Click the PayPal logo below or scan the QR code to donate with PayPal.\n        ///\n        ///Thanks in advance!.\n        /// </summary>\n        public static string DonatePage_Message {\n            get {\n                return ResourceManager.GetString(\"DonatePage_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Donate.\n        /// </summary>\n        public static string DonatePage_Title {\n            get {\n                return ResourceManager.GetString(\"DonatePage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change scaling of the built-in display.\n        ///\n        ///WARNING: This action will not run correctly, if internal display is off..\n        /// </summary>\n        public static string DpiScaleAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"DpiScaleAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DPI.\n        /// </summary>\n        public static string DpiScaleAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"DpiScaleAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change scale of the built-in display..\n        /// </summary>\n        public static string DpiScaleControl_Message {\n            get {\n                return ResourceManager.GetString(\"DpiScaleControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to DPI.\n        /// </summary>\n        public static string DpiScaleControl_Title {\n            get {\n                return ResourceManager.GetString(\"DpiScaleControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit.\n        /// </summary>\n        public static string Edit {\n            get {\n                return ResourceManager.GetString(\"Edit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Name.\n        /// </summary>\n        public static string EditDashboardGroupControl_EditGroup_Message {\n            get {\n                return ResourceManager.GetString(\"EditDashboardGroupControl_EditGroup_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit group name.\n        /// </summary>\n        public static string EditDashboardGroupControl_EditGroup_Title {\n            get {\n                return ResourceManager.GetString(\"EditDashboardGroupControl_EditGroup_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Name.\n        /// </summary>\n        public static string EditDashboardWindow_CreateGroup_Message {\n            get {\n                return ResourceManager.GetString(\"EditDashboardWindow_CreateGroup_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Create group.\n        /// </summary>\n        public static string EditDashboardWindow_CreateGroup_Title {\n            get {\n                return ResourceManager.GetString(\"EditDashboardWindow_CreateGroup_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Some features may not appear on the Dashboard depending on state and configuration of your laptop..\n        /// </summary>\n        public static string EditDashboardWindow_Disclaimer_Message {\n            get {\n                return ResourceManager.GetString(\"EditDashboardWindow_Disclaimer_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sensors.\n        /// </summary>\n        public static string EditDashboardWindow_Sensors {\n            get {\n                return ResourceManager.GetString(\"EditDashboardWindow_Sensors\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Customize Dashboard.\n        /// </summary>\n        public static string EditDashboardWindow_Title {\n            get {\n                return ResourceManager.GetString(\"EditDashboardWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Uncheck refresh rates that you do not want to use when Fn+R shortcut is used..\n        /// </summary>\n        public static string ExcludeRefreshRatesWindow_Description {\n            get {\n                return ResourceManager.GetString(\"ExcludeRefreshRatesWindow_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Make sure that laptop display is on. Lenovo Legion Toolkit can&apos;t load refresh rates for a display that is not on..\n        /// </summary>\n        public static string ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message {\n            get {\n                return ResourceManager.GetString(\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No Refresh Rates found.\n        /// </summary>\n        public static string ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title {\n            get {\n                return ResourceManager.GetString(\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exclude Refresh Rates.\n        /// </summary>\n        public static string ExcludeRefreshRatesWindow_Title {\n            get {\n                return ResourceManager.GetString(\"ExcludeRefreshRatesWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exit.\n        /// </summary>\n        public static string Exit {\n            get {\n                return ResourceManager.GetString(\"Exit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Export.\n        /// </summary>\n        public static string Export {\n            get {\n                return ResourceManager.GetString(\"Export\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use only integrated GPU when on battery and both integrated and discrete GPU when AC adapter is connected. When a non-standard adapter is connected, system switches to Hybrid-iGPU Only Mode..\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_Auto_Message {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_Auto_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hybrid-Auto Mode.\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_Auto_Title {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_Auto_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switching to and from this mode requires restart..\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_DGPU_Disclaimer {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use only discrete GPU. This mode provides best graphics performance, but increases power consumption..\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_DGPU_Message {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_DGPU_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to dGPU Mode.\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_DGPU_Title {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_DGPU_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Both integrated and discrete GPU are enabled. System will automatically switch between them based on its needs..\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_Hybrid_Message {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_Hybrid_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hybrid Mode.\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_Hybrid_Title {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_Hybrid_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This mode only takes effect when discrete GPU is not working..\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_IGPU_Disclaimer {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Only use integrated GPU. This mode minimizes power consumption and noise..\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_IGPU_Message {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_IGPU_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hybrid-iGPU Only Mode.\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_IGPU_Title {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_IGPU_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to About GPU Working Modes.\n        /// </summary>\n        public static string ExtendedHybridModeInfoWindow_Title {\n            get {\n                return ResourceManager.GetString(\"ExtendedHybridModeInfoWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to °F.\n        /// </summary>\n        public static string Fahrenheit {\n            get {\n                return ResourceManager.GetString(\"Fahrenheit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CPU.\n        /// </summary>\n        public static string FanCurveControl_CPU {\n            get {\n                return ResourceManager.GetString(\"FanCurveControl_CPU\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CPU Sensor.\n        /// </summary>\n        public static string FanCurveControl_CPUSensor {\n            get {\n                return ResourceManager.GetString(\"FanCurveControl_CPUSensor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fan Speed.\n        /// </summary>\n        public static string FanCurveControl_FanSpeed {\n            get {\n                return ResourceManager.GetString(\"FanCurveControl_FanSpeed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GPU.\n        /// </summary>\n        public static string FanCurveControl_GPU {\n            get {\n                return ResourceManager.GetString(\"FanCurveControl_GPU\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GPU #2.\n        /// </summary>\n        public static string FanCurveControl_GPU2 {\n            get {\n                return ResourceManager.GetString(\"FanCurveControl_GPU2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Filter....\n        /// </summary>\n        public static string Filter {\n            get {\n                return ResourceManager.GetString(\"Filter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on the laptop when you open the lid..\n        /// </summary>\n        public static string FlipToStartAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"FlipToStartAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Flip To Start.\n        /// </summary>\n        public static string FlipToStartAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"FlipToStartAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on the laptop when you open the lid..\n        /// </summary>\n        public static string FlipToStartControl_Message {\n            get {\n                return ResourceManager.GetString(\"FlipToStartControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Flip To Start.\n        /// </summary>\n        public static string FlipToStartControl_Title {\n            get {\n                return ResourceManager.GetString(\"FlipToStartControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use secondary functions of F1-F12 keys without holding Fn key..\n        /// </summary>\n        public static string FnLockAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"FnLockAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fn Lock.\n        /// </summary>\n        public static string FnLockAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"FnLockAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Use secondary functions of F1-F12 keys without holding Fn key..\n        /// </summary>\n        public static string FnLockControl_Message {\n            get {\n                return ResourceManager.GetString(\"FnLockControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fn Lock.\n        /// </summary>\n        public static string FnLockControl_Title {\n            get {\n                return ResourceManager.GetString(\"FnLockControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GHz.\n        /// </summary>\n        public static string GHz {\n            get {\n                return ResourceManager.GetString(\"GHz\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Activate Custom Mode preset.\n        ///This settings takes effect only when Custom Mode is enabled..\n        /// </summary>\n        public static string GodModePresetAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"GodModePresetAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom Mode preset.\n        /// </summary>\n        public static string GodModePresetAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"GodModePresetAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Active preset.\n        /// </summary>\n        public static string GodModeSettingsWindow_ActivePreset_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_ActivePreset_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to WARNING!\n        ///Some laptops may accept higher values than they indicate, but be careful. This option may result in unpredictable behavior. If you are not sure what are you doing, leave this at 0..\n        /// </summary>\n        public static string GodModeSettingsWindow_Advanced_MaxOffset_Message {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Advanced_MaxOffset_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maximum offset.\n        /// </summary>\n        public static string GodModeSettingsWindow_Advanced_MaxOffset_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Advanced_MaxOffset_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Do not change options below unless you really know what you are doing..\n        /// </summary>\n        public static string GodModeSettingsWindow_Advanced_Message {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Advanced_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to WARNING!\n        ///Some laptops may accept lower values than they indicate, but be careful. This option may result in unpredictable behavior. If you are not sure what are you doing, leave this at 0..\n        /// </summary>\n        public static string GodModeSettingsWindow_Advanced_MinOffset_Message {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Advanced_MinOffset_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Minimum offset.\n        /// </summary>\n        public static string GodModeSettingsWindow_Advanced_MinOffset_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Advanced_MinOffset_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Advanced.\n        /// </summary>\n        public static string GodModeSettingsWindow_Advanced_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Advanced_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to APU sPPT Power Limit.\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_APUsPPT_PL {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_APUsPPT_PL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The peak power consumption that can be reached by the CPU with a minor delay..\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_APUsPPT_PL_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Long Term Power Limit (Cross Loading).\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_CrossLoading {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_CrossLoading\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The maximum power consumption that can be reached by the CPU when both CPU and GPU are fully utilized..\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_CrossLoading_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_CrossLoading_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Long Term Power Limit.\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_LongTermPL {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_LongTermPL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The continuous power consumption that can be reached by the CPU..\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_LongTermPL_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_LongTermPL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Peak Power Limit.\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_PeakPL {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_PeakPL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The maximum instantaneous power consumption that can be reached by the CPU..\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_PeakPL_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_PeakPL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Short Term Power Limit Duration.\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_PL1Tau {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_PL1Tau\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The amount of time the CPU is allowed to boost and use Short Term Power Limit for. When Tau expires, Long Term Power Limit is used..\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_PL1Tau_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_PL1Tau_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Short Term Power Limit.\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_ShortTermPL {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_ShortTermPL\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The peak power consumption that can be reached by the CPU within a short amount time..\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_ShortTermPL_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_ShortTermPL_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CPU Temperature Limit.\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_TempLimit {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_TempLimit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The maximum temperature that can be reached by the CPU before frequency and power is reduced..\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_TempLimit_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_TempLimit_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CPU.\n        /// </summary>\n        public static string GodModeSettingsWindow_CPU_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_CPU_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Name.\n        /// </summary>\n        public static string GodModeSettingsWindow_EditPreset_Message {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_EditPreset_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset name.\n        /// </summary>\n        public static string GodModeSettingsWindow_EditPreset_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_EditPreset_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t apply settings.\n        /// </summary>\n        public static string GodModeSettingsWindow_Error_Apply_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Error_Apply_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t load setting..\n        /// </summary>\n        public static string GodModeSettingsWindow_Error_Load_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Error_Load_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fan speed is not strictly determined by one temperature sensor. It will raise or lower speed per the highest sensor between CPU, GPU and Heatsink temperature. Exact values will appear when you hover mouse over each step..\n        /// </summary>\n        public static string GodModeSettingsWindow_Fans_Curve_Message {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Fans_Curve_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fan curve.\n        /// </summary>\n        public static string GodModeSettingsWindow_Fans_Curve_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Fans_Curve_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to WARNING!\n        ///Prolonged usage of this option will degrade fans decreasing their longevity.\n        ///Seriously, be careful with this option!.\n        /// </summary>\n        public static string GodModeSettingsWindow_Fans_Max_Message {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Fans_Max_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maximum fan speed.\n        /// </summary>\n        public static string GodModeSettingsWindow_Fans_Max_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Fans_Max_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fans.\n        /// </summary>\n        public static string GodModeSettingsWindow_Fans_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Fans_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Configurable TGP.\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_CTGP {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_CTGP\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The additional amount of power that can be allocated to the GPU on top of base power consumption..\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_CTGP_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_CTGP_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dynamic Boost.\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_DynamicBoost {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_DynamicBoost\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The additional maximum power that can be allocated to the GPU based on the power consumption of the CPU..\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_DynamicBoost_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_DynamicBoost_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GPU Temperature Limit.\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_TempLimit {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_TempLimit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The maximum temperature that can be reached by the GPU before frequency and power is reduced..\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_TempLimit_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_TempLimit_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GPU.\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GPU to CPU Dynamic Boost.\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This is the maximum additional power that can be allocated to the CPU from the GPU based on CPU usage. The higher the value, the better the performance of applications that use the CPU..\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Total Processor Power Target In AC.\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" +\n                        \"\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The point at which the CPU triggers dynamic power consumption adjustment for the GPU..\n        /// </summary>\n        public static string GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" +\n                        \"_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom Mode settings will not be applied correctly when Legion Zone or its services are running..\n        /// </summary>\n        public static string GodModeSettingsWindow_LegionZoneWarning_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_LegionZoneWarning_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom Mode Settings.\n        /// </summary>\n        public static string GodModeSettingsWindow_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Custom Mode settings will not be applied correctly when Lenovo Vantage or its services are running..\n        /// </summary>\n        public static string GodModeSettingsWindow_VantageWarning_Title {\n            get {\n                return ResourceManager.GetString(\"GodModeSettingsWindow_VantageWarning_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable high dynamic range (HDR) on the built-in display.\n        ///\n        ///WARNING: This action will not run correctly if the internal display is off..\n        /// </summary>\n        public static string HDRAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"HDRAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HDR.\n        /// </summary>\n        public static string HDRAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"HDRAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable high dynamic range (HDR) on the built-in display..\n        /// </summary>\n        public static string HDRControl_Message {\n            get {\n                return ResourceManager.GetString(\"HDRControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HDR.\n        /// </summary>\n        public static string HDRControl_Title {\n            get {\n                return ResourceManager.GetString(\"HDRControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HDR usage is blocked by Windows settings..\n        /// </summary>\n        public static string HDRControl_Warning {\n            get {\n                return ResourceManager.GetString(\"HDRControl_Warning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hide.\n        /// </summary>\n        public static string Hide {\n            get {\n                return ResourceManager.GetString(\"Hide\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hide all.\n        /// </summary>\n        public static string HideAll {\n            get {\n                return ResourceManager.GetString(\"HideAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Try changing the mode again in a couple of seconds, if you do not see expected result.\n        ///If dGPU does not respond at all, please restart your laptop..\n        /// </summary>\n        public static string IGPUModeChangeException_Message {\n            get {\n                return ResourceManager.GetString(\"IGPUModeChangeException_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to dGPU will disconnect automatically when not in use and laptop is on battery power..\n        /// </summary>\n        public static string IGPUModeChangeException_Message_Auto {\n            get {\n                return ResourceManager.GetString(\"IGPUModeChangeException_Message_Auto\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to dGPU will disconnect automatically when not in use..\n        /// </summary>\n        public static string IGPUModeChangeException_Message_IGPUOnly {\n            get {\n                return ResourceManager.GetString(\"IGPUModeChangeException_Message_IGPUOnly\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Could not change GPU Working Mode.\n        /// </summary>\n        public static string IGPUModeChangeException_Title {\n            get {\n                return ResourceManager.GetString(\"IGPUModeChangeException_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to dGPU is currently in use or laptop is not on battery power.\n        /// </summary>\n        public static string IGPUModeChangeException_Title_Auto {\n            get {\n                return ResourceManager.GetString(\"IGPUModeChangeException_Title_Auto\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to dGPU is currently in use.\n        /// </summary>\n        public static string IGPUModeChangeException_Title_IGPUOnly {\n            get {\n                return ResourceManager.GetString(\"IGPUModeChangeException_Title_IGPUOnly\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Import.\n        /// </summary>\n        public static string Import {\n            get {\n                return ResourceManager.GetString(\"Import\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Inactive.\n        /// </summary>\n        public static string Inactive {\n            get {\n                return ResourceManager.GetString(\"Inactive\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This device is not compatible with Lenovo Legion Toolkit..\n        /// </summary>\n        public static string IncompatibleDevice_Message {\n            get {\n                return ResourceManager.GetString(\"IncompatibleDevice_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Information.\n        /// </summary>\n        public static string Information {\n            get {\n                return ResourceManager.GetString(\"Information\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on the laptop when a charger is connected..\n        /// </summary>\n        public static string InstantBootAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"InstantBootAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Instant Boot.\n        /// </summary>\n        public static string InstantBootAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"InstantBootAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on the laptop when a charger is connected..\n        /// </summary>\n        public static string InstantBootControl_Message {\n            get {\n                return ResourceManager.GetString(\"InstantBootControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Instant Boot.\n        /// </summary>\n        public static string InstantBootControl_Title {\n            get {\n                return ResourceManager.GetString(\"InstantBootControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard backlight cannot be controlled in here when Lenovo Vantage or its services are running..\n        /// </summary>\n        public static string Keyboard_VantageEnabledWarning_Message {\n            get {\n                return ResourceManager.GetString(\"Keyboard_VantageEnabledWarning_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Vantage or its services are running.\n        /// </summary>\n        public static string Keyboard_VantageEnabledWarning_Title {\n            get {\n                return ResourceManager.GetString(\"Keyboard_VantageEnabledWarning_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No compatible keyboards found.\n        /// </summary>\n        public static string KeyboardBacklightPage_NoCompatibleKeyboardsFound {\n            get {\n                return ResourceManager.GetString(\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard Backlight.\n        /// </summary>\n        public static string KeyboardBacklightPage_Title {\n            get {\n                return ResourceManager.GetString(\"KeyboardBacklightPage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Load.\n        /// </summary>\n        public static string Load {\n            get {\n                return ResourceManager.GetString(\"Load\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable or disable macros..\n        /// </summary>\n        public static string MacroAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"MacroAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Macro.\n        /// </summary>\n        public static string MacroAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"MacroAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Legion Toolkit must be running for macros to work..\n        /// </summary>\n        public static string MacroPage_Enable_Subtitle {\n            get {\n                return ResourceManager.GetString(\"MacroPage_Enable_Subtitle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable.\n        /// </summary>\n        public static string MacroPage_Enable_Title {\n            get {\n                return ResourceManager.GetString(\"MacroPage_Enable_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can record series of key presses and invoke them using the number pad on your keyboard..\n        /// </summary>\n        public static string MacroPage_Subtitle {\n            get {\n                return ResourceManager.GetString(\"MacroPage_Subtitle\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Macro.\n        /// </summary>\n        public static string MacroPage_Title {\n            get {\n                return ResourceManager.GetString(\"MacroPage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Recording will start in 3 seconds....\n        /// </summary>\n        public static string MacroRecordingWindow_Preparing_Title {\n            get {\n                return ResourceManager.GetString(\"MacroRecordingWindow_Preparing_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Press ESC to stop..\n        /// </summary>\n        public static string MacroRecordingWindow_Recording_Message {\n            get {\n                return ResourceManager.GetString(\"MacroRecordingWindow_Recording_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Recording....\n        /// </summary>\n        public static string MacroRecordingWindow_Recording_Title {\n            get {\n                return ResourceManager.GetString(\"MacroRecordingWindow_Recording_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don&apos;t repeat.\n        /// </summary>\n        public static string MacroSequenceControl_DontRepeat {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_DontRepeat\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ignore delays.\n        /// </summary>\n        public static string MacroSequenceControl_IgnoreDelays_Title {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_IgnoreDelays_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Interrupt if another key was pressed.\n        /// </summary>\n        public static string MacroSequenceControl_InterruptOnOtherKey_Title {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_InterruptOnOtherKey_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard only.\n        /// </summary>\n        public static string MacroSequenceControl_Keyboard {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_Keyboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard keys and mouse buttons.\n        /// </summary>\n        public static string MacroSequenceControl_KeyboardMouse {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_KeyboardMouse\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All inputs.\n        /// </summary>\n        public static string MacroSequenceControl_KeyboardMouseMovement {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_KeyboardMouseMovement\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Record.\n        /// </summary>\n        public static string MacroSequenceControl_Record {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_Record\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Recording options.\n        /// </summary>\n        public static string MacroSequenceControl_RecordingOptions {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_RecordingOptions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Repeat.\n        /// </summary>\n        public static string MacroSequenceControl_Repeat_Title {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_Repeat_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Stop recording.\n        /// </summary>\n        public static string MacroSequenceControl_StopRecording {\n            get {\n                return ResourceManager.GetString(\"MacroSequenceControl_StopRecording\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to API rate limit reached, please try again later..\n        /// </summary>\n        public static string MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message {\n            get {\n                return ResourceManager.GetString(\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Failed to check for updates.\n        /// </summary>\n        public static string MainWindow_CheckForUpdates_Error_Title {\n            get {\n                return ResourceManager.GetString(\"MainWindow_CheckForUpdates_Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Something went wrong, please try again later..\n        /// </summary>\n        public static string MainWindow_CheckForUpdates_Error_Unknown_Message {\n            get {\n                return ResourceManager.GetString(\"MainWindow_CheckForUpdates_Error_Unknown_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No updates found.\n        /// </summary>\n        public static string MainWindow_CheckForUpdates_Success_Title {\n            get {\n                return ResourceManager.GetString(\"MainWindow_CheckForUpdates_Success_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Legion Zone is running in the background..\n        /// </summary>\n        public static string MainWindow_LegionZoneRunning {\n            get {\n                return ResourceManager.GetString(\"MainWindow_LegionZoneRunning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to About.\n        /// </summary>\n        public static string MainWindow_NavigationItem_About {\n            get {\n                return ResourceManager.GetString(\"MainWindow_NavigationItem_About\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Actions.\n        /// </summary>\n        public static string MainWindow_NavigationItem_Actions {\n            get {\n                return ResourceManager.GetString(\"MainWindow_NavigationItem_Actions\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery.\n        /// </summary>\n        public static string MainWindow_NavigationItem_Battery {\n            get {\n                return ResourceManager.GetString(\"MainWindow_NavigationItem_Battery\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Dashboard.\n        /// </summary>\n        public static string MainWindow_NavigationItem_Dashboard {\n            get {\n                return ResourceManager.GetString(\"MainWindow_NavigationItem_Dashboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Donate.\n        /// </summary>\n        public static string MainWindow_NavigationItem_Donate {\n            get {\n                return ResourceManager.GetString(\"MainWindow_NavigationItem_Donate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard.\n        /// </summary>\n        public static string MainWindow_NavigationItem_Keyboard {\n            get {\n                return ResourceManager.GetString(\"MainWindow_NavigationItem_Keyboard\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Macro.\n        /// </summary>\n        public static string MainWindow_NavigationItem_Macro {\n            get {\n                return ResourceManager.GetString(\"MainWindow_NavigationItem_Macro\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Downloads.\n        /// </summary>\n        public static string MainWindow_NavigationItem_Packages {\n            get {\n                return ResourceManager.GetString(\"MainWindow_NavigationItem_Packages\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Settings.\n        /// </summary>\n        public static string MainWindow_NavigationItem_Settings {\n            get {\n                return ResourceManager.GetString(\"MainWindow_NavigationItem_Settings\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Update available!.\n        /// </summary>\n        public static string MainWindow_UpdateAvailable {\n            get {\n                return ResourceManager.GetString(\"MainWindow_UpdateAvailable\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Update {0} available!.\n        /// </summary>\n        public static string MainWindow_UpdateAvailableWithVersion {\n            get {\n                return ResourceManager.GetString(\"MainWindow_UpdateAvailableWithVersion\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Hotkeys is running in the background..\n        /// </summary>\n        public static string MainWindows_FnKeysRunning {\n            get {\n                return ResourceManager.GetString(\"MainWindows_FnKeysRunning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Vantage and/or ImController is running in the background..\n        /// </summary>\n        public static string MainWindows_VantageRunning {\n            get {\n                return ResourceManager.GetString(\"MainWindows_VantageRunning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to MHz.\n        /// </summary>\n        public static string MHz {\n            get {\n                return ResourceManager.GetString(\"MHz\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When off, microphones will be muted..\n        /// </summary>\n        public static string MicrophoneAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"MicrophoneAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Microphone.\n        /// </summary>\n        public static string MicrophoneAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"MicrophoneAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When off, microphones will be muted..\n        /// </summary>\n        public static string MicrophoneControl_Message {\n            get {\n                return ResourceManager.GetString(\"MicrophoneControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Microphone.\n        /// </summary>\n        public static string MicrophoneControl_Title {\n            get {\n                return ResourceManager.GetString(\"MicrophoneControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Move down.\n        /// </summary>\n        public static string MoveDown {\n            get {\n                return ResourceManager.GetString(\"MoveDown\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Move up.\n        /// </summary>\n        public static string MoveUp {\n            get {\n                return ResourceManager.GetString(\"MoveUp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Multiple triggers....\n        /// </summary>\n        public static string MultipleTriggersAutomationPipelineTrigger_DisplayName {\n            get {\n                return ResourceManager.GetString(\"MultipleTriggersAutomationPipelineTrigger_DisplayName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No.\n        /// </summary>\n        public static string No {\n            get {\n                return ResourceManager.GetString(\"No\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to AC adapter connected.\n        /// </summary>\n        public static string Notification_ACAdapterConnected {\n            get {\n                return ResourceManager.GetString(\"Notification_ACAdapterConnected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to AC adapter connected (Low wattage).\n        /// </summary>\n        public static string Notification_ACAdapterConnectedLowWattage {\n            get {\n                return ResourceManager.GetString(\"Notification_ACAdapterConnectedLowWattage\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to AC adapter disconnected.\n        /// </summary>\n        public static string Notification_ACAdapterDisconnected {\n            get {\n                return ResourceManager.GetString(\"Notification_ACAdapterDisconnected\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Camera off.\n        /// </summary>\n        public static string Notification_CameraOff {\n            get {\n                return ResourceManager.GetString(\"Notification_CameraOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Camera on.\n        /// </summary>\n        public static string Notification_CameraOn {\n            get {\n                return ResourceManager.GetString(\"Notification_CameraOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Caps Lock off.\n        /// </summary>\n        public static string Notification_CapsLockOff {\n            get {\n                return ResourceManager.GetString(\"Notification_CapsLockOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Caps Lock on.\n        /// </summary>\n        public static string Notification_CapsLockOn {\n            get {\n                return ResourceManager.GetString(\"Notification_CapsLockOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fn Lock off.\n        /// </summary>\n        public static string Notification_FnLockOff {\n            get {\n                return ResourceManager.GetString(\"Notification_FnLockOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fn Lock on.\n        /// </summary>\n        public static string Notification_FnLockOn {\n            get {\n                return ResourceManager.GetString(\"Notification_FnLockOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Microphone off.\n        /// </summary>\n        public static string Notification_MicrophoneOff {\n            get {\n                return ResourceManager.GetString(\"Notification_MicrophoneOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Microphone on.\n        /// </summary>\n        public static string Notification_MicrophoneOn {\n            get {\n                return ResourceManager.GetString(\"Notification_MicrophoneOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num Lock off.\n        /// </summary>\n        public static string Notification_NumLockOff {\n            get {\n                return ResourceManager.GetString(\"Notification_NumLockOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Num Lock on.\n        /// </summary>\n        public static string Notification_NumLockOn {\n            get {\n                return ResourceManager.GetString(\"Notification_NumLockOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Legion logo off.\n        /// </summary>\n        public static string Notification_PanelLogoLightingOff {\n            get {\n                return ResourceManager.GetString(\"Notification_PanelLogoLightingOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Legion logo on.\n        /// </summary>\n        public static string Notification_PanelLogoLightingOn {\n            get {\n                return ResourceManager.GetString(\"Notification_PanelLogoLightingOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ports backlight off.\n        /// </summary>\n        public static string Notification_PortLightingOff {\n            get {\n                return ResourceManager.GetString(\"Notification_PortLightingOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ports backlight on.\n        /// </summary>\n        public static string Notification_PortLightingOn {\n            get {\n                return ResourceManager.GetString(\"Notification_PortLightingOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Backlight {0}.\n        /// </summary>\n        public static string Notification_SpectrumKeyboardBacklight_Backlight {\n            get {\n                return ResourceManager.GetString(\"Notification_SpectrumKeyboardBacklight_Backlight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Brightness {0}.\n        /// </summary>\n        public static string Notification_SpectrumKeyboardBacklight_Brightness {\n            get {\n                return ResourceManager.GetString(\"Notification_SpectrumKeyboardBacklight_Brightness\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Profile {0}.\n        /// </summary>\n        public static string Notification_SpectrumKeyboardBacklight_Profile {\n            get {\n                return ResourceManager.GetString(\"Notification_SpectrumKeyboardBacklight_Profile\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Touchpad off.\n        /// </summary>\n        public static string Notification_TouchpadOff {\n            get {\n                return ResourceManager.GetString(\"Notification_TouchpadOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Touchpad on.\n        /// </summary>\n        public static string Notification_TouchpadOn {\n            get {\n                return ResourceManager.GetString(\"Notification_TouchpadOn\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Update {0} available!.\n        /// </summary>\n        public static string Notification_UpdateAvailable {\n            get {\n                return ResourceManager.GetString(\"Notification_UpdateAvailable\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Backlight {0}.\n        /// </summary>\n        public static string Notification_WhiteKeyboardBacklight {\n            get {\n                return ResourceManager.GetString(\"Notification_WhiteKeyboardBacklight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Notification Text.\n        /// </summary>\n        public static string NotificationAutomationStepControl_NotificationText {\n            get {\n                return ResourceManager.GetString(\"NotificationAutomationStepControl_NotificationText\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show notification.\n        /// </summary>\n        public static string NotificationAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"NotificationAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to AC Adapter.\n        /// </summary>\n        public static string NotificationsSettingsWindow_ACAdapter {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_ACAdapter\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Actions.\n        /// </summary>\n        public static string NotificationsSettingsWindow_Automation {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_Automation\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Camera.\n        /// </summary>\n        public static string NotificationsSettingsWindow_Camera {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_Camera\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Caps Lock and Num Lock.\n        /// </summary>\n        public static string NotificationsSettingsWindow_CapsAndNumLock {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_CapsAndNumLock\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disables notification for Fn keys actions like microphone mute.\n        ///Enable this option if you have conflicts with full screen applications..\n        /// </summary>\n        public static string NotificationsSettingsWindow_DontShowNotifications_Message {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_DontShowNotifications_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Don&apos;t show notifications.\n        /// </summary>\n        public static string NotificationsSettingsWindow_DontShowNotifications_Title {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_DontShowNotifications_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fn Lock.\n        /// </summary>\n        public static string NotificationsSettingsWindow_FnLock {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_FnLock\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard Backlight.\n        /// </summary>\n        public static string NotificationsSettingsWindow_KeyboardBacklight {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_KeyboardBacklight\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Microphone.\n        /// </summary>\n        public static string NotificationsSettingsWindow_Microphone {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_Microphone\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Always put notification at the top.\n        ///It won&apos;t affect other full screen windows, but you will not be able to click on the notifications..\n        /// </summary>\n        public static string NotificationsSettingsWindow_NotificationAlwaysOnTop_Message {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Notification always on top.\n        /// </summary>\n        public static string NotificationsSettingsWindow_NotificationAlwaysOnTop_Title {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Duration.\n        /// </summary>\n        public static string NotificationsSettingsWindow_NotificationDuration_Title {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_NotificationDuration_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show notification on all screens connected to your device..\n        /// </summary>\n        public static string NotificationsSettingsWindow_NotificationOnAllScreens_Message {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Notification on all screens.\n        /// </summary>\n        public static string NotificationsSettingsWindow_NotificationOnAllScreens_Title {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Position.\n        /// </summary>\n        public static string NotificationsSettingsWindow_NotificationPosition_Title {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_NotificationPosition_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power Mode.\n        /// </summary>\n        public static string NotificationsSettingsWindow_PowerMode {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_PowerMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refresh Rate.\n        /// </summary>\n        public static string NotificationsSettingsWindow_RefreshRate {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_RefreshRate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smart Key.\n        /// </summary>\n        public static string NotificationsSettingsWindow_SmartKey {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_SmartKey\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Notifications.\n        /// </summary>\n        public static string NotificationsSettingsWindow_Title {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Touchpad Lock.\n        /// </summary>\n        public static string NotificationsSettingsWindow_TouchpadLock {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_TouchpadLock\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Updates.\n        /// </summary>\n        public static string NotificationsSettingsWindow_Updates_Title {\n            get {\n                return ResourceManager.GetString(\"NotificationsSettingsWindow_Updates_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string Off {\n            get {\n                return ResourceManager.GetString(\"Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to OK.\n        /// </summary>\n        public static string OK {\n            get {\n                return ResourceManager.GetString(\"OK\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn backlight on or off..\n        /// </summary>\n        public static string OneLevelWhiteKeyboardBacklightAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard backlight.\n        /// </summary>\n        public static string OneLevelWhiteKeyboardBacklightAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can turn backlight on or off with Fn+Space..\n        /// </summary>\n        public static string OneLevelWhiteKeyboardBacklightControl_Message {\n            get {\n                return ResourceManager.GetString(\"OneLevelWhiteKeyboardBacklightControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard backlight.\n        /// </summary>\n        public static string OneLevelWhiteKeyboardBacklightControl_Title {\n            get {\n                return ResourceManager.GetString(\"OneLevelWhiteKeyboardBacklightControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open.\n        /// </summary>\n        public static string Open {\n            get {\n                return ResourceManager.GetString(\"Open\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Increase performance by overclocking discrete GPU.\n        ///\n        ///WARNING: This action will not run correctly, if discrete GPU is not available..\n        /// </summary>\n        public static string OverclockDiscreteGPUAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"OverclockDiscreteGPUAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overclock GPU.\n        /// </summary>\n        public static string OverclockDiscreteGPUAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"OverclockDiscreteGPUAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Increase performance by overclocking discrete GPU..\n        /// </summary>\n        public static string OverclockDiscreteGPUControl_Message {\n            get {\n                return ResourceManager.GetString(\"OverclockDiscreteGPUControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overclock GPU.\n        /// </summary>\n        public static string OverclockDiscreteGPUControl_Title {\n            get {\n                return ResourceManager.GetString(\"OverclockDiscreteGPUControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Core Frequency Offset.\n        /// </summary>\n        public static string OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title {\n            get {\n                return ResourceManager.GetString(\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Memory Frequency Offset.\n        /// </summary>\n        public static string OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title {\n            get {\n                return ResourceManager.GetString(\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Overclock GPU Settings.\n        /// </summary>\n        public static string OverclockDiscreteGPUSettingsWindow_Title {\n            get {\n                return ResourceManager.GetString(\"OverclockDiscreteGPUSettingsWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Improve response time of the built-in display..\n        /// </summary>\n        public static string OverDriveAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"OverDriveAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Over Drive.\n        /// </summary>\n        public static string OverDriveAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"OverDriveAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Improve response time of the built-in display..\n        /// </summary>\n        public static string OverDriveControl_Message {\n            get {\n                return ResourceManager.GetString(\"OverDriveControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Over Drive.\n        /// </summary>\n        public static string OverDriveControl_Title {\n            get {\n                return ResourceManager.GetString(\"OverDriveControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download.\n        /// </summary>\n        public static string PackageControl_Download {\n            get {\n                return ResourceManager.GetString(\"PackageControl_Download\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} downloaded!.\n        /// </summary>\n        public static string PackageControl_DownloadComplete_Message {\n            get {\n                return ResourceManager.GetString(\"PackageControl_DownloadComplete_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download complete.\n        /// </summary>\n        public static string PackageControl_DownloadComplete_Title {\n            get {\n                return ResourceManager.GetString(\"PackageControl_DownloadComplete_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Something went wrong.\n        /// </summary>\n        public static string PackageControl_GeneralError_Title {\n            get {\n                return ResourceManager.GetString(\"PackageControl_GeneralError_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Server returned code 404..\n        /// </summary>\n        public static string PackageControl_Http404Error_Message {\n            get {\n                return ResourceManager.GetString(\"PackageControl_Http404Error_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to The file seems to be gone.\n        /// </summary>\n        public static string PackageControl_Http404Error_Title {\n            get {\n                return ResourceManager.GetString(\"PackageControl_Http404Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check if your internet connection is up and running..\n        /// </summary>\n        public static string PackageControl_HttpGeneralError_Message {\n            get {\n                return ResourceManager.GetString(\"PackageControl_HttpGeneralError_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Something went wrong.\n        /// </summary>\n        public static string PackageControl_HttpGeneralError_Title {\n            get {\n                return ResourceManager.GetString(\"PackageControl_HttpGeneralError_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Update available!.\n        /// </summary>\n        public static string PackageControl_IsUpdateInfo {\n            get {\n                return ResourceManager.GetString(\"PackageControl_IsUpdateInfo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This package is more than a year old..\n        /// </summary>\n        public static string PackageControl_OldPackageWarning {\n            get {\n                return ResourceManager.GetString(\"PackageControl_OldPackageWarning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open README.\n        /// </summary>\n        public static string PackageControl_OpenReadme {\n            get {\n                return ResourceManager.GetString(\"PackageControl_OpenReadme\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Restart recommended.\n        /// </summary>\n        public static string PackageControl_RebootRecommended {\n            get {\n                return ResourceManager.GetString(\"PackageControl_RebootRecommended\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Restart required.\n        /// </summary>\n        public static string PackageControl_RebootRequired {\n            get {\n                return ResourceManager.GetString(\"PackageControl_RebootRequired\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Shutdown required.\n        /// </summary>\n        public static string PackageControl_ShutdownRequired {\n            get {\n                return ResourceManager.GetString(\"PackageControl_ShutdownRequired\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Version.\n        /// </summary>\n        public static string PackageControl_Version {\n            get {\n                return ResourceManager.GetString(\"PackageControl_Version\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Below is a list of software packages that are marked as compatible with your laptop.\n        ///Always make sure that you are installing correct packages..\n        /// </summary>\n        public static string PackagesPage_Disclaimer_Message {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_Disclaimer_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check if Machine Type and OS are set correctly..\n        /// </summary>\n        public static string PackagesPage_DownloadFailed_Message {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_DownloadFailed_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Something went wrong.\n        /// </summary>\n        public static string PackagesPage_DownloadFailed_Title {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_DownloadFailed_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Changing sorting, filtering results, hiding packages or refreshing the list will stop the download. Do you want to continue?.\n        /// </summary>\n        public static string PackagesPage_DownloadInProgress_Message {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_DownloadInProgress_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download in progress.\n        /// </summary>\n        public static string PackagesPage_DownloadInProgress_Title {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_DownloadInProgress_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Download folder.\n        /// </summary>\n        public static string PackagesPage_DownloadTo {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_DownloadTo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check if your internet connection is up and running..\n        /// </summary>\n        public static string PackagesPage_Error_CheckInternet_Message {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_Error_CheckInternet_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Something went wrong.\n        /// </summary>\n        public static string PackagesPage_Error_Title {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Machine Type.\n        /// </summary>\n        public static string PackagesPage_MachineType {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_MachineType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No matching downloads found.\n        /// </summary>\n        public static string PackagesPage_NoMatchingDownloads {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_NoMatchingDownloads\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show updates only.\n        /// </summary>\n        public static string PackagesPage_OnlyShowUpdates {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_OnlyShowUpdates\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Open Download folder.\n        /// </summary>\n        public static string PackagesPage_OpenDownloadTo {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_OpenDownloadTo\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Operating System.\n        /// </summary>\n        public static string PackagesPage_OperatingSystem {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_OperatingSystem\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Primary (Recommended).\n        /// </summary>\n        public static string PackagesPage_PrimarySource {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_PrimarySource\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Same as Lenovo Vantage.\n        /// </summary>\n        public static string PackagesPage_PrimarySource_Message {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_PrimarySource_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Secondary.\n        /// </summary>\n        public static string PackagesPage_SecondarySource {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_SecondarySource\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Same as Lenovo PC Support.\n        /// </summary>\n        public static string PackagesPage_SecondarySource_Message {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_SecondarySource_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Category.\n        /// </summary>\n        public static string PackagesPage_Sort_Category {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_Sort_Category\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Date.\n        /// </summary>\n        public static string PackagesPage_Sort_Date {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_Sort_Date\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Name.\n        /// </summary>\n        public static string PackagesPage_Sort_Name {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_Sort_Name\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Source.\n        /// </summary>\n        public static string PackagesPage_Source {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_Source\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Downloads.\n        /// </summary>\n        public static string PackagesPage_Title {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Try getting updates from the other source..\n        /// </summary>\n        public static string PackagesPage_UpdateCatalogNotFound_Message {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_UpdateCatalogNotFound_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Update catalog not found.\n        /// </summary>\n        public static string PackagesPage_UpdateCatalogNotFound_Title {\n            get {\n                return ResourceManager.GetString(\"PackagesPage_UpdateCatalogNotFound_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on or off the backlight on the lid of the laptop..\n        /// </summary>\n        public static string PanelLogoBacklightAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"PanelLogoBacklightAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel logo backlight.\n        /// </summary>\n        public static string PanelLogoBacklightAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"PanelLogoBacklightAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on or off the backlight on the lid of the laptop..\n        /// </summary>\n        public static string PanelLogoBacklightControl_Message {\n            get {\n                return ResourceManager.GetString(\"PanelLogoBacklightControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Panel logo backlight.\n        /// </summary>\n        public static string PanelLogoBacklightControl_Title {\n            get {\n                return ResourceManager.GetString(\"PanelLogoBacklightControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Paste.\n        /// </summary>\n        public static string Paste {\n            get {\n                return ResourceManager.GetString(\"Paste\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Period (minutes).\n        /// </summary>\n        public static string PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes {\n            get {\n                return ResourceManager.GetString(\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Common music formats like wav or mp3 are supported..\n        /// </summary>\n        public static string PlaySoundAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"PlaySoundAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Play sound.\n        /// </summary>\n        public static string PlaySoundAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"PlaySoundAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on or off the backlight of the ports on the back of the laptop..\n        /// </summary>\n        public static string PortsBacklightAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"PortsBacklightAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ports backlight.\n        /// </summary>\n        public static string PortsBacklightAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"PortsBacklightAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on or off backlight of the ports on the back of the laptop..\n        /// </summary>\n        public static string PortsBacklightControl_Message {\n            get {\n                return ResourceManager.GetString(\"PortsBacklightControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Ports backlight.\n        /// </summary>\n        public static string PortsBacklightControl_Title {\n            get {\n                return ResourceManager.GetString(\"PortsBacklightControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Powered Off.\n        /// </summary>\n        public static string PoweredOff {\n            get {\n                return ResourceManager.GetString(\"PoweredOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change performance mode..\n        /// </summary>\n        public static string PowerModeAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"PowerModeAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power Mode.\n        /// </summary>\n        public static string PowerModeAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"PowerModeAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change performance mode.\n        ///Performance mode can also be changed with Fn+Q..\n        /// </summary>\n        public static string PowerModeControl_Message {\n            get {\n                return ResourceManager.GetString(\"PowerModeControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Settings.\n        /// </summary>\n        public static string PowerModeControl_Settings {\n            get {\n                return ResourceManager.GetString(\"PowerModeControl_Settings\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power Mode.\n        /// </summary>\n        public static string PowerModeControl_Title {\n            get {\n                return ResourceManager.GetString(\"PowerModeControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Selected power mode may not work correctly without AC adapter connected..\n        /// </summary>\n        public static string PowerModeControl_Warning {\n            get {\n                return ResourceManager.GetString(\"PowerModeControl_Warning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} power mode is not available without AC power..\n        /// </summary>\n        public static string PowerModeUnavailableWithoutACException_Message {\n            get {\n                return ResourceManager.GetString(\"PowerModeUnavailableWithoutACException_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Cannot change Power Mode.\n        /// </summary>\n        public static string PowerModeUnavailableWithoutACException_Title {\n            get {\n                return ResourceManager.GetString(\"PowerModeUnavailableWithoutACException_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Windows reports that this laptop supports Modern Standby. Using power plans other than Balanced may cause unexpected behavior..\n        /// </summary>\n        public static string PowerPlansWindow_AoAcWarning_Message {\n            get {\n                return ResourceManager.GetString(\"PowerPlansWindow_AoAcWarning_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to S0 Lower Power Model detected.\n        /// </summary>\n        public static string PowerPlansWindow_AoAcWarning_Title {\n            get {\n                return ResourceManager.GetString(\"PowerPlansWindow_AoAcWarning_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Run a saved quick action..\n        /// </summary>\n        public static string QuickActionAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"QuickActionAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Quick Action.\n        /// </summary>\n        public static string QuickActionAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"QuickActionAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Readme.\n        /// </summary>\n        public static string ReadmeWindow_Title {\n            get {\n                return ResourceManager.GetString(\"ReadmeWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refresh.\n        /// </summary>\n        public static string Refresh {\n            get {\n                return ResourceManager.GetString(\"Refresh\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change refresh rate of the built-in display.\n        ///\n        ///WARNING: This action will not run correctly, if internal display is off..\n        /// </summary>\n        public static string RefreshRateAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"RefreshRateAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refresh rate.\n        /// </summary>\n        public static string RefreshRateAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"RefreshRateAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change refresh rate of the built-in display..\n        /// </summary>\n        public static string RefreshRateControl_Message {\n            get {\n                return ResourceManager.GetString(\"RefreshRateControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refresh rate.\n        /// </summary>\n        public static string RefreshRateControl_Title {\n            get {\n                return ResourceManager.GetString(\"RefreshRateControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Rename.\n        /// </summary>\n        public static string Rename {\n            get {\n                return ResourceManager.GetString(\"Rename\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change resolution of the built-in display.\n        ///\n        ///WARNING: This action will not run correctly, if internal display is off..\n        /// </summary>\n        public static string ResolutionAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"ResolutionAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Resolution.\n        /// </summary>\n        public static string ResolutionAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"ResolutionAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change resolution of the built-in display..\n        /// </summary>\n        public static string ResolutionControl_Message {\n            get {\n                return ResourceManager.GetString(\"ResolutionControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Resolution.\n        /// </summary>\n        public static string ResolutionControl_Title {\n            get {\n                return ResourceManager.GetString(\"ResolutionControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to I will restart later.\n        /// </summary>\n        public static string RestartLater {\n            get {\n                return ResourceManager.GetString(\"RestartLater\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Restart now.\n        /// </summary>\n        public static string RestartNow {\n            get {\n                return ResourceManager.GetString(\"RestartNow\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Revert.\n        /// </summary>\n        public static string Revert {\n            get {\n                return ResourceManager.GetString(\"Revert\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Revert to default.\n        /// </summary>\n        public static string RevertToDefault {\n            get {\n                return ResourceManager.GetString(\"RevertToDefault\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Adjust keyboard backlight preset..\n        /// </summary>\n        public static string RGBKeyboardBacklightAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard backlight.\n        /// </summary>\n        public static string RGBKeyboardBacklightAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Brightness.\n        /// </summary>\n        public static string RGBKeyboardBacklightBrightnessCardControl_Brightness {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightBrightnessCardControl_Brightness\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset 1.\n        /// </summary>\n        public static string RGBKeyboardBacklightControl_Preset1 {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightControl_Preset1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset 2.\n        /// </summary>\n        public static string RGBKeyboardBacklightControl_Preset2 {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightControl_Preset2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset 3.\n        /// </summary>\n        public static string RGBKeyboardBacklightControl_Preset3 {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightControl_Preset3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset 4.\n        /// </summary>\n        public static string RGBKeyboardBacklightControl_Preset4 {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightControl_Preset4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string RGBKeyboardBacklightControl_PresetOff {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightControl_PresetOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Zone 1.\n        /// </summary>\n        public static string RGBKeyboardBacklightControl_Zone1 {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightControl_Zone1\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Zone 2.\n        /// </summary>\n        public static string RGBKeyboardBacklightControl_Zone2 {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightControl_Zone2\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Zone 3.\n        /// </summary>\n        public static string RGBKeyboardBacklightControl_Zone3 {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightControl_Zone3\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Zone 4.\n        /// </summary>\n        public static string RGBKeyboardBacklightControl_Zone4 {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightControl_Zone4\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Effect.\n        /// </summary>\n        public static string RGBKeyboardBacklightEffectCardControl_Title {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightEffectCardControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speed.\n        /// </summary>\n        public static string RGBKeyboardBacklightSpeedCardControl_Title {\n            get {\n                return ResourceManager.GetString(\"RGBKeyboardBacklightSpeedCardControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to RPM.\n        /// </summary>\n        public static string RPM {\n            get {\n                return ResourceManager.GetString(\"RPM\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Arguments.\n        /// </summary>\n        public static string RunAutomationStepControl_ExeArguments {\n            get {\n                return ResourceManager.GetString(\"RunAutomationStepControl_ExeArguments\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Executable Path.\n        /// </summary>\n        public static string RunAutomationStepControl_ExePath {\n            get {\n                return ResourceManager.GetString(\"RunAutomationStepControl_ExePath\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Run a script or a program.\n        ///Make sure that your script runs correctly first..\n        /// </summary>\n        public static string RunAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"RunAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Run silently.\n        /// </summary>\n        public static string RunAutomationStepControl_ProcessRunSilently {\n            get {\n                return ResourceManager.GetString(\"RunAutomationStepControl_ProcessRunSilently\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Execute console applications, without creating a console window..\n        /// </summary>\n        public static string RunAutomationStepControl_ProcessRunSilently_Description {\n            get {\n                return ResourceManager.GetString(\"RunAutomationStepControl_ProcessRunSilently_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wait until finished.\n        /// </summary>\n        public static string RunAutomationStepControl_ProcessWaitUntilFinished {\n            get {\n                return ResourceManager.GetString(\"RunAutomationStepControl_ProcessWaitUntilFinished\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Wait until program or script finishes executing.\n        /// </summary>\n        public static string RunAutomationStepControl_ProcessWaitUntilFinished_Description {\n            get {\n                return ResourceManager.GetString(\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Run.\n        /// </summary>\n        public static string RunAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"RunAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save.\n        /// </summary>\n        public static string Save {\n            get {\n                return ResourceManager.GetString(\"Save\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Save &amp; Close.\n        /// </summary>\n        public static string SaveAndClose {\n            get {\n                return ResourceManager.GetString(\"SaveAndClose\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Saving....\n        /// </summary>\n        public static string Saving {\n            get {\n                return ResourceManager.GetString(\"Saving\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select all.\n        /// </summary>\n        public static string SelectAll {\n            get {\n                return ResourceManager.GetString(\"SelectAll\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Choose one or more quick actions to cycle through.\n        /// </summary>\n        public static string SelectSmartKeyPipelinesWindow_List_Description {\n            get {\n                return ResourceManager.GetString(\"SelectSmartKeyPipelinesWindow_List_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No Quick Actions defined..\n        /// </summary>\n        public static string SelectSmartKeyPipelinesWindow_List_Empty {\n            get {\n                return ResourceManager.GetString(\"SelectSmartKeyPipelinesWindow_List_Empty\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Show this app.\n        /// </summary>\n        public static string SelectSmartKeyPipelinesWindow_ShowThisApp {\n            get {\n                return ResourceManager.GetString(\"SelectSmartKeyPipelinesWindow_ShowThisApp\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Core Clock.\n        /// </summary>\n        public static string SensorsControl_CoreClock_Title {\n            get {\n                return ResourceManager.GetString(\"SensorsControl_CoreClock_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CPU.\n        /// </summary>\n        public static string SensorsControl_CPU_Title {\n            get {\n                return ResourceManager.GetString(\"SensorsControl_CPU_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fan.\n        /// </summary>\n        public static string SensorsControl_Fan_Title {\n            get {\n                return ResourceManager.GetString(\"SensorsControl_Fan_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to GPU.\n        /// </summary>\n        public static string SensorsControl_GPU_Title {\n            get {\n                return ResourceManager.GetString(\"SensorsControl_GPU_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Maximum: {0}.\n        /// </summary>\n        public static string SensorsControl_Maximum {\n            get {\n                return ResourceManager.GetString(\"SensorsControl_Maximum\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Memory Clock.\n        /// </summary>\n        public static string SensorsControl_MemoryClock_Title {\n            get {\n                return ResourceManager.GetString(\"SensorsControl_MemoryClock_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Refresh interval.\n        /// </summary>\n        public static string SensorsControl_RefreshInterval {\n            get {\n                return ResourceManager.GetString(\"SensorsControl_RefreshInterval\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Temperature.\n        /// </summary>\n        public static string SensorsControl_Temperature_Title {\n            get {\n                return ResourceManager.GetString(\"SensorsControl_Temperature_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Utilization.\n        /// </summary>\n        public static string SensorsControl_Utilization_Title {\n            get {\n                return ResourceManager.GetString(\"SensorsControl_Utilization_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Settings.\n        /// </summary>\n        public static string Settings {\n            get {\n                return ResourceManager.GetString(\"Settings\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Allow quick switching to Custom Mode with Fn+Q..\n        /// </summary>\n        public static string Settings_GodModeFnQSwitchable_Message {\n            get {\n                return ResourceManager.GetString(\"Settings_GodModeFnQSwitchable_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switch to Custom Mode with Fn+Q.\n        /// </summary>\n        public static string Settings_GodModeFnQSwitchable_Title {\n            get {\n                return ResourceManager.GetString(\"Settings_GodModeFnQSwitchable_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Change the accent color of the app..\n        /// </summary>\n        public static string SettingsPage_AccentColor_Description {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_AccentColor_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Accent color.\n        /// </summary>\n        public static string SettingsPage_AccentColor_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_AccentColor_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Start minimized to tray when you log in to Windows..\n        /// </summary>\n        public static string SettingsPage_Autorun_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Autorun_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Autorun.\n        /// </summary>\n        public static string SettingsPage_Autorun_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Autorun_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Customize Boot Logo image, visible during system startup..\n        /// </summary>\n        public static string SettingsPage_BootLogo_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_BootLogo_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Boot Logo.\n        /// </summary>\n        public static string SettingsPage_BootLogo_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_BootLogo_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Checking for updates....\n        /// </summary>\n        public static string SettingsPage_CheckUpdates_Started_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_CheckUpdates_Started_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check for updates.\n        /// </summary>\n        public static string SettingsPage_CheckUpdates_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_CheckUpdates_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check.\n        /// </summary>\n        public static string SettingsPage_CheckUpdatesButton_Content {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_CheckUpdatesButton_Content\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Enable Command Line Interface that allows control from command line..\n        /// </summary>\n        public static string SettingsPage_CLI_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_CLI_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to CLI.\n        /// </summary>\n        public static string SettingsPage_CLI_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_CLI_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add CLI to user&apos;s PATH environment variable..\n        /// </summary>\n        public static string SettingsPage_CLIAddToPath_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_CLIAddToPath_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add CLI to PATH.\n        /// </summary>\n        public static string SettingsPage_CLIAddToPath_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_CLIAddToPath_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Legion Zone may have not been disabled correctly.\n        /// </summary>\n        public static string SettingsPage_DisableLegionZone_Error_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableLegionZone_Error_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t disable Legion Zone.\n        /// </summary>\n        public static string SettingsPage_DisableLegionZone_Error_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableLegionZone_Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable Legion Zone and its service without uninstalling it.\n        ///Restart is recommended after changing this option..\n        /// </summary>\n        public static string SettingsPage_DisableLegionZone_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableLegionZone_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable Legion Zone.\n        /// </summary>\n        public static string SettingsPage_DisableLegionZone_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableLegionZone_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Hotkeys may have not been disabled correctly.\n        /// </summary>\n        public static string SettingsPage_DisableLenovoHotkeys_Error_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableLenovoHotkeys_Error_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t disable Lenovo Hotkeys.\n        /// </summary>\n        public static string SettingsPage_DisableLenovoHotkeys_Error_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableLenovoHotkeys_Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable Lenovo Hotkeys and its service without uninstalling it.\n        ///If disabled, this app will handle Fn shortcuts.\n        ///Restart is recommended after changing this option..\n        /// </summary>\n        public static string SettingsPage_DisableLenovoHotkeys_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableLenovoHotkeys_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable Lenovo Hotkeys.\n        /// </summary>\n        public static string SettingsPage_DisableLenovoHotkeys_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableLenovoHotkeys_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Vantage and/or ImController may have not been disabled correctly.\n        /// </summary>\n        public static string SettingsPage_DisableVantage_Error_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableVantage_Error_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t disable Lenovo Vantage and/or ImController.\n        /// </summary>\n        public static string SettingsPage_DisableVantage_Error_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableVantage_Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable Lenovo Vantage and ImController without uninstalling them.\n        ///Restart is recommended after changing this option..\n        /// </summary>\n        public static string SettingsPage_DisableVantage_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableVantage_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable Lenovo Vantage and ImController.\n        /// </summary>\n        public static string SettingsPage_DisableVantage_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_DisableVantage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Legion Zone may have not been enabled correctly.\n        /// </summary>\n        public static string SettingsPage_EnableLegionZone_Error_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_EnableLegionZone_Error_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t enable Legion Zone.\n        /// </summary>\n        public static string SettingsPage_EnableLegionZone_Error_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_EnableLegionZone_Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Hotkeys may have not been enabled correctly.\n        /// </summary>\n        public static string SettingsPage_EnableLenovoHotkeys_Error_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_EnableLenovoHotkeys_Error_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t enable Lenovo Hotkeys Keys.\n        /// </summary>\n        public static string SettingsPage_EnableLenovoHotkeys_Error_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_EnableLenovoHotkeys_Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Vantage and/or ImController may have not been enabled correctly.\n        /// </summary>\n        public static string SettingsPage_EnableVantage_Error_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_EnableVantage_Error_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t enable Lenovo Vantage and/or ImController.\n        /// </summary>\n        public static string SettingsPage_EnableVantage_Error_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_EnableVantage_Error_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can exclude refresh rates, to make Fn+R shortcut more useful..\n        /// </summary>\n        public static string SettingsPage_ExcludeRefreshRates_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_ExcludeRefreshRates_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Exclude Refresh Rates.\n        /// </summary>\n        public static string SettingsPage_ExcludeRefreshRates_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_ExcludeRefreshRates_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Share fan speed, battery temperature etc. with HWiNFO64. You may need to restart HWiNFO64 after changing this option..\n        /// </summary>\n        public static string SettingsPage_HWiNFO_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_HWiNFO_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to HWiNFO64.\n        /// </summary>\n        public static string SettingsPage_HWiNFO_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_HWiNFO_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Integrations.\n        /// </summary>\n        public static string SettingsPage_Integrations_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Integrations_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select language..\n        /// </summary>\n        public static string SettingsPage_Language_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Language_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Language.\n        /// </summary>\n        public static string SettingsPage_Language_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Language_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Always minimize to tray. Close with right click on tray icon..\n        /// </summary>\n        public static string SettingsPage_MinimizeOnClose_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_MinimizeOnClose_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Minimize on close.\n        /// </summary>\n        public static string SettingsPage_MinimizeOnClose_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_MinimizeOnClose_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Always minimize to tray instead of taskbar..\n        /// </summary>\n        public static string SettingsPage_MinimizeToTray_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_MinimizeToTray_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Minimize to tray.\n        /// </summary>\n        public static string SettingsPage_MinimizeToTray_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_MinimizeToTray_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Configure which notifications are shown..\n        /// </summary>\n        public static string SettingsPage_Notifications_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Notifications_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Notifications.\n        /// </summary>\n        public static string SettingsPage_Notifications_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Notifications_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Resets the counter for &quot;On battery since&quot; in the battery section when the system reboots..\n        /// </summary>\n        public static string SettingsPage_OnBatterySinceReset_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_OnBatterySinceReset_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reset &quot;On battery since&quot; at startup.\n        /// </summary>\n        public static string SettingsPage_OnBatterySinceReset_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_OnBatterySinceReset_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power.\n        /// </summary>\n        public static string SettingsPage_Power_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Power_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Automatically change Windows Power Plan or Windows Power Mode when changing Power Modes..\n        /// </summary>\n        public static string SettingsPage_PowerModeMapping_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_PowerModeMapping_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power Mode Synchronization.\n        /// </summary>\n        public static string SettingsPage_PowerModeMapping_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_PowerModeMapping_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Fn Lock will be temporarily disabled when Alt, Ctrl or Shift key is depressed..\n        /// </summary>\n        public static string SettingsPage_SmartFnLock_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_SmartFnLock_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smart Fn Lock.\n        /// </summary>\n        public static string SettingsPage_SmartFnLock_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_SmartFnLock_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Assign Quick Action to Fn+F9 double press..\n        /// </summary>\n        public static string SettingsPage_SmartKeyDoublePressAction_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_SmartKeyDoublePressAction_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smart Key Secondary Action.\n        /// </summary>\n        public static string SettingsPage_SmartKeyDoublePressAction_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_SmartKeyDoublePressAction_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Assign Quick Action to Fn+F9 single press..\n        /// </summary>\n        public static string SettingsPage_SmartKeySinglePressAction_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_SmartKeySinglePressAction_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Smart Key Action.\n        /// </summary>\n        public static string SettingsPage_SmartKeySinglePressAction_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_SmartKeySinglePressAction_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When on, same brightness level will be applied to all Windows power plans whenever you change it..\n        /// </summary>\n        public static string SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Single Display Brightness.\n        /// </summary>\n        public static string SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select units for temperature sensors..\n        /// </summary>\n        public static string SettingsPage_Temperature_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Temperature_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Temperature.\n        /// </summary>\n        public static string SettingsPage_Temperature_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Temperature_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Set light theme, dark theme or follow system settings..\n        /// </summary>\n        public static string SettingsPage_Theme_Description {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Theme_Description\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Theme.\n        /// </summary>\n        public static string SettingsPage_Theme_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Theme_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Settings.\n        /// </summary>\n        public static string SettingsPage_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Update.\n        /// </summary>\n        public static string SettingsPage_Update_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_Update_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Automatically check for updates.\n        /// </summary>\n        public static string SettingsPage_UpdateCheckFrequency_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_UpdateCheckFrequency_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select Windows Power Mode to apply when Power Mode changes..\n        /// </summary>\n        public static string SettingsPage_WindowsPowerModes_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_WindowsPowerModes_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Windows Power Modes.\n        /// </summary>\n        public static string SettingsPage_WindowsPowerModes_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_WindowsPowerModes_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select Windows Power Plans to apply when Power Mode changes..\n        /// </summary>\n        public static string SettingsPage_WindowsPowerPlans_Message {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_WindowsPowerPlans_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Windows Power Plans.\n        /// </summary>\n        public static string SettingsPage_WindowsPowerPlans_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_WindowsPowerPlans_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power Plan options in Windows Control Panel.\n        /// </summary>\n        public static string SettingsPage_WindowsPowerPlansControlPanel_Title {\n            get {\n                return ResourceManager.GetString(\"SettingsPage_WindowsPowerPlansControlPanel_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to When mute, all active audio output devices will be muted..\n        /// </summary>\n        public static string SpeakerAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"SpeakerAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speaker.\n        /// </summary>\n        public static string SpeakerAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"SpeakerAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Adjust keyboard backlight brightness..\n        /// </summary>\n        public static string SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Off.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard backlight brightness.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add effect.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_AddEffect {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_AddEffect\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lighting profile couldn&apos;t be applied..\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_ApplyProfileError_Message {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t apply profile.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_ApplyProfileError_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Brightness.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_Brightness_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_Brightness_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Deselect all zones.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_DeselectAll_ToolTip {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Effects.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_Effects {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_Effects\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Profile couldn&apos;t be exported.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_ExportProfileError_Message {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t export profile.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_ExportProfileError_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Profile couldn&apos;t be imported.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_ImportProfileError_Message {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Couldn&apos;t import profile.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_ImportProfileError_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to No effects added..\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_NoEffects_Text {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_NoEffects_Text\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_Preset {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_Preset\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Reset to default.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select all zones.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_SelectAll_ToolTip {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Switch keyboard layout.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Direction.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Color.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEditEffectWindow_Color_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Colors.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEditEffectWindow_Colors_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Direction.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEditEffectWindow_Direction_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Effect.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEditEffectWindow_Effect_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to This effect will be applied to the whole keyboard and will replace all other effects..\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Speed.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEditEffectWindow_Speed_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Add effect.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEditEffectWindow_Title_Add {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Edit effect.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightEditEffectWindow_Title_Edit {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Import and apply backlight configuration to the current profile..\n        /// </summary>\n        public static string SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Path.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Import keyboard backlight profile.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Adjust keyboard backlight profile..\n        /// </summary>\n        public static string SpectrumKeyboardBacklightProfileAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard backlight profile.\n        /// </summary>\n        public static string SpectrumKeyboardBacklightProfileAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to All keys.\n        /// </summary>\n        public static string SpectrumKeyboardEffectControl_Description_AllZones {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardEffectControl_Description_AllZones\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to {0} zones.\n        /// </summary>\n        public static string SpectrumKeyboardEffectControl_Description_Zones {\n            get {\n                return ResourceManager.GetString(\"SpectrumKeyboardEffectControl_Description_Zones\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Battery.\n        /// </summary>\n        public static string StatusTrayPopup_Battery {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_Battery\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Discharge rate.\n        /// </summary>\n        public static string StatusTrayPopup_DischargeRate {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_DischargeRate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Discrete GPU.\n        /// </summary>\n        public static string StatusTrayPopup_DiscreteGPU {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_DiscreteGPU\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Max discharge rate.\n        /// </summary>\n        public static string StatusTrayPopup_MaxDischargeRate {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_MaxDischargeRate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Min discharge rate.\n        /// </summary>\n        public static string StatusTrayPopup_MinDischargeRate {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_MinDischargeRate\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Mode.\n        /// </summary>\n        public static string StatusTrayPopup_Mode {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_Mode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power Mode.\n        /// </summary>\n        public static string StatusTrayPopup_PowerMode {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_PowerMode\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Power State.\n        /// </summary>\n        public static string StatusTrayPopup_PowerState {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_PowerState\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Preset.\n        /// </summary>\n        public static string StatusTrayPopup_Preset {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_Preset\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Update available!.\n        /// </summary>\n        public static string StatusTrayPopup_UpdateAvailable {\n            get {\n                return ResourceManager.GetString(\"StatusTrayPopup_UpdateAvailable\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Select icon.\n        /// </summary>\n        public static string SymbolRegularPicker_Title {\n            get {\n                return ResourceManager.GetString(\"SymbolRegularPicker_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sunrise.\n        /// </summary>\n        public static string TimeAutomationPipelineTriggerTabItemContent_Sunrise {\n            get {\n                return ResourceManager.GetString(\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Sunset.\n        /// </summary>\n        public static string TimeAutomationPipelineTriggerTabItemContent_Sunset {\n            get {\n                return ResourceManager.GetString(\"TimeAutomationPipelineTriggerTabItemContent_Sunset\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Time.\n        /// </summary>\n        public static string TimeAutomationPipelineTriggerTabItemContent_Time {\n            get {\n                return ResourceManager.GetString(\"TimeAutomationPipelineTriggerTabItemContent_Time\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Allow switching between integrated and discrete GPU.\n        ///Requires restart..\n        /// </summary>\n        public static string ToggleHybridModeAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"ToggleHybridModeAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hybrid Mode.\n        /// </summary>\n        public static string ToggleHybridModeAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"ToggleHybridModeAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Allow switching between integrated and discrete GPU.\n        ///Requires restart..\n        /// </summary>\n        public static string ToggleHybridModeControl_Message {\n            get {\n                return ResourceManager.GetString(\"ToggleHybridModeControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Changing Hybrid Mode requires restart. Do you want to restart now?.\n        /// </summary>\n        public static string ToggleHybridModeControl_RestartRequired_Message {\n            get {\n                return ResourceManager.GetString(\"ToggleHybridModeControl_RestartRequired_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Restart required.\n        /// </summary>\n        public static string ToggleHybridModeControl_RestartRequired_Title {\n            get {\n                return ResourceManager.GetString(\"ToggleHybridModeControl_RestartRequired_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Hybrid Mode.\n        /// </summary>\n        public static string ToggleHybridModeControl_Title {\n            get {\n                return ResourceManager.GetString(\"ToggleHybridModeControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable touchpad..\n        /// </summary>\n        public static string TouchpadLockAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"TouchpadLockAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Touchpad Lock.\n        /// </summary>\n        public static string TouchpadLockAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"TouchpadLockAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable touchpad..\n        /// </summary>\n        public static string TouchpadLockControl_Message {\n            get {\n                return ResourceManager.GetString(\"TouchpadLockControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Touchpad Lock.\n        /// </summary>\n        public static string TouchpadLockControl_Title {\n            get {\n                return ResourceManager.GetString(\"TouchpadLockControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Try again.\n        /// </summary>\n        public static string TryAgain {\n            get {\n                return ResourceManager.GetString(\"TryAgain\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn off all available displays..\n        /// </summary>\n        public static string TurnOffMonitorsAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"TurnOffMonitorsAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn off displays.\n        /// </summary>\n        public static string TurnOffMonitorsAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"TurnOffMonitorsAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn off all available displays.\n        ///Moving the mouse or pressing the keyboard will wake displays up..\n        /// </summary>\n        public static string TurnOffMonitorsControl_Message {\n            get {\n                return ResourceManager.GetString(\"TurnOffMonitorsControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn off displays.\n        /// </summary>\n        public static string TurnOffMonitorsControl_Title {\n            get {\n                return ResourceManager.GetString(\"TurnOffMonitorsControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn off.\n        /// </summary>\n        public static string TurnOffMonitorsControl_TurnOff {\n            get {\n                return ResourceManager.GetString(\"TurnOffMonitorsControl_TurnOff\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn off Wi-Fi.\n        /// </summary>\n        public static string TurnOffWiFiAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"TurnOffWiFiAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Turn on Wi-Fi.\n        /// </summary>\n        public static string TurnOnWiFiAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"TurnOnWiFiAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unexpected exception occurred:\n        ///{0}.\n        /// </summary>\n        public static string UnexpectedException {\n            get {\n                return ResourceManager.GetString(\"UnexpectedException\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unnamed.\n        /// </summary>\n        public static string Unnamed {\n            get {\n                return ResourceManager.GetString(\"Unnamed\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You may choose to continue at your own risk, but keep in mind that some features may not be available and/or not work properly.\n        ///\n        ///Logging will be enabled automatically, if you choose to continue..\n        /// </summary>\n        public static string UnsupportedWindow_Disclaimer {\n            get {\n                return ResourceManager.GetString(\"UnsupportedWindow_Disclaimer\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Check out project page on GitHub for more information..\n        /// </summary>\n        public static string UnsupportedWindow_Disclaimer_GitHub {\n            get {\n                return ResourceManager.GetString(\"UnsupportedWindow_Disclaimer_GitHub\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Logs folder.\n        /// </summary>\n        public static string UnsupportedWindow_Disclaimer_Logs {\n            get {\n                return ResourceManager.GetString(\"UnsupportedWindow_Disclaimer_Logs\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Machine Type.\n        /// </summary>\n        public static string UnsupportedWindow_MachineType {\n            get {\n                return ResourceManager.GetString(\"UnsupportedWindow_MachineType\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Lenovo Legion Toolkit has not been tested with your device..\n        /// </summary>\n        public static string UnsupportedWindow_Message {\n            get {\n                return ResourceManager.GetString(\"UnsupportedWindow_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Model.\n        /// </summary>\n        public static string UnsupportedWindow_Model {\n            get {\n                return ResourceManager.GetString(\"UnsupportedWindow_Model\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Unsupported device.\n        /// </summary>\n        public static string UnsupportedWindow_Title {\n            get {\n                return ResourceManager.GetString(\"UnsupportedWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Vendor.\n        /// </summary>\n        public static string UnsupportedWindow_Vendor {\n            get {\n                return ResourceManager.GetString(\"UnsupportedWindow_Vendor\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Update.\n        /// </summary>\n        public static string Update {\n            get {\n                return ResourceManager.GetString(\"Update\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Update available.\n        /// </summary>\n        public static string UpdateWindow_Title {\n            get {\n                return ResourceManager.GetString(\"UpdateWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to What&apos;s new?.\n        /// </summary>\n        public static string UpdateWindow_WhatsNew {\n            get {\n                return ResourceManager.GetString(\"UpdateWindow_WhatsNew\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Adjust keyboard backlight brightness..\n        /// </summary>\n        public static string WhiteKeyboardBacklightAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"WhiteKeyboardBacklightAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard backlight.\n        /// </summary>\n        public static string WhiteKeyboardBacklightAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"WhiteKeyboardBacklightAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to You can change brightness with Fn+Space.\n        /// </summary>\n        public static string WhiteKeyboardBacklightControl_Message {\n            get {\n                return ResourceManager.GetString(\"WhiteKeyboardBacklightControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Keyboard backlight.\n        /// </summary>\n        public static string WhiteKeyboardBacklightControl_Title {\n            get {\n                return ResourceManager.GetString(\"WhiteKeyboardBacklightControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Copy current network name.\n        /// </summary>\n        public static string WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName {\n            get {\n                return ResourceManager.GetString(\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Leave empty for any Wi-Fi network..\n        /// </summary>\n        public static string WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork {\n            get {\n                return ResourceManager.GetString(\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Network name (SSID).\n        /// </summary>\n        public static string WiFiConnectedPipelineTriggerTabItemContent_NetworkName {\n            get {\n                return ResourceManager.GetString(\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Windows Power Modes.\n        /// </summary>\n        public static string WindowsPowerModesWindow_Title {\n            get {\n                return ResourceManager.GetString(\"WindowsPowerModesWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Default.\n        /// </summary>\n        public static string WindowsPowerPlansWindow_DefaultPowerPlan {\n            get {\n                return ResourceManager.GetString(\"WindowsPowerPlansWindow_DefaultPowerPlan\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Windows Power Plans.\n        /// </summary>\n        public static string WindowsPowerPlansWindow_Title {\n            get {\n                return ResourceManager.GetString(\"WindowsPowerPlansWindow_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Disable Windows key on built-in keyboard..\n        /// </summary>\n        public static string WinKeyAutomationStepControl_Message {\n            get {\n                return ResourceManager.GetString(\"WinKeyAutomationStepControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Windows Key Lock.\n        /// </summary>\n        public static string WinKeyAutomationStepControl_Title {\n            get {\n                return ResourceManager.GetString(\"WinKeyAutomationStepControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Only works on built-in keyboard..\n        /// </summary>\n        public static string WinKeyControl_Message {\n            get {\n                return ResourceManager.GetString(\"WinKeyControl_Message\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Windows Key Lock.\n        /// </summary>\n        public static string WinKeyControl_Title {\n            get {\n                return ResourceManager.GetString(\"WinKeyControl_Title\", resourceCulture);\n            }\n        }\n        \n        /// <summary>\n        ///   Looks up a localized string similar to Yes.\n        /// </summary>\n        public static string Yes {\n            get {\n                return ResourceManager.GetString(\"Yes\", resourceCulture);\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.ar.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>نسخة</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>أخر إصدار على GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>الروابط</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>موقع المشروع على GitHub</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>حول البرنامج</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>الترجمة متوفرة بواسطة المجتمع.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>الإصدار</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>إضافة</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>أضف جديد</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>شحن الاجهزة عبر ال USB, حتى لو كان الحاسب مغلق او فى وضع النوم او السبات.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>ال USB يعمل دائما</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>شحن الاجهزة عبر ال USB, حتى لو كان الحاسب مغلق او فى وضع النوم او السبات.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>ال USB يعمل دائما</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>تطبيق</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>تطبيق وإغلاق</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>البرنامج يجب انا يكون مفتوحا حتى يعمل الأجراءات التلقائية.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>تفعيل</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>لا يوجد أجراءات معرفة. اضعط على \"اضافة جديد\" لأنشاء أجراءات جديدة.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>ان كانت مفعلة, هذه الأجراءات سوف تعمل تلقائيا. كلما تغيرت الحالة سوفت يقيم كل الأجراءات ابتداء من اعلى لأسفل. الأجراءات التى تطابق الحالة الحالية سوف تنفذ.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>الأجراءات</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>الاسم...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>أضف جديد</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>لا يوجد أجراءات سريعة معرفة. اضعط على \"اضافة جديد\" لأنشاء أجراءات سريعة جديدة.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>الأجراءات السريعة متوفرة فى قائمة التطبيق فى ال tray.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>الأجراءات السريعة</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>الاسم...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>إعادة تسمية</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>تم إرجاع كل التغيرات!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>تم الإرجاع</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>تم حفظ التغيرات بنجاح!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>تم الحفظ</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>التشغيل التلقائي</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>إضافة خطوة</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>ضبط</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>استثنائى</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>لا تنفذ مزيد من الأجراءات عندما يعمل هذا الاجراء.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>نفذ الأن</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>تمت العملية بمشاكل.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>نفذ الأن</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>تمت العملية بنجاح!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>نفذ الأن</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>يعمل الان...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} خطوة</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} خطوات</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>التطبيقات</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>عند الشروق</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>عند الغروب</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>عند {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>وضع الطاقة</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>غير مسمى</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>يتم تلقائيا اكتشاف بعض الألعاب عندما تعمل و يقوم بتعديل أداء كرت الشاشة و المعالج. الحرارة و صوت المروحة ممكن أن تزيد.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>تشغيل محرك الذكاء الاصطناعى</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>أعدادات الوضع المتزن</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>اختار كيف تشحن البطارية.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>وضع البطارية</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>اختار كيف تشحن البطارية.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>وضع البطارية</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>تمام التوصيل, جارى الشحن...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>تم التوصيل، ولكن لا يتم الشحن</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>الحرارة الحالية للبطارية.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>درجة حرارة البطارية</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>السعة الحالية للبطارية.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>السعة الحالية</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>عدد دورات الشحن/التفريغ.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>عدد الدورات</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>سعة للبطارية عند التصميم.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>سعة التصميم</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>السرعة التى يتم شحن(+) او تفريغ(-) البطارية بها.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>سرعة التفريغ</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>الوقت المتبقي المقدر: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>الوقت المتبقى...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>تاريخ الاستخدام الاول</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>متى تم استخدام البطارية لأول مرة.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>سعة البطارية عند الشحن الكامل.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>سعة الشحن الكامل</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>تم توصيل شاحن منخفض القوة</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>متى تم صناعة البطارية.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>تاريخ التنصيع</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>الوقت منذ توصيل كابل الشحن لأخر مرة.\nهذا الوقت يمكن ان يكون غير دقيق لو الحاسب تم شحنه و هو فى وضع النوم او مغلق.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>يتم استخدام البطارية منذ</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>البطارية</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>الغاء</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>إغلاق</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>أزرق</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>أخضر</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>أحمر</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>اختار وضع تشغيل كارت الشاشة بناء على استخدامك للحاسب و حالة الطاقة المتوفرة.\nالتبديل بين الأوضاع يحتاج الى أعادة تشغيل للحاسب.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>التبديل الى {0} يحتاج الى أعادة تشغيل. هل تريد أعادة التشغيل الأن؟</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>إعادة التشغيل مطلوب</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>وضع عمل كرت الشاشة</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>الأجراءات السريعة</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>اكمل</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>نسخ الكل</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>الجرافيك</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>أخرى</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>الطاقة</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>المنزل</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>اغلق كرت الشاشة ان كان يعمل بدون الحاجة اليه.\n\nتحذير: هذا الأجراء لن يعمل بشكل صحيح لو كانت شاشة الحاهز لا تعمل او الوضع الهجين لا يعمل.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>اغلق كرت الشاشة</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>اضافة مهلة قبل تشغيل الخطوة القادمة.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>تأخير</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>مسح</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>اصدار ال BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>تم نسخ النص إلى الحافظة.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" تم نسخهم.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>تم النسخ!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>الجهاز</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>خدمة Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>نوع الجهاز</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>الشركة المصنعة</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>الطراز</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>الرقم المسلسل</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>حول الجهاز</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>تاريخ الانتهاء</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>تاريخ البدء</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>الضمان</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>مفعل</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>غير مفعل</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>غير مفعل</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>قتل التطبيقات</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>أغلاق بطاقة الشاشة الخارجية لو كانت تعمل دون الحاجة أليها.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>يوجد شاشة خارجية متصلة ببطاقة نفيديا.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>لا يوجد عمليات</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>حالة الأداء</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>مجهول</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>العمليات</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>أعادة تشغيل كرت الشاشة</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>كرت الشاشة الخارجى</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>تغيير سطوع الخاصة بشاشة اللاب توب.\nأوضاع الطاقة يكمن أن تغير سطوع في بعض الأجهزة. ضع فى الاعتبار انه يجب أن تجعل هذه الخطوة أخر خطوة لو حدثت أي مشكلة.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>سطوع الشاشة</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>تبرع لِ</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>العمل على Lenovo Legion Toolkit يحتاج الكثير من الوقت و المجهود. لو اعجبك البرنامج يمكن انت تدعمه من خلال التبرع بمبلغ من اختيارك.\n\nاضغط على رمز الباي بال فى الأسفل او امسح كود ال QR للتبرع بالباي بال. \n\nوشكرا على دعمكم!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>دعم المشروع</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>تحرير</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>قم بإلغاء تحديد معدلات التحديث التي لا تريد استخدامها عند استخدام اختصار Fn + R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>ضع فى الاعتبار انه يجب اتكون الشاشة قيد العمل حتى يستطيع البرنامج قراءة ال refresh rate.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>لا يوجد Refresh Rates</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>استبعاد Refresh Rates</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>خروج</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>تصدير</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>استخدم كرت الشاشة الداخلى فقط عند استخدام البطارية و استخدم كرت الشاشة الداخلى و الخارجى عندما يكون كابل الطاقة متصل. عندما استخدام كابل طاقة غير قياسى, النظام يستخدم Hybrid-iGPU فقط.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>وضع ال Hybrid-Auto</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>التبديل من و إلى هذا الوضع يحتاج الى أعادة تشغيل.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>استخدم بطاقة الشاشة الخارجية فقط. هذا الوضع يوفر افضل اداء للجرافيك و لكن يزيد استهلاك الكهرباء.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>وضع كرت الشاشة الخارجى</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>الوضع الهجين</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>هذا الوضع يعمل فقط عندما تكون بطاقة الشاشة الخارجية لا تعمل.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>استخدم بطاقة الشاشة الداخلية فقط. هذا الوضع يخفض استهلاك الطاقة و الضوضاء.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>وضع ال Hybrid-iGPU فقط</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>حول أوضاع عمل بطاقة الشاشة</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>المعالج</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>حساس المعالج</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>سرعة المروحة</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>كرت الشاشة</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>لفة فى الدقيقة</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>تشغيل اللاب توب عند رفع الشاشة.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>ارفع للتشغيل</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>تشغيل اللاب توب عندما ترفع الشاشة.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>ارفع للتشغيل</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>استخدم الوظيفة الثانية لمفاتيح الF1-F12 دون الحاجة للضغط على زرار ال Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn قفل ال</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>استخدم الوظيفة الثانية لمفاتيح الF1-F12 دون الحاجة للضغط على زرار ال Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn قفل ال</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>لا تغير الخيارات في الأسفل إلا إذا كنت تعلم ماذا تفعل.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>إعدادات متقدمة</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>حدا لطاقه لفتره طويله</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>حد الطاقة على الأمد الطويل</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>حدا لطاقه لفتره قصيره</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>حد حرارة المعالج</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>المعالج</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>تعذّر تعيين الإعدادات</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>تعذر الحصول على الحالة.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>سرعه المروحه ليست محدده عن طريق مستشعر حراره واحد. سوف ترفع او تخفض سرعه المروحه علي حسب اعلي حراره للمستشعر بين المعالج و كرت الشاشه و مشتت الحراره. القيم تحديدا سوف تظهر في حال الوقوف علي كل نقطه.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>منحنى المِرْوَحَة</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>تحذير!\nسيؤدي الاستخدام المطول لهذا الخِيار إلى إضعاف المراوح وتقليل عمرها.\nبجدية ، كن حذرا مع هذا الخِيار!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>أعلى سرعة للمروحة</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>مراوح</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>TGP قابل للضبط</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>تعزيز أو دعم تلقائي</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>أعلى حد لحرارة المعالج</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>وحدة معالجة الرسومات</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>إعدادات الوضع الخاص</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>تمكين النطاق الديناميكي العالي (HDR) على الشاشة المدمجة.\n\nتحذير: لن يعمل هذا الإجراء بشكل صحيح إذا كانت الشاشة الداخلية غير مشغلة.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>النطاق الديناميكي العالي</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>تفعيل النطاق الديناميكي العالي(HDR) على الشاشة المدمجة.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>النطاق الديناميكي العالي</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>استخدام النطاق الديناميكي العالي موقف من قبل إعدادات نظام التشغيل.</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>هذا الجهاز غير متوافق مع مجموعة أدوات Lenovo Legion.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>لم يتم العثور على لوحة مفاتيح متوافقة</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>الإضاءة الخلفية للوحة المفاتيح</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>حول البرنامج</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>الإجراءات</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>البطارية</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>لوحة التحكم أو اللوحة الرئيسة</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>دعم المشروع</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>لوحة المفاتيح</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>التحميلات</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>الإعدادات</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>يتوفر تحديث!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>يتوفر {0} تحديث!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>التحريك للأسفل</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>اذهب للأعلى</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>لا</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>محول التيار المتردد متصل</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>محول التيار المتردد متصل (منخفض القوة الكهربائية)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>محول التيار المتردد غير متصل</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>الكاميرا مغلقة</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>الكاميرا قيد التشغيل</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>تم إيقاف تشغيل Caps Lock</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>تم إيقاف تشغيل Caps Lock</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn مغلق</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn مغلق</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>المايكروفون مغلق</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>المايكروفون مفتوح</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>مفاتيح ألأرقام مغلقة</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>مفاتيح ألأرقام مفتوحة</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>الإضاءة الخلفية {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>الإضاءة {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>الملف الشخصي {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>لوحة اللمس مُقفلة</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>لوحة اللمس مُشغلة</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>الإضاءة الخلفية {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>محول التيار المتردد</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>الكاميرا</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>مفتاح تحويل الأحرف الصغيرة إلى كبيرة و مفتاح الأرقام</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>لا تظهر أي إشعارات</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>مفاتيح Fn</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>الإضاءة الخلفية للوحة المفاتيح</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>الميكروفون</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>الموضع</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>وضع الطاقة</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>معدل التحديث</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>المفتاح الذكي</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>الإشعارات</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>لوحة اللمس مُشغلة</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>موافق</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>فتح</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>تحسين وقت استجابة الشاشة المدمجة.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>مسنن مضاعفة السرعة</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>تحسين وقت استجابة الشاشة المدمجة.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>مسنن مضاعفة السرعة</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} مُحمل!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>اكتمل التحميل</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>لقد حدث خطأ ما</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>الخادم أو السرفر ارجع خطاء بالكود 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>يبدو أن الملف تألف أو غير موجود</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>تحقق مما إذا كان اتصال الإنترنت الخاص بك محدث و قيد التشغيل.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>هناك خطأ ما</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>يتوفر تحديث!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>هذه الحزمة عمرها أكثر من عام.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>نسخة</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>فيما يلي قائمة بحزم البرنامج التي تم تمييزها على أنها متوافقة مع الكمبيوتر المحمول الخاص بك.\nتأكد دائمًا من أنك تقوم بتثبيت الحزم الصحيحة.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>تحقق من ضبط نوع الجهاز ونظام التشغيل بشكل صحيح.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>هناك خطأ ما</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>سيؤدي تغيير الترتيب أو تصفية النتائج أو إخفاء الحزم أو تحديث القائمة إلى إيقاف التنزيل. هل تريد الاستمرار؟</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>جارٍ التنزيل</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>جارٍ التصفية...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>نوع الجهاز أو الآلة</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>نظام التشغيل</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>أولي أو أساسي (يوصى به)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>يبدو انه يدعم الكمبيوتر المحمول من نوع Lenovo</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>ثانوي</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>يبدو كانه Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>الفئة-التصنيف</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>التاريخ</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>الاسم</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>المصدر</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>التحميلات</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>لصق</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>اختر وضع الأداء.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>وضع الطاقة</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>حدد وضع الأداء.\nيمكنك تبديل الوضع باستخدام Fn + Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>الإعدادات</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>وضع الطاقة</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>قد لا يعمل وضع الطاقة المحدد بشكل صحيح بِدون توصيل محول التيار المتردد.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>اضبط الإعداد المسبق للإضاءة الخلفية للوحة المفاتيح.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>الإضاءة الخلفية للوحة المفاتيح</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>السطوع</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>الإعدادات المسبقة رَقَم 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>الإعدادات المسبقة رَقَم 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>الإعدادات المسبقة رَقَم 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>الإعدادات المسبقة رَقَم 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>غلق</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>المنطقة 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>المنطقة 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>المنطقة 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>المنطقة 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>تأثير</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>السرعة</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>الملف التمهيدي</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>تحديث</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>تمكين النطاق الديناميكي العالي (HDR) على الشاشة المدمجة.\n\nتحذير: لن يعمل هذا الإجراء بشكل صحيح إذا كانت الشاشة الداخلية غير مشغلة.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value> معدل التحديث</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>تغيير معدل التحديث للشاشة المدمجة.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value> معدل التحديث</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>إعادة التسمية</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>سأقوم بإعادة التشغيل لاحقًا</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>إعادة التشغيل الآن</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>العودة إلى الوراء</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>المعاملات</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>مسار ملف قابل للتنفيذ</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>قم بتشغيل برنامج نصي أو برنامج.\nتأكد من تشغيل البرنامج النصي بشكل صحيح أولاً.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>تشغيل</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>حفظ</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>جاري الحفظ...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>اختر إجراءً أو أكثر من الإجراءات السريعة للتنقل خلالها</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>لم يتم تعريف أي إجراءات سريعة.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>أعرض هذا التطبيق</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>تغيير المظهر والألوان في التطبيق.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>لون المظهر</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>شغل مصغرا للمعروضات عند تسجيل الدخول لنظام التشغيل أو الويندوز.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>تشغيل تلقائي</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>ربما لم يتم تعطيل Legion Zone أو منطقة Legion بشكل صحيح</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>تعذر تعطيل Legion Zone أو منطقة Legion</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>تعطيل Legion Zone أو منطقة Legion</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>ربما لم يتم تعطيل Legion Zone أو منطقة Legion بشكل صحيح</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>تعذر تعطيل Legion Zone أو منطقة Legion</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>تعطيل مفاتيح Lenovo الساخنة</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>قم بتعطيل Lenovo Vantage</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>تعذر تعطيل مفاتيح مِيزة Lenovo Hotkeys أو مفاتيح مِيزة مفاتيح Lenovo الساخنة</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>يمكنك استبعاد معدلات التحديث ، لجعل اختصار Fn + R أكثر فائدة.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>استبعاد معدلات التحديث</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>اختر اللغة.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>اللغة</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>قلل دائمًا إلى حدود الصفحة المعروضة. أغلق بالنقر بزر الماوس الأيمن على أيقونة الصفحة المعروضة.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>تصغير عند الإغلاق</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>الرجاء قم بضبط أي الإشعارات تريد عرضها.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>الإشعارات</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>أوضاع أو خطط الطاقة</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>قم بتعيين إجراء سريع للضغط المزدوج على Fn + F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>الإجراء الثانوي للمفتاح الذكي</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>أجراء المفتاح الذكي</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>عيّن مظهرًا فاتحًا أو مظهرًا داكنًا أو اتبع إعدادات النظام.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>مظهر</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>الإعدادات</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>اضبط الإعداد المسبق للإضاءة الخلفية للوحة المفاتيح.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>غلق</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>سطوع إضاءة الأزرار</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>إضافة تأثير</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>تعذر إضافة الملف الشخصي</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>لا يمكن تطبيق الملف الشخصي المضيء.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>السطوع</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>قم بإلغاء تحديد جميع مناطق الإضاءة</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>مؤثرات</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>لا مؤثرات إضاءة تم أضافتها.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>إعادة الضبط إلى الوضع الإفتراضي</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>قم بإلغاء تحديد جميع مناطق الإضاءة</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>تبديل تنسيق لوحة المفاتيح</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>جهة</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>اللون</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>الالوان</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>جهة</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>تأثير</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>سيتم تطبيق هذا التأثير على لوحة المفاتيح بالكامل وسيحل محل جميع التأثيرات الأخرى.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>السرعة</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>إضافة تأثير</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>تعديل التأثير</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>ضبط وضع الإضاءة الخلفية للوحة المفاتيح.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>ملف تعريف الإضاءة الخلفية للوحة المفاتيح</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>كل المفاتيح</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>المناطق {0}</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>الشروق</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>الغروب</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>الوقت</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>السماح بالتبديل بين وحدة معالجة الرسومات المدمجة والمنفصلة.\nيتطلب إعادة التشغيل.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>يتطلب تغيير الوضع ألى الوضع الهجين إعادة التشغيل. هل تريد إعادة التشغيل الآن؟</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>إعادة التشغيل مطلوبة</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>الوضع الهجين</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>تعطيل لوحة اللمس.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>تعطيل لوحة اللمس.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>لوحة اللمس مُشغلة</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>حاول مرة أخرى</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>غير مسمى</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>يمكنك اختيار الاستمرار على مسؤوليتك الخاصة ، ولكن ضع في اعتبارك أن بعض الميزات قد لا تكون متاحة و / أو لا تعمل بشكل صحيح.\n\nسيتم تمكين التسجيل تلقائيًا ، إذا اخترت المتابعة.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>قم بزيارة صفحة المشروع على GitHub لمزيد من المعلومات.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>مجلد التسجلات أو الدخولات</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>نوع الجهاز أو الآلة</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>لم يتم اختبار مجموعة أدوات Lenovo Legion مع جهازك.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>الطراز</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>جهاز غير مدعوم</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>المورد</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>تحديث</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>التحديث متوفر</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>ما الجديد؟</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>اضبط الإعداد المسبق للإضاءة الخلفية للوحة المفاتيح.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>الإضاءة الخلفية للوحة المفاتيح</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>يمكنك تغيير السطوع باستخدام Fn + Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>الإضاءة الخلفية للوحة المفاتيح</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>يعمل فقط على لوحة المفاتيح المدمجة.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>قفل مفتاح الويندوز</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>نعم</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>الميكروفون</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>الشاشة</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>الإضاءة الخلفية للوحة المفاتيح</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>الإضاءة الخلفية للوحة المفاتيح</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>الاسم</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>حفظ و إغلاق</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>يتوفر {0} تحديث!</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>إضافة خطوة</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>يتوفر تحديث!</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>مغلق</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.bg.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Издание</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Последна версия в GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Връзки</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Уебсайт на проекта в GitHub</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>За проекта</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Преводи, предоставени от общността.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Версия</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Добави</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Добави ново</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Зареждане на USB устройства при изключен компютър, в спящ режим или в режим на хибернация.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Винаги включен USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Зареждане на USB устройства при изключен компютър, в спящ режим или в режим на хибернация.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Винаги включен USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Приложи</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Приложи и затвори</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit трябва да работи, за да може автоматичните действия да бъдат изпълнени.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Активирай</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Нямате дефинирани Действия. Натиснете \"Добави ново\", за да създадете ново Действие.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Действия ще бъдат изпълнени автоматично, ако функцията е активирана. При промяна в състоянието, всички те ще бъдат проверени от горе надолу. Само тези, които съвпадат с настоящото състояние, ще бъдат изпълнени.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Действия</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Име...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Добави ново</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Все още нямате Бързи действия. Натиснете \"Добави ново\", за да създадете ново Бързо действие.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Бързите действия могат да бъдат намерени в менюто, което се показва при натискане на десен бутон върху иконката в лентата на задачите.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Бързи действия</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Име...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Преименувай</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Всички промени бяха отменени!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Отменено</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Промените бяха запазени успешно!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Запазено</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Автоматизация</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Добави стъпка</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Конфигурирай</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Ексклузивна</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Моля не започвайте други действия, когато настоящото е в процес на изпълнение.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Изпълни сега</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Действието е завършено. Имаше грешки.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Изпълни сега</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Действието беше завършено успешно!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Изпълни сега</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Изпълняване...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} стъпка</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} стъпки</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Приложения</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>При изгрев</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>При залез</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>В {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Режим на захранване</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Безименен</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Автоматично засича дали дадени игри са отворени и променя производителността на процесора и видеокартата. Температурата и шума от вентилаторите е възможно да се повишат.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Активирай интелигентен подбор</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Настройки на балансирания режим</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изберете как да се зарежда батерията.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Режим на батерията</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Изберете как да се зарежда батерията.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Режим на батерията</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Свързано, зарежда батерията...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Свързано, не зарежда батерията</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Текуща температура на батерията.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Температура на батерията</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Текущ капацитет на батерията.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Текущ капацитет</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Колко пъти батерията е преминала през цикъл на разреждане и зареждане.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Брой на циклите</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Капацитет на батерията по спецификация.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Фабричен капацитет</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Скорост на зареждане (+) или разреждане (-) на батерията.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Скорост на разреждане</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Оставащо време: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Пресмятане на времето...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Дата на първо използване</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Кога батерията е била използвана за първи път.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Капацитет на батерията, когато е напълно заредена.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Пълен капацитет</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Беше свързано зарядно с ниска мощност</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Кога е била произведена батерията.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Дата на производство</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Изминалото време от последното свързване на зарядното.\nВъзможни са неточности, ако лаптопът е бил зареждан по време на спящ режим или докато е бил изключен.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>На батерия от</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Батерия</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Отказ</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Затвори</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Синьо</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Зелено</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Червено</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Изберете режим на работа за видеокартата в зависимост от това как използвате компютъра и как се захранва.\nПромяна в режима може да изисква рестартиране.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Преминаване към {0} изисква рестартиране. Искате ли да го направите сега?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Необходимо е рестартиране</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Режим на работа на видео картата.</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Бързи действия</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Продължи</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Копирай всички</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Графика</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Други</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Захранване</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Начало</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Деактивирайте допълнителната видеокарта, ако се използва без да има нужда от нея.\n\nВНИМАНИЕ: Това действие може да не се изпълни правилно, ако вграденият монитор е изключен или ако не е активиран Хибриден режим.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Деактивирайте видеокартата</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Добавате забавяне преди изпълнението на следващата стъпка.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Забавяне</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Изтрий</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS версия</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Текстът беше копиран в клипборда.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" беше копиран в клипборда.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Копирано!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Устройство</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo поддръжка</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Вид на машината</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Производител</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Модел</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Сериен номер</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>За Вашето устройство</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Крайна дата</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Начална дата</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Гаранция</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Активна</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Деактивирай</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Неактивен</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Спри приложенията</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Деактивирайте допълнителната видеокарта ако се използва без да има нужда.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Монитор беше свързан към графичната карта на Nvidia.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Няма процеси</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Състояние на производителността</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Неизвестен</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Процеси</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Рестартирайте видеокартата</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Допълнителна видеокарта</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Променете яркостта на вградения екран.\nПромяна в режима на захранване може да доведе до промяна в яркостта при някои устройства. Уверете се, че настоящата стъпка е сложена на последно място, ако нещо не работи, както очаквате.\n\nВНИМАНИЕ: Това действие може да не се изпълни правилно, ако вграденият екран е изключен.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Яркост на екрана</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Дарете с</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Разработката и поддръжката на Lenovo Legion Toolkit изисква много време. Ако харесвате този софтуер може да подкрепите бъдещото му развитие като дарите сума по ваша лична преценка.\n\nНатиснете логото на PayPal по-долу или сканирайте QR-кода, за да дарите с PayPal.\n\nБлагодаря предварително!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Дарете</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Промени</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Премахнете отметките на честотите на обновяване, които не бихте искали да използвате при смяна на честотата с клавишната комбинация Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Уверете се, че вграденият дисплей е включен. Lenovo Legion Toolkit не може да зареди честотата на опресняване на дисплей, който не е включен.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Не бяха открити честоти на опресняване</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Без честота на опресняване</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Изход</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Експортиране</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Използвай само вградената видеокарта, когато лаптопът работи само на батерия. Използвай допълнителната и вградената видеокарта, когато захранването е свързано. Когато нестандартен адаптер е свързан, системата превключва режим Hybrid-iGPU.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Хибридно-автоматичен режим</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Превключване към и от този режим изисква рестартиране.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Използвай само допълнителната видеокарта. Този режим осигурява най-добрата възможна графична производителност, но увеличава потреблението на енергия.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Режим dGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Активирани са както вградената, така и допълнителната видеокарта. Системата автоматично ще сменя между двете в зависимост от нуждите ѝ.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Хибриден режим</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Този режим влиза в сила само когато допълнителната видеокарта не работи.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Използвай само вградената видеокарта. Този режим свежда до минимум потреблението на енергия и шума.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Режим само Hybrid-iGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Относно режимите на работа на видеокартата</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>Процесор</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Сензор на процесора</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Скорост на перките</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>Видеокарта</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>Обороти в минута</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Стартира лаптопа при отваряне на капака.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Разгъни за стартиране</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Стартира лаптопа при отваряне на капака.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Разгъни за стартиране</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Използвайте второстепенните функции на клавишите F1-F12 без да задържате клавиша Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Заключен клавиш Fn</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Използвайте второстепенните функции на клавишите F1-F12 без да задържате клавиша Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Заключен клавиш Fn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>ВНИМАНИ!\nНякои лаптопи може да поддържат по-ниски стойности от посочените, но внимавайте. Тази опция може да доведе до непредвидимо поведение, затова я оставете на 0 ако не сте сигурни какво правите.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Минимален офсет</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>ВНИМАНИ!\nНякои лаптопи може да поддържат по-високи стойности от посочените, но внимавайте. Тази опция може да доведе до непредвидимо поведение, затова я оставете на 0 ако не сте сигурни какво правите.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Максимален офсет</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Не променяйте настройките по-долу, освен ако наистина знаете какво правите.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Разширени</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Дългосрочно ограничение на мощността (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Дългосрочно ограничение на мощността</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Краткосрочно ограничение на мощността</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Температурна граница на процесора</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>Процесор</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Настройките не успяха да бъдат приложени</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Настройките не успяха да бъдат заредени.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Скоростта на перката не е строго определена само от стойността на един сензор. Скоростта ще се увеличава и намалява в зависимост от най-високото показание измежду сензорите при процесора, видеокартата и системата за охлаждане. Точните стойности ще бъдат показани, когато задържите показалеца на мишката върху всяка стъпка.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Крива на перката</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>ВНИМАНИЕ!\nПродължително използване на тази настройка ще доведе до износване на перката и намаляване на продължителността ѝ на живот.\nНе, наистина, бъдете внимателни с тази настройка!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Максимална скорост на перката</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Перки</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Конфигурируема TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Динамичен усилване</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Лимит на температурата на видеокартата</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>Видеокарта</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Настройки потребителския режим</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Активирай висок динамичен обхват (HDR) на вградения екран.\n\nВНИМАНИЕ: Това действие няма да бъде изпълнено правилно, ако вградения екран е изключен.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Висок динамичен обхват (HDR)</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Активирай висок динамичен обхват (HDR) на вградения екран.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>Висок динамичен обхват (HDR)</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Високият динамичен обхват (HDR) е блокиран от настройките на Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Импортиране</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Това устройтво не е съвместимо с Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Не са намерени съвместими клавиатури</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Подсветка на клавиатурата</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Подсветката на клавиатурата не може да бъде управлявана тук, когато Lenovo Vantage или неговите услуги работят.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage или неговите услуги работят</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Относно</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Действия</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Батерия</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Информационно табло</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Дари</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Клавиатура</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Изтегляния</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Настройки</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Налична е актуализация!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Актуализация {0} е налична!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Премести надолу</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Премести нагоре</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Не</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Зарядното е свързано</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Зарядното е свързано (ниска мощност)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Зарядното е извадено</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Камерата е изключена</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Камерата е включена</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock е включен</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock е изключен</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Отключване на клваиша Fn</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Заключен клавиш Fn</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Микрофонът е изключен</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Микрофонът е включен</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock е изключен</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock е включен</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Подсветка {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Яркост {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Профил {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Тъчпадът е изключен</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Тъчпадът е включен</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Подсветка {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Зарядно</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Камера</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock и Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Не показвай известия</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Заключен клавиш Fn</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Подсветка на клавиатурата</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Микрофон</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Позиция</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Режим на захранване</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Скорост на обновяване</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Умен клавиш</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Известия</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Заключен тъчпад</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Добави</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Отвори</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Подобрете времето на реакция на вградения дисплей.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Овърдрайв</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Подобрете времето на реакция на вградения дисплей.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Овърдрайв</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} е свален!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Свалянето е завършено</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Нещо се обърка</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Сървърът отговори с код 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Изглежда, че файлът е изчезнал</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Проверете дали връзката Ви с Интернет е наред.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Нещо се обърка</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Налична е актуализация!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Този пакет е на повече от година.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Версия</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>По-долу може да намерите списък с пакети, които са отбелязани като съвместими с Вашия лаптоп.\nВинаги се уверявайте, че инсталирате правилния пакет, преди да го направите.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Проверете дали видът на машината и операционната система са правилно зададени.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Нещо се обърка</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Промяна в сортирането, филтриране на резултатите, скриване на пакети или презареждане на списъка ще прекъсне свалянето. Желаете ли да продължите?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Изтеглянето е в ход</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Филтрирай...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Вид на машината</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Операционна система</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Основен (препоръчано)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Както Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Второстепенен</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Както Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Категория</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Дата</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Име</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Източник</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Изтегляния</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Поставяне</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изберете режим на производителност.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Режим на захранване</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Изберете режим на производителност.\nМоже да промените режима с клавишната комбинация Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Настройки</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Режим на захранване</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Избраният режим на захранване може да не работи правилно без свързано зарядно.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Нагласяне на предварително зададените настройки за подсветка.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка на клавиатурата</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Яркост</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Предварително зададена настройка 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Предварително зададена настройка 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Предварително зададена настройка 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Предварително зададена 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Изключена</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Зона 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Зона 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Зона 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Зона 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Ефект</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Скорост</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Прочети ме</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Опресни</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Променете честотата на опресняване на вградения дисплей.\n\nВНИМАНИЕ: Това действие може да не бъде изпълнено правилно, ако вграденият дисплей е изключен.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Честота на опресняване</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Променете честотата на опресняване на вградения дисплей.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Честота на опресняване</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Преименувай</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Ще рестартирам по-късно</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Рестартирай сега</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Връщане в начално състояние</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Аргументи</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Път до изпълнимия файл</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изпълни скрипт или програма.\nПърво се уверете, че скриптът Ви работи правилно.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Изпълни</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Запази</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Запазване...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Изберете едно или повече бързи действия, през които ще може да преминете</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Няма създадени бързи действия.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Покажи това приложение</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Променете цвета на акцента на приложението.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Цвят на акцента</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Приложението ще бъде стартирано заедно с компютъра. Ще може да го откриете в лентата на задачите.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Автоматично стартиране</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Възможно е приложението Legion Zone да не е деактивирано правилно</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Приложението Legion Zone не можа да бъде деактивирано</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Деактивирай приложението Legion Zone и неговите услуги без да бъде деинсталирано.\nПрепоръчително е да рестартирате компютъра след тази промяна.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Деактивирай приложението Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Възможно е приложението Lenovo Hotkeys да не е деактивирано правилно</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Приложението Lenovo Hotkeys не можа да бъде деактивирано</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Деактивирай приложението Lenovo Hotkeys и неговите услуги без да бъде деинсталирано.\nАко го деактивирате, това приложение ще се справя с клавишните комбинации, които използват Fn бутона.\nПрепоръчително е да рестартирате компютъра след промяна на настройката.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Деактивирай приложението Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage и/или ImController може да не са били деактивирани правилно</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage и/или ImController не можаха да бъдат деактивирани</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Деактивирайте Lenovo Vantage и ImController без да ги деинсталирате.\nПрепоръчително е да рестартирате устройство си след промяна в настройката.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Декативирайте Lenovo Vantage и ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Възможно е приложението Legion Zone да не е активирано правилно</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Приложението Legion Zone не можа да бъде активирано</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Възможно е приложението Lenovo Hotkeys да не е активирано правилно</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Приложението Lenovo Hotkeys не можа да бъде активирано</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage и/или ImController може да не са били активирани правилно</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage и/или ImController не можаха да бъдат активирани</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Може да изключите избрани честоти на опресняване, за да направите клавишната комбинация Fn+R по-полезна.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Изключи честотата на опресняване</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Изберете език.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Език</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Приложението се минимизира в лентата на задачите, когато затворите основния прозорец. Може да го спрете от менюто, което се отваря при натискането на десен бутон върху иконката му.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Минимизирай приложението при затваряне на прозореца</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Изберете кои известия да бъдат показани.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Известия</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Планове за захранване</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Изберете кое бързо действие да бъде извършено при двойно натискане на клавишната комбинация Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Второстепенно действие за Smart Key</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Изберете кое бързо действие да бъде извършено при двойно натискане на клавишната комбинация Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Действие за Smart Key</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Задайте светла или тъмна тема или използвайте системната настройка.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Облик</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Настройки</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Нагласяне на яркостта на подсветката.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Изключена</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Яркост на подсветката на клавиатурата</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Доабви ефект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Неуспешно прилагане на профил</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Неуспешно прилагане на светлинния профил.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Яркост</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Премахване на избора за всички зони</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Ефекти</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Неуспешно експортиране на профила</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Неуспешно експортиране на профила</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Неуспешно импортиране на профила</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Неуспешно импортиране на профила</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Няма добавени ефекти.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Възстановяване на настройките по подразбиране</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Избери всички зони</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Промени подредбата на клавиатурата</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Посока</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Цвят</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Цветове</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Посока</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Ефект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Този ефект ще бъде приложен към цялата клавиатура и ще замени всички останали ефекти.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Скорост</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Добави ефект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Редактирай ефект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Нагласяне на профила на подсветката.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Профил на подсветката на клавиатурата</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Всички клавиши</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} зони</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Изгрев</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Залез</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Време</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Позволи превключване между вградена и допълнителна видеокарта.\nИзисква рестартиране.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Промяна в Хибридния режим изисква рестартиране. Желаете ли да рестартирате сега?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Необходимо е рестартиране</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Хибриден режим</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Деактивира тъчпада.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Заключен тъчпад</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Деактивира тъчпада.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Заключен тъчпад</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Опитайте отново</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Без име</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Може да изберете да продължите на собствен риск, но имайте предвид, че някои функции може да не бъдат налични и/или да не работят както трябва.\n\nРегистирането ще бъде активирано автоматично ако изберете да продължите.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Вижте страницата на проекта в GitHub за повече информация.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Изберете Лог папка</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Вид на машината</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit все още не е тестван на вашето устройство.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Модел</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Неподдържано устройство</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Доставчик</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Актуализация</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Налична е актуализация</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Какво е ново?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Нагласяне на яркостта на подсветката.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка на клавиатурата</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Може да промените яркостта на подсветката с клавишната комбинация Fn+Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка на клавиатурата</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Работи само на вградената клавиатура.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Заключен клавиш Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Да</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Микрофон</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Микрофонът ще бъде заглушен, ако настройката не е активирана.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Микрофон</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Микрофонът ще бъде заглушен, ако настройката не е активирана.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Разделителна способност</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Променете разделителната способност на вградения дисплей.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Разделителна способност</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Променете разделителната способност на вградения дисплей.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>Точки на инч (DPI)</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Променете мащаба на вградения дисплей.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Точки на инч (DPI)</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Променете мащаба на вградения дисплей.\n\nВНИМАНИЕ: Това действие може да не бъде изпълнено правилно, ако вграденият дисплей е изключен.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Екран</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка на клавиатурата</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Може да включите или изключите подсветката с клавишната комбинация Fn+Space.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка на клавиатурата</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Включете или изключете подсветката.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Не бяха намерени съответстващи изтегляния</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Покажи само актуализациите</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Персонализирайте информационното табло</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Зареди</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Създайте група</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Име</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>В зависимост от състоянието и настройките на Вашето устройство, някои функции може да не бъдат показани на информационното табло.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Персонализиране</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Изключи екраните</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Изключва наличните екрани.\nТе ще бъдат събудени ако мръднете мишката или натиснете клавиш от клавиатурата.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Изключи</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Изключи екраните</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изключи всички налични екрани.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Промени името на групата</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Име</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Включи Legion логото</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Изключи Legion логото</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Включи подсветката на портовете</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Изключи подсветката на портовете</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Необходимо е рестартиране</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Необходимо е изключване</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Препоръчва се рестартиране</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Запиши и затвори</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Предварително зададен персонализиран режим</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Активирай предварително зададения персонализиран режим.\nТази настройка ще бъде приложена само когато персонализираният режим е активиран.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Име на предварително зададената настройка</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Име</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Активна предварително зададена настройка</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Папки, използвани от приложението</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Данни</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Папка за временни файлове</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Една и съща яркост на дисплея</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Когато е активирано, една и съща настройка на яркостта ще бъде приложена за всички планове за захранване на Windows.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Актуализация {0} е налична!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Лимит на пиковата мощност</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Лимит на мощността за APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Непрекъснатата консумация на енергия, която може да достигната от процесора.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Пиковата консумация на енергия, която може да достигната от процесора за кратък период от време.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Максималната мигновенна консумация на енергия, която може да достигната от процесора.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Максималната консумация на енергия, която може да бъде достигната от процесора, когато както процесора, така и видеокартата са използвани напълно.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Пиковата консумация на енергия, която може да достигната от процесора с кратко забавяне.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Максималната температура, която може да бъде достигната от процесора, преди честотата и мощността да бъдат намалени.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Допълнителната максимална мощ, която може да бъде разпределена към видеокартата, в зависимост от консумацията на енергия от процесора.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Допълнителното количество мощ, която може да бъде разпределена към видеокартата върху базовото потребление.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Максималната температура, която може да бъде достигната от видеокартата, преди да бъдат намалени честотата и мощността ѝ.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>По подразбиране</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Продължителност на краткосрочното ограничение на мощността</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Количеството време, през което е позволено на процесора за увеличи и използва краткосрочния лимит на мощността. Когато T изтече се използва дългосрочният лимит на мощността.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Цел за общата мощност на процесора при включено зарядно</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Кога процесорът започва динамично да определя консумацията на мощ за видеокартата.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Съдай</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Добави стъпка</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Създай Действие</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Режим на захранване</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Предварително зададане настройка</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Допълнителна видеокарта</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Състояние на захранването</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Батерия</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Режим</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Скорост на разреждане</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Налична е актуализация!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Изберете икона</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Променете иконата</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Нивото на батерията е ниско</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Конфигурирай</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Открит е S0 Lower Power Model</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows докладва, че това устройство поддържа модерен режим на готовност. Използвайки план на захранване различен от Балансиран може да доведе до неочаквано поведение.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Изберете план на захранване, когато режимът на работа бъде променен.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Захранване</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Настройки на Плана на захранване в контролния панел</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Изключена</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Импортирай профил за подсветката на клавиатурата</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Импортирай и приложи настройките за подсветка към настоящия профил.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Път към файла</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>След {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Няколко условия...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Настройки на овърклока на видео картата</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Отместване на честотата на ядрата</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Отместване на честотата на паметта</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Овърклок на видео картата</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Увеличете производителността чрез овърклок на допълнителната видео карта.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Овърклок на видео картата</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Увеличете производителността чрез овърклок на допълнителната видео карта.\n\nВНИМАНИЕ: Това действие няма да бъде изпълнено правилно, ако Вашето устройство не разполага с допълнителна видео карта.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка на портовете</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Изключване на подсветката на портовете в задната част на лаптопа.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка на портовете</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изключване на подсветката на портовете в задната част на лаптопа.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка на логото на панела</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Включване или изкключване на подсветката на капака на лаптопа.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка на логото на панела</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изключете подсветката на капака на лаптопа.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Максимално: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>Процесор</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Натовараност</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Тактова честота на ядрото</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Температура</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Перка</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>Допълнителна видеокарта</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Тактова честота на паметта</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Честота на опресняване</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Моментално стартиране</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Лаптопът да бъде включен, когато зарядното е свързано.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Моментално стартиране</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Лаптопът да бъде включен, когато зарядното е свързано.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Промяната в режима на захранване не е възможна</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>{0} режим на захранване не е наличен без свързано зарядно.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Сензори</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Промяната в режима на работа на допълнителната видеокартата беше неуспешна</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Опитайте да промените режима отново след няколко секунди, ако не виждате очакваните резултати.\nАко допълнителната видео карта не реагира изобщо, моля рестартирайте устройството.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>Допълнителната видеокарта е използвана в момента</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>Допълнителната видеокарта ще бъде деактивирана автоматично, когато не се използва.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>Допълнителната видеокарта е използвана в момента или лаптоптът не е черпи енергия от батерията</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>Допълнителната видеокарта ще бъде деактивирана, когато не се използва или лаптопът черпи енергия от батерията.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Настройките, създадени от потребителя, няма да бъдат приложени правилно, когато Lenovo Vantage или неговите услуги работят.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Настройките, създадени от потребителя, няма да бъдат приложени правилно, когато LegionZone или неговите услуги работят.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>Допълнителна видеокарта активирана</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>Допълнителна видео карта деактивирана</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Режим на работа на видео картата</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изберете режим на работа за видео картата в зависимост от натоварването и захранването на компютъра.\nПромяна в режима може да изисква рестартиране.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Хибриден режим</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Позволи превключване между вградена и допълнителна видеокарта.\nИзисква рестартиране.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Продължителност</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Актуализации</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Динамичен бууст на видео картата от процесора</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Лого при стартиране</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Изберете изображение, което ще бъде показано при стартиране на системата, вместо логото по подразбиране на Lenovo.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Лого при стартиране</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Зададено е логото по подразбиране</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Зададено е потребителско лого</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Състояние</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Връщане към подразбиране</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Персонализиране</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Действия</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Съдържание на известието</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Покажи известие</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Предварително зададена настройка</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Умно заключване на Fn бутона</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Заключването на бутона Fn ще бъде изключено временно, когато някой от бутоните Alt, Ctrl или Shift е натиснат.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Изключено</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Потребителското лого трябва да бъде с големина от точно {0} пиксела.\nПоддържаните формати са: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Зареждане на батерията през нощта</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Когато тази функция е активирана, устройството ще се зарежда до 80%, когато е включено през нощта, и до 100% преди да го използвате на сутринта.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Зареждане на батерията през нощта</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Когато тази функция е активирана, устройството ще се зарежда до 80%, когато е включено през нощта, и до 100% преди да го използвате на сутринта.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Избрахте изображение с невалидна големина.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Избрахте изображение с невалиден формат.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Не може да се монтира EFI дял.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Не може да се зададе привилегия UEFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Няма достатъчно свободно място в EFI дяла.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Потребителското лого не беше зададено успешно: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Потребителското лого не беше зададено успешно: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Зададено е логото по подразбиране.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Зададено е потребителско лого.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Име на мрежата (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Копиране на текущото име на мрежата</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Оставете празно за която и да е Wi-Fi мрежа.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Споделете скоростта на вентилатора, температурата на батерията и др. с HWiNFO64. Може да се наложи да рестартирате HWiNFO64 при промяна на тази настройка.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Интеграции</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Настройки</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Информация</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Папка за сваляне</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Отвори папката за сваляне</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Сваляне</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Отвори README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Предварително зададена настройка</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Опресни</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Изтрий</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Приод (минути)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Нулира \"На батерия от\" брояча в раздела за батерията, когато системата бъде рестартирана.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Нулиране на \"На батерия от\" брояча при стартиране</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Изключване на Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Включване на Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Тихо стартиране</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Изчакване до приключване на изпълнение</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Изчакване на програмата или скрипта да приключат изпълнението си</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.bs.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Verzija</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Najnovije izdanje na GitHub-u</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Linkovi</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Web stranica projekta na GitHub-u</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>O programu</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Prevode je obezbedila zajednica.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Verzija</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Dodaj novu</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Primijeni</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Primijeni i zatvori</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit mora biti pokrenut da bi automatske akcije radile.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Omogući</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Nema definisanih akcija. Kliknite na \"Dodaj novu\" da bi kreirali novu akciju.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Akcije</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Naziv...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Dodaj novu</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Nema definisanih brzih akcija. Kliknite na \"Dodaj novu\" da bi kreirali novu brzu akciju.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Brze akcije su dostupne u meniju desnog klika ikone u traci.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Brze akcije</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Naziv...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Preimenuj</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Sve promjene su vraćene!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Vraćeno</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Promjene su uspješno spašene!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Sačuvano</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatizacija</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Dodaj korak</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Konfiguriši</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Ekskluzivno</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Nemoj izvršavati dalje radnje kada se ova akcija pokrene.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Pokreni sad</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Završeno sa greškama.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Pokreni sad</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Uspješno završeno!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Pokreni sad</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Pokretanje...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} korak</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} koraka</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Sa izlaskom sunca</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Sa zalaskom sunca</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Režim rada</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Odaberite način punjenja baterije.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Režim rada baterije</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Odaberite način punjenja baterije.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Režim rada baterije</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Priključen, punjenje...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Priključen, ne puni se</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Trenutna temperatura baterije.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura baterije</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Trenutni kapacitet baterije.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Trenutni kapacitet</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Broj ciklusa punjenja/pražnjenja.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Broj ciklusa</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Kapacitet baterije kako je dizajnirano.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Dizajnirani kapacitet</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Brzina kojom se baterija puni (+) ili prazni (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Brzina pražnjenja</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Predviđeno preostalo vrijeme: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Procjena preostalog vremena...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Datum prvog korištenja</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Kada je baterija prvi put korištena.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Kapacitet baterije kada je potpuno napunjena.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Puni kapacitet punjenja</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Spojen punjač male snage</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Kada je baterija proizvedena.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Datum proizvodnje</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Vrijeme od posljednjeg povezivanja laptopa na punjač.\nOvo vrijeme možda neće biti tačno ako je laptop bio napunjen dok je spavao ili isključen.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Na bateriji od</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Baterija</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Otkaži</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Zatvori</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Promjena na {0} zahtijeva ponovno pokretanje. Da li želite restartovati sada?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Potrebno ponovno pokretanje</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Brze akcije</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Nastavi</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Kopiraj sve</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Ostalo</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Obriši</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Verzija BIOS-a</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" kopirano u međuspremnik.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Kopirano!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Uređaj</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Support</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Tip uređaja</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Proizvođač</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Serijski broj</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>O vašem uređaju</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Datum završetka</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Datum početka</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garancija</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Aktivna</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Deaktiviraj</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Neaktivna</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Monitor je spojen na nVidia grafičku.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Nema procesa</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Nepoznato</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Procesi</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Ponovo pokreni grafičku</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Diskretna grafička</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Doniraj</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Izađi</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Hibridno-Auto režim</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hibridni režim</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Napredno</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Nije moguće primijeniti postavke</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Nije moguće učitati postavku.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Maksimalna brzina ventilatora</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventilatori</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Ovaj uređaj nije kompatibilan sa Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Nije pronađena kompatibilna tastatura</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Pozadinsko osvjetljenje tastature</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>O programu</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Akcije</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Baterija</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Kontrolna tabla</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Doniraj</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Tastatura</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Preuzimanja</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Postavke</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Dostupno ažuriranje!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Ažuriranje na {0} je dostupno!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Pomjeri dolje</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Pomjeri gore</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Ne prikazuj obavještenja</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Otvori</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} preuzeto!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Preuzimanje završeno</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Nešto je pošlo po zlu</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Server je vratio kod 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Čini se da je fajl nestao</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Provjerite da li je vaša internetska veza uspostavljena i radi.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Nešto je pošlo po zlu</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Ovaj paket je star više od godinu.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Verzija</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Ispod je lista softverskih paketa koji su označeni kao kompatibilni sa vašim laptopom.\nUvijek provjerite da li instalirate ispravne pakete.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Provjerite da li su tip uređaja i OS ispravno postavljeni.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Nešto je pošlo po zlu</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Promjena sortiranja, filtriranje rezultata, skrivanje paketa ili osvježavanje liste će zaustaviti preuzimanje. Želite li nastaviti?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Preuzimanje u toku</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtriraj...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Tip uređaja</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Operativni sistem</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primarno (preporučeno)</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Sekundarno</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Kategorija</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Datum</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Naziv</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Izvor</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Preuzimanja</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Zalijepi</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Režim rada</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Postavke</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Režim rada</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Prilagodite pozadinsko osvjetljenje tastature.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Pozadinsko osvjetljenje tastature</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Svjetlost</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Šablon 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Šablon 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Šablon 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Ugašeno</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zona 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zona 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zona 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zona 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efekat</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Brzina</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Osvježi</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Preimenuj</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Ponovo ću pokrenut kasnije</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Pokreni ponovo</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Vrati</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumenti</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>ExecutablePath</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Pokreni</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Sačuvaj</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Promijeni akcentnu boju aplikacije.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Akcentna boja</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Start minimized to tray when you log in to Windows.\nStartup is delayed by 30 seconds for compatibility reasons.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone možda nije ispravno onemogućeno</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nije moguće onemogućiti Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Onemogući Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys možda nisu ispravno onemogućeni</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nije moguće onemogućiti Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Onemogući Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone možda nije ispravno omogućeno</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nije moguće omogućiti Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys možda nisu ispravno omogućeni</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nije moguće omogućiti Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Izaberi jezik.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Jezik</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimiziraj pri zatvaranju</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Planovi napajanja</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Postavite svijetlu temu, tamnu tamu ili pratite sistemske postavke.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Teme</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Postavke</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Izlazak sunca</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Zalazak sunca</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Vrijeme</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Omogućava promjenu između integrisane i diskretne grafičke.\nZahtijeva ponovno pokretanje.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Promjena Hibridnog režima zahtijeva ponovno pokretanje. Da li želite restartovati sada?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Potrebno ponovno pokretanje</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Hibridni režim</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Onemogući touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Zaključavanje touchpad-a</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Onemogući touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Zaključavanje touchpad-a</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Pokušaj ponovo</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Možete izabrati da nastavite na svoju odgovornost, ali imajte na umu da neke od funkcija neće biti dostupne i/ili neće ispravno raditi.\n\nLogiranje će biti automatski omogućeno, ukoliko izaberete da nastavite.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Provjerite stranicu našeg projekta na GitHub-u za više informacija.</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Tip uređaja</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit nije bio testiran sa vašim uređajem.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Uređaj nije podržan</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Prodavač</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Ažuriraj</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Dostupno ažuriranje</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Šta je novo?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Prilagodite pozadinsko osvjetljenje tastature.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Pozadinsko osvjetljenje tastature</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Možete promijeniti svjetlost sa Fn + Space</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Radi samo na ugrađenoj tastaturi.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Zaključavanje Windows dugmeta</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Dodaj korak</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Isključeno</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.ca.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Aplicar &amp; tancar</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.cs.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Poslední verze na GitHubu</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Odkazy</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Stránka projektu na GitHubu</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>O aplikaci</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Překlady od komunity.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Verze</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Přidat</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Přidat nový</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Nabíjet zařízení USB, když je počitač vypnut, nebo v režimu spánku/hibernace.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Vždy napájené USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Nabíjet zařízení USB, když je počitač vypnut, nebo v režimu spánku/hibernace.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Vždy napájené USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Použít</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Použít a zavřít</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit musí být zapnut, aby fungovaly automatické akce.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Povolit</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Nejsou definovány žádné akce. Kliknutím na „Přidat novou“ vytvoříte novou akci.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Pokud je tato funkce povolena, akce se spustí automaticky. Kdykoli se stav změní, všechny akce budou vyhodnoceny shora dolů.\nSpustí se pouze akce, které odpovídají aktuálnímu stavu.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Akce</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Jméno...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Přidat nový</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Nejsou definovány žádné rychlé akce. Kliknutím na „Přidat novou“ vytvoř novou rychlou akci.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Rychlé akce jsou dostupné v nabídce po kliknutí pravým tlačítkem na ikonu na hlavním panelu.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Rychlé akce</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Jméno...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Přejmenovat</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Všechny změny vraceny!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Vráceno zpět</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Změny byly úspěšně uloženy!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Uloženo</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatizace</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Přidat krok</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Nastavit</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exkluzivní</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Neprovádět další akce, když tato akce běží.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Spustit nyní</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Dokončeno s chybami.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Spustit nyní</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Úspěšně dokončeno!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Spustit nyní</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Spuštěn...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} krok</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} kroků</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Aplikace</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Při východu slunce</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Při západu slunce</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>V {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Nepojmenovaný</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Automaticky detekuje, kdy jsou spuštěny určité hry, a vyladí výkon CPU a GPU. Mohou se zvýšit teploty a hluk ventilátoru.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Povolit AI</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Nastavení vyváženého módu</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Vyber, jak se bude baterie nabíjet.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Režim baterie</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Vyber, jak se bude baterie nabíjet.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Režim baterie</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Připojen, nabíjení...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Připojen, nenabíjí</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Aktualní teplota baterie.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Teplota baterie</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Aktuální kapacita baterie.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Aktuální kapacita</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Počet cyklů nabití/vybití.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Počet cyklů</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Konstrukční kapacita baterie.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Konstrukční kapacita</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Rychlost nabíjení (+), nebo vybíjení (-) baterie.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Rychlost vybíjení</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Odhadovaný zbývající čas: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Odhaduji čas...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Datum prvního použití</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Kdy byla baterie použita poprvé.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Kapacita baterie, když je plně nabitá.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Plně nabitá kapacita</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Připojena nabíječka s nízkým výkonem</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Kdy byla baterie vyrobena.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Datum výroby</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Čas od posledního připojení notebooku k nabíječce.\nTento čas nemusí být přesný, pokud byl notebook nabíjen ve spánku nebo ve vypnutém stavu.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Na baterii od</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Baterie</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Zrušit</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Zavřít</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Modrá</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Zelená</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Červená</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Vyber provozní režim GPU na základě využití počítače a podmínek napájení.\nPřepínání režimů může vyžadovat restart.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Změna na {0} vyžaduje restart. Chceš restartovat teď?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Je vyžadován restart</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Pracovní režim GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Rychlé akce</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Pokračovat</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Kopírovat vše</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafika</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Jiné</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Napájení</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Domů</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Deaktivovat dedikované GPU, když je zbytečně aktivní.\n\nVAROVÁNÍ: Tato akce neproběhne správně, pokud je displej notebooku vypnutý, nebo není aktivní hybridní režim.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Deaktivovat GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Přidat zpoždění před spuštěním dalšího kroku.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Zpoždění</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Smazat</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS verze</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Text zkopírován do schránky.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" zkopírováno do schránky.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Zkopírováno!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Zařízení</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Podpora</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Typ zařízení</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Výrobce</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Sériové číslo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Informace o zařízení</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Datum ukončení</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Datum začátku</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Záruka</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Aktivní</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Deaktivovat</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Neaktivní</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Ukončit aplikace</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Deaktivovat dedikované GPU, když je zbytečně aktivní.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Monitor je připojen k nVidia GPU.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Žádné procesy</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Stav výkonu</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Neznámý</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Procesy</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Restartovat GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Dedikované GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Změnit jas displeje notebooku.\nRežimy napájení mění jas na některých zařízeních. Ujisti se, že tento krok dáš jako poslední, pokud něco nefunguje správně.\n\nVAROVÁNÍ: Tato akce neproběhne správně, pokud je displej notebooku vypnutý.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Jas displeje</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Přispět pomocí</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Vývoj a údržba Lenovo Legion Toolkit zabere spoustu času. Pokud rád používáš tento software, můžeš podpořit jeho budoucnost darováním částky dle vlastního výběru.\n\nKlikněte na logo PayPal níže nebo naskenujte QR kód a přispějte přes PayPal.\n\nDíky předem!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Přispět</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Editovat</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Zaškrtni obnovovací frekvence, které chceš používat při použití zkratky Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Ujisti se, že je zapnutý displej notebooku. Lenovo Legion Toolkit nemůže načíst obnovovací frekvence pro displej, který není zapnutý.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Nebyly nalezeny žádné obnovovací frekvence</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Vyloučit obnovovací frekvence</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Konec</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Exportovat</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Při napájení z baterie používejte pouze integrovaný GPU a při připojení napájecího adaptéru integrovaný i samostatný GPU. Když je připojen nestandardní adaptér, systém se přepne do režimu Hybrid-iGPU Only.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Hybrid-Auto mód</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Přepnutí do a z tohoto režimu vyžaduje restart.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Používat pouze dedikovaný GPU. Tento režim poskytuje nejlepší grafický výkon, ale zvyšuje spotřebu energie.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>dGPU mód</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Integrovaný i dedikovaný GPU jsou povoleny. Systém mezi nimi bude automaticky přepínat podle svých potřeb.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hybridní mód</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Tento režim se projeví pouze tehdy, když dedikovaný GPU nefunguje.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Používat pouze integrovaný GPU. Tento režim minimalizuje spotřebu energie a hluk.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Pouze Hybrid-iGPU mód</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>O pracovních režimech GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU senzor</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Otáčky ventilátoru</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Při otevření víka zapnout notebook.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Zapnout otočením</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Při otevření víka zapnout notebook.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Zapnout otočením</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Používat sekundární funkce kláves F1-F12 bez držení klávesy Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Používat sekundární funkce kláves F1-F12 bez držení klávesy Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Neměň níže uvedené možnosti, pokud opravdu nevíš, co děláš.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Pokročilé</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Dlouhodobý limit výkonu (křížové zatížení)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Dlouhodobý limit výkonu</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Krátkodobý limit výkonu</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Teplotní limit CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Nastavení nelze použít</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Nastavení se nepodařilo načíst.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Otáčky ventilátoru nejsou striktně určeny jedním teplotním čidlem. Zvýší nebo sníží rychlost podle nejvyššího snímače mezi teplotou CPU, GPU a chladiče. Přesné hodnoty se zobrazí, když najedeš myší na každý krok.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Křivka ventilátorů</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>VAROVÁNÍ!\nPři dlouhodobém používání této možnosti se ventilátory zhorší a zkrátí se jejich životnost.\nVážně, buď opatrný s touto možností!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Maximální rychlost ventilátorů</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventilátory</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Nastavitelné TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamický Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Teplotní limit GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Nastavení vlastního režimu</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Povolit vysoký dynamický rozsah (HDR) na displeji notebooku.\n\nVAROVÁNÍ: Tato akce neproběhne správně, pokud je interní displej vypnutý.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Povolit vysoký dynamický rozsah (HDR) na displeji notebooku.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Použití HDR je blokované v nastavení systému Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importovat</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Toto zařízení není kompatibilní s Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Nebyly nalezeny žádné kompatibilní klávesnice</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Podsvícení klávesnice</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>O aplikaci</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Akce</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Baterie</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Přehled</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Přispět</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Klávesnice</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Balíčky</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Nastavení</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Aktualizace k dispozici!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Aktualizace {0} je k dispozici!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Posunout dolů</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Posunout nahoru</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Ne</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>AC nabíječka připojena</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>AC nabíječka připojena (Nízký výkon)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>AC nabíječka odpojena</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Kamera vypnutá</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Kamera zapnutá</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock vypnut</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock zapnut</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock vypnut</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock zapnut</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Mikrofon vypnut</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Mikrofon zapnut</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock vypnut</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock zapnut</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Podsvícení {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Jas {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad vypnut</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad zapnut</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Podsvícení {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>AC nabíječka</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Kamera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock a Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Nezobrazovat notifikace</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Podsvícení klávesnice</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Pozice</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Obnovovací frekvence</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Chytré tlačitko</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Notifikace</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Zámek touchpadu</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Otevřít</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zlepšit dobu odezvy displeje notebooku.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Zlepšit dobu odezvy displeje notebooku.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} staženo!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Stahování dokončeno</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Něco se pokazilo</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Server vrátil kód 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Zdá se, že soubor je pryč</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Zkontroluj, zda je tvoje připojení k internetu v provozu.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Něco se pokazilo</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Aktualizace k dispozici!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Tento balíček je více než rok starý.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Verze</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Níže je uveden seznam softwarových balíčků, které jsou označeny jako kompatibilní s tvým notebookem.\nVždy se ujisti, že instaluješ správné balíčky.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Zkontroluj, zda je správně nastavený Typ a OS notebooku.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Něco se pokazilo</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Změna řazení, filtrování výsledků, skrytí balíčků, nebo obnovení seznamu zastaví stahování. Chceš pokračovat?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Probíhá stahování</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtr...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Typ zařízení</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Operační systém</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primární (Doporučený)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Stejný jako od Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Sekundární</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Stejný jako od stránky podpory Lenovo</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Kategorie</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Datum</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Jméno</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Zdroj</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Stažené</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Vložit</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Vyber režim výkonu.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Vyber režim výkonu.\nRežim můžeš přepínat pomocí Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Nastavení</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Vybraný režim výkonu nemusí fungovat správně bez připojené nabíječky.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Upravit předvolbu podsvícení klávesnice.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podsvícení klávesnice</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Jas</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Předvolba 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Předvolba 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Předvolba 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Vypnut</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zóna 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zóna 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zóna 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zóna 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efekt</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Rychlost</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Přečti mě</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Obnovit</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Změnit obnovovací frekvenci displeje notebooku.\n\nVAROVÁNÍ: Tato akce neproběhne správně, pokud je interní displej vypnutý.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Obnovovací frekvence</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Změnit obnovovací frekvenci displeje notebooku.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Obnovovací frekvence</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Přejmenovat</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Restartovat později</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Restartovat nyní</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Vrátit zpět</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Parametry</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Executable Path</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Spusť skript nebo program.\nNejprve se ujisti, že tvůj skript běží správně.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Spustit</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Uložit</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Ukládání...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Zvol jednu nebo více rychlých akcí, které chceš procházet</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Nejsou nastavené žádné rychlé akce.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Ukázat aplikaci</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Změnit motiv a barvy aplikace.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Barva aplikace</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Zapnout minimalizované v liště, když se přihlásiš do windowsu.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Automatické spuštění</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone možná nebyla správně deaktivována</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zone se nepodařilo deaktivovat</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Zakázat Legion Zone a její službu, aniž bys ji odinstaloval.\nPo změně této možnosti se doporučuje restartovat.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Zakázat Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys možná nebyla správně deaktivována</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys se nepodařilo deaktivovat</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Zakázat Lenovo Hotkeys a jejich službu, aniž bys ji odinstaloval.\nPokud je zakázáno, bude tato aplikace zpracovávat zkratky Fn\nPo změně této možnosti se doporučuje restartovat.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Zakázat Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone možná nebyla správně aktivována</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zone se nepodařilo povolit</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys možná nebyla správně aktivována</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys se nepodařilo aktivovat</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Můžeš vyloučit obnovovací frekvence, aby byla zkratka Fn+R užitečnější.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Vyloučit obnovovací frekvence</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Vybrat jazyk.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Jazyk</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Vždy minimalizovat na lištu. Zavřít kliknutím pravým tlačítkem na ikonu na hlavním panelu.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimalizovat při zavření</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Nastavení notifikací z aplikace.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Notifikace</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Plány napájení</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Přiřadit rychlou akci při dvojitým stisku Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Sekundární akce chytrého tlačítka</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Přiřadit rychlou akci při stisku Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Akce chytrého tlačítka</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Nastav světlý motiv, tmavý motiv, nebo řízení systémem.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Motiv</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Nastavení</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Upravit jas podsvícení klávesnice.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Vypnut</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Jas podsvícení klávesnice</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Přidat efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Použití profilu se nezdařilo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Profil osvětlení nelze použít.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Jas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Odznačit všechny zóny</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Efekty</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profil se nepodařilo exportovat</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nelze exportovat profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profil se nepodařilo importovat</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nelze importovat profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Žádné efekty přidány.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Obnovit výchozí</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Označit všechny zóny</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Přepnout rozložení klávesnice</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Směr</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Barva</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Barvy</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Směr</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Tento efekt se aplikuje na celou klávesnici a nahradí všechny ostatní.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Rychlost</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Přidat efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Upravit efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Upravit profil podsvícení klávesnice.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Profil podsvícení klávesnice</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Všechny tlačítka</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zón</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Východ slunce</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Západ slunce</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Čas</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Umožnit přepínání mezi integrovaným a dedikovaným GPU.\nVyžaduje restart.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Změna Hybridního módu vyžaduje restart. Chceš restartovat nyní?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Je vyžadován restart</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Hybridní mód</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Deaktivovat touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Zámek touchpadu</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Deaktivovat touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Zámek touchpadu</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Zkusit znovu</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Nepojmenovaný</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Můžeš se rozhodnout pokračovat na vlastní riziko, ale měj na paměti, že některé funkce nemusí být dostupné a/nebo nemusí fungovat správně.\n\nPokud se rozhodneš pokračovat, protokolování bude automaticky povoleno.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Další informace najdeš na stránce projektu na GitHubu.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Složka s logy</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Typ zařízení</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit nebyl testován na vašem zařízení.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Nepodporované zařízení</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Dodavatel</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Aktualizovat</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>K dispozici je aktualizace</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Co je nového?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Upravit jas podsvícení klávesnice.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podsvícení klávesnice</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Můžeš nastavit podsvícení pomocí Fn+Mezerníku</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podsvícení klávesnice</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Funguje pouze na klávesnici notebooku.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Zámek tlačítka Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Ano</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Zapni, nebo vypni mikrofon.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zapni, nebo vypni mikrofon.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Rozlišení</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Změnit rozlišení displeje notebooku.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rozlišení</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Změnit rozlišení displeje notebooku.\n\nVAROVÁNÍ: Tato akce neproběhne správně, pokud je interní displej vypnutý.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Změnit měřítko displeje notebooku.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Změnit měřítko displeje notebooku.\n\nVAROVÁNÍ: Tato akce neproběhne správně, pokud je interní displej vypnutý.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Displej</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podsvícení klávesnice</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Můžeš přepínat podsvícení pomocí Fn+Mezerník.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podsvícení klávesnice</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Přepnout podsvícení.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Nebyl nalezen žadný odpovídající obsah</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Zobrazit pouze aktualizace</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Přizpůsobit přehled</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Resetovat</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Vytvořit skupinu</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Název</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Některé funkce se nemusí objevit na přehledu kvůli stavu a konfiguraci tvého zařízení.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Přizpůsobit</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Vypnout monitory</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Vypnout všechny dostupné monitory.\nPohybem myši, nebo stiskem klávesnice se znovu zapnou.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Vypnout</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Vypnout monitory</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Vypnout všechny dostupné monitory.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Upravit název skupiny</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Název</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Logo Legion zapnuto</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Logo Legion vypnuto</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Podsvícení portů zapnuto</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Podsvícení portů vypnuto</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Vyžadován restart</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Vyžadováno vypnutí</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Doporučený restart</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Uložit a zavřít</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Předvolba vlastního režimu</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aktivovat předvolbu vlastního režimu.\nToto nastavení se aplikuje jen když je zapnutý vlastní režim.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Název předvolby</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Název</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Aktivní předvolba</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Složka aplikací</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Data</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Dočasné</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Jednotný jas monitorů</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Když je tato možnost zapnutá, jas se změní na všech plánech napájení.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Aktualizace {0} k dispozici!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Limit špičkového výkonu</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Limit výkonu APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Konstantní spotřeba CPU, která může být dosažena.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Špičková spotřeba CPU, která může být dosažena po krátkou dobu.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Maximální okamžitá spotřeba CPU, která může být dosažena.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Maximální spotřeba CPU, když se plně využívá CPU a GPU současně.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Špičková spotřeba CPU, po krátkou dobu s menší odezvou.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Maximalní teplota CPU předtím, než se limituje frekvence a spotřeba.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Dodatečná spotřeba, která může být předána GPU v závislosti na využití CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Dodatečná spotřeba, která může být předána GPU nad rámec zakladní spotřeby.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Maximalní teplota GPU předtím, než se limituje frekvence a spotřeba.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Výchozí</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Doba krátkodobého limitu výkonu</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Doba, po kterou může CPU zvýšit a používat krátkodobý limit výkonu. Když čas vyprší, použije se dlouhodobý limit výkonu.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Cíl celkového výkonu procesoru v AC</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Bod, ve kterém CPU spouští dynamickou úpravu spotřeby energie pro GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Vytvořit</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Přidat krok</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Vytvořit akci</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Předvolba</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Dedikované GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Stav napájení</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Baterie</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Režim</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Rychlost vybíjení</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Aktualizace k dispozici!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Zvol ikonu</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Změnit ikonu</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Baterie je slabá</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Nastavit</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Byl zjištěn model S0 s nižším výkonem</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Systém Windows hlásí, že toto zařízení podporuje moderní úsporný režim. Použití jiných plán napájení než Rovnováha může způsobit neočekávané chování.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Vyber plány napájení, které se změní, když se změní režim výkonu.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Napájení</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Nastavení plánu napájení v ovládacím panelu windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Vypnut</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.de.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Neuste Version auf GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Links</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Projektseite auf GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Drittanbieterbibliotheken</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Über</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Deutsche Übersetzung von cureter &amp; Sko-Induktor &amp; Running_Dead89.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Hinzufügen</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Neu hinzufügen</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Lade USB Geräte, wenn der Computer ausgeschaltet ist oder sich im Schlaf- oder Ruhezustand befindet.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Always on USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Lade USB Geräte, wenn der Computer ausgeschaltet ist oder sich im Schlaf- oder Ruhezustand befindet.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Always on USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Anwenden</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Anwenden &amp; Schließen</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit muss ausgeführt werden, damit die automatischen Aktionen funktionieren.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Einschalten</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Keine Aktionen definiert. Klicke auf \"Neu hinzufügen\", um eine neue Aktion zu erstellen.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Wenn eingeschaltet, werden diese Aktionen automatisch ausgeführt. Wenn sich der Zustand ändert, werden alle Aktionen von oben nach unten ausgewertet. Nur Aktionen, die dem aktuellen Zustand entsprechen, werden ausgeführt.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Aktionen</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Name...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Neu hinzufügen</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Keine Kurzbefehle definiert. Klicke auf \"Neu hinzufügen\", um einen neuen Kurzbefehl zu erstellen.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Über das Rechtsklick-Menü des Tray-Symbols sind Kurzbefehle verfügbar.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Kurzbefehle</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Name...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Umbenennen</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Alle Änderungen wurden zurückgesetzt!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Zurückgesetzt</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Änderungen erfolgreich gespeichert!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Gespeichert</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatisierung</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Schritt hinzufügen</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Konfigurieren</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exklusiv</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Führe keine weiteren Aktionen aus, wenn diese Aktion ausgeführt wird.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Jetzt ausführen</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Mit Fehlern abgeschlossen.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Jetzt ausführen</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Erfolgreich abgeschlossen!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Jetzt ausführen</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Läuft...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} Schritt</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} Schritte</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Anwendungen</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Bei Sonnenaufgang</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Bei Sonnenuntergang</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>Um {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Leistungsmodus</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Ohne Titel</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Erkennt automatisch, wenn bestimmte Spiele ausgeführt werden und optimiert CPU- und GPU-Leistung. Temperaturen und Lüftergeräusche können steigen.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Aktiviere AI Engine</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Balance Mode Einstellungen</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wähle, wie der Akku geladen wird.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Akku-Modus</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Wähle, wie der Akku geladen wird.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Akku-Modus</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Angeschlossen, ladend...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Angeschlossen, nicht ladend</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Aktuelle Temperatur des Akkus.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Akku Temperatur</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Aktuelle Akkukapazität.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Aktuelle Kapazität</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Anzahl der Lade-/Entladezyklen.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Anzahl der Zyklen</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Akkukapazität wie vorgesehen.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Vorgesehene Kapazität</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Geschwindigkeit, mit welcher der Akku geladen (+) bzw. entladen (-) wird.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Entladungsrate</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Voraussichtlich verbleibende Zeit: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Schätzung der Zeit...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Datum der ersten Verwendung</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Wann der Akku zum ersten Mal verwendet wurde.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Akkukapazität bei voller Ladung.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Volle Ladekapazität</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Ladegerät mit niedriger Wattzahl angeschlossen</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Wann der Akku hergestellt wurde.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Herstellungsdatum</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Zeit seit dem letzten Anschluss des Laptops an das Stromnetz.\nDiese Zeit ist möglicherweise nicht genau, wenn der Laptop im Schlaf oder im ausgeschalteten Zustand aufgeladen wurde.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Auf Akku seit</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Akku</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Abbrechen</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Beenden</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Blau</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Grün</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Rot</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Wählen Sie den GPU-Betriebsmodus entsprechend der Nutzung und den Energiebedingungen Ihres Computers.\nEin Wechsel des Modus kann einen Neustart erfordern.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Der Wechsel zu {0} erfordert einen Neustart. Möchten Sie jetzt neu starten?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Neustart erforderlich</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>GPU Betriebsmodus</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Kurzbefehle</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Weiter</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Alles kopieren</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafik</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Anderes</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Energie</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Startseite</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Deaktiviere die diskrete GPU, wenn sie unnötigerweise aktiv ist.\n\nWARNUNG: Diese Aktion wird nicht korrekt ausgeführt, wenn das interne Display ausgeschaltet oder der Hybridmodus nicht aktiv ist.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Deaktiviere GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Füge eine Verzögerung hinzu, bevor der nächste Schritt ausgeführt wird.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Verzögerung</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Löschen</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS Version</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Text in Zwischenablage kopiert.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" in die Zwischenablage kopiert.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Kopiert!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Gerät</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Support</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Gerätetyp</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Hersteller</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Modell</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Seriennummer</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Über Ihr Gerät</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Enddatum</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Startdatum</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garantie</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Aktiv</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Deaktivieren</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Inaktiv</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Anwendungen schließen</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Deaktiviere die diskrete GPU, wenn sie unnötigerweise aktiv ist.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Ein Monitor ist an die nVidia GPU angeschlossen.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Keine Prozesse</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Leistungszustand</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Unbekannt</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Prozesse</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>GPU neu starten</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Diskrete GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ändert die Display-Helligkeit des integrierten Bildschirms.\nBei einigen Geräten ändert der Energiemodus die Helligkeit. Stellen Sie sicher, dass dieser Schritt zuletzt ausgeführt wird, wenn etwas nicht richtig funktioniert.\n\nWARNUNG: Diese Aktion wird nicht korrekt ausgeführt, wenn der interne Bildschirm ausgeschaltet ist.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bildschirmhelligkeit</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Spenden mit</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Die Entwicklung und Pflege des Lenovo Legion Toolkits ist sehr zeitaufwändig. Wenn Sie diese Software gerne nutzen, können Sie ihre Zukunft unterstützen, indem Sie einen Betrag Ihrer Wahl spenden.\n\nKlicken Sie auf das PayPal-Logo unten oder scannen Sie den QR-Code, um mit PayPal zu spenden.\n\nVielen Dank im Voraus!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Spenden</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Bearbeiten</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Deaktivieren Sie die Aktualisierungsraten, die Sie nicht verwenden möchten, wenn die Tastenkombination Fn+R verwendet wird.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Stellen Sie sicher, dass der Laptop-Bildschirm eingeschaltet ist. Das Lenovo Legion Toolkit kann keine Bildwiederholraten für ein nicht eingeschaltetes Display laden.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Keine Bildwiederholraten gefunden</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Bildwiederholraten ausschließen</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Beenden</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Exportieren</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Verwende im Akkubetrieb nur die integrierte GPU und bei angeschlossenem Netzteil sowohl die integrierte als auch die diskrete GPU. Wenn ein Nicht-Standard-Adapter angeschlossen ist, schaltet das System in den Modus \"Nur Hybrid-iGPU\".</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Hybrid-Auto-Modus</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Der Wechsel in und aus diesem Modus erfordert einen Neustart.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Benutze nur die diskrete GPU. Dieser Modus bietet die beste Grafikleistung, erhöht aber den Energieverbrauch.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>dGPU Modus</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Sowohl integrierte als auch diskrete GPU sind aktiviert. Das System schaltet je nach Bedarf automatisch zwischen ihnen um.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hybrid-Modus</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Dieser Modus ist nur wirksam, wenn die diskrete GPU nicht in Betrieb ist.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Benutze nur die integrierte GPU. Dieser Modus minimiert den Energieverbrauch und die Geräuschentwicklung.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Nur Hybrid-iGPU Modus</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Über GPU Betriebsmodi</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU Sensor</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Lüfterdrehzahl</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>U/min</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schalte den Laptop ein, wenn der Bildschirm aufgeklappt wird.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Schalte den Laptop ein, wenn der Bildschirm aufgeklappt wird.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Verwenden Sie die Sekundärfunktionen der Tasten F1-F12, ohne die Fn-Taste gedrückt zu halten.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Verwenden Sie die Sekundärfunktionen der Tasten F1-F12, ohne die Fn-Taste gedrückt zu halten.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>WARNUNG!\nEinige Laptops können niedrigere Werte akzeptieren, als sie angeben, aber seien Sie vorsichtig. Diese Option kann zu unvorhersehbarem Verhalten führen. Wenn Sie also nicht sicher sind, was Sie tun, lassen Sie diese Option auf 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Minimaler Offset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>WARNUNG!\nEinige Laptops können höhere Werte akzeptieren, als sie angeben, aber seien Sie vorsichtig. Diese Option kann zu unvorhersehbarem Verhalten führen. Wenn Sie also nicht sicher sind, was Sie tun, lassen Sie diese Option auf 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maximaler Offset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Ändern Sie die folgenden Optionen nur, wenn Sie wirklich wissen, was Sie tun.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Erweitert</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Langzeit Leistungslimit (Querbelastung)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Langzeit Leistungslimit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Kurzzeit Leistungslimit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPU Temperatur-Grenzwert</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Einstellungen konnten nicht übernommen werden</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Einstellung konnte nicht geladen werden.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Die Lüfterdrehzahl wird nicht strikt von einem Temperatursensor bestimmt. Er erhöht oder senkt die Geschwindigkeit entsprechend dem höchsten Sensor zwischen CPU, GPU und Kühlkörpertemperatur. Die genauen Werte werden angezeigt, wenn Sie mit der Maus über jede Stufe fahren.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Lüfterkurve</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>WARNUNG!\nLängerer Gebrauch dieser Option verringert die Lebensdauer der Lüfter.\nErnsthaft, seien Sie vorsichtig mit dieser Option!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Maximale Lüfterdrehzahl</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Lüfter</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Konfigurierbare TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>GPU Temperatur-Grenzwert</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Benutzerdefinierter Modus Einstellungen</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aktiviere High Dynamic Range (HDR) des integrierten Bildschirms.\n\nWARNUNG: Diese Aktion wird nicht korrekt ausgeführt, wenn der interne Bildschirm ausgeschaltet ist.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Aktiviere High Dynamic Range (HDR) auf dem integrierten Display.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Die Verwendung von HDR wird durch die Windows-Einstellungen blockiert.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importieren</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Dieses Gerät ist nicht mit dem Lenovo Legion Toolkit kompatibel.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Keine kompatible Tastatur gefunden</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Die Tastaturbeleuchtung kann nicht gesteuert werden, wenn Lenovo Vantage oder dessen Dienste ausgeführt werden.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage oder dazugehörige Dienste werden ausgeführt</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Über</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Aktionen</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Akku</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Übersicht</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Spenden</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Tastatur</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Pakete</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Einstellungen</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Update verfügbar!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Update {0} verfügbar!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Nach unten</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Nach oben</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nein</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Netzadapter angeschlossen</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Netzadapter angeschlossen (niedrige Wattzahl)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Netzadapter nicht angeschlossen</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Kamera aus</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Kamera an</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Feststelltaste aus</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Feststelltaste an</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock aus</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock an</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Mikrofon aus</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Mikrofon an</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock aus</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock an</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Hintergrundbeleuchtung {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Helligkeit {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad aus</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad an</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Hintergrundbeleuchtung {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Netzadapter</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Kamera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Feststelltaste und Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Deaktiviert Benachrichtigungen für Fn-Tasten-Aktionen wie Mikrofon-Stummschaltung.\nAktiviere diese Option, wenn Konflikte mit Vollbildanwendungen auftreten.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Keine Benachrichtigungen anzeigen</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Position</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Leistungsmodus</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Bildwiederholrate</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart-Key</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Benachrichtigungen</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Touchpad-Sperre</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Öffnen</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Verbessert die Reaktionszeit des integrierten Bildschirms.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Verbessert die Reaktionszeit des integrierten Bildschirms.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} heruntergeladen!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Download abgeschlossen</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Etwas ist schiefgelaufen</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Fehler 404 von Server erhalten.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Die Datei scheint verschwunden zu sein</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Prüfen Sie, ob Ihre Internetverbindung funktioniert.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Etwas ist schiefgelaufen</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Update verfügbar!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Dieses Paket ist mehr als ein Jahr alt.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Nachfolgend finden Sie eine Liste von Softwarepaketen, die als kompatibel mit Ihrem Laptop gekennzeichnet sind.\nStellen Sie immer sicher, dass Sie die richtigen Pakete installieren.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Prüfen Sie, ob Maschinentyp und Betriebssystem richtig eingestellt sind.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Etwas ist schiefgelaufen</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Wenn Sie die Sortierung ändern, die Ergebnisse filtern, Pakete ausblenden oder die Liste aktualisieren, wird der Download abgebrochen. Möchten Sie fortfahren?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Download läuft</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filter...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Gerätetyp</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Betriebssystem</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primäre (Empfohlen)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Wie bei Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Sekundäre</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Wie bei Lenovo PC Support Website</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Kategorie</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Datum</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Quelle</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Downloads</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Einfügen</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Auswahl des Leistungsmodus.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Leistungsmodus</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Auswahl des Leistungsmodus.\nSie können den Modus mit Fn+Q wechseln.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Einstellungen</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Leistungsmodus</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Der gewählte Leistungsmodus funktioniert möglicherweise nicht richtig, wenn kein Netzteil angeschlossen ist.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Standard</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Windows Energiesparpläne</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Vorlage der Tastaturbeleuchtung einstellen.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Helligkeit</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Vorlage 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Vorlage 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Vorlage 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Vorlage 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Bereich 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Bereich 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Bereich 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Bereich 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Effekt</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Geschwindigkeit</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Liesmich</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Aktualisieren</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ändert die Bildwiederholrate des integrierten Bildschirms.\n\nWARNUNG: Diese Aktion wird nicht korrekt ausgeführt, wenn der interne Bildschirm ausgeschaltet ist.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bildwiederholrate</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Ändert die Bildwiederholrate des integrierten Bildschirms.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Bildwiederholrate</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Umbenennen</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Später neu starten</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Jetzt neu starten</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Zurücksetzen</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumente</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Pfad der ausführbaren Datei</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Führt ein Skript oder ein Programm aus.\nStellen Sie zunächst sicher, dass Ihr Skript korrekt ausgeführt wird.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ausführen</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Speichern</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Wird gespeichert...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Wähle einen oder mehrere Kurzbefehle aus, durch die geblättert wird</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Keine Kurzbefehle definiert.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Diese App anzeigen</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Akzentfarbe der App ändern.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Akzentfarbe</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Startet minimiert in der Taskleiste, wenn Sie sich bei Windows anmelden.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Autostart</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone wurde möglicherweise nicht korrekt deaktiviert</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zone konnte nicht deaktiviert werden</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Deaktiviert Legion Zone und dessen Dienste ohne es zu deinstallieren.\nNach dem Ändern dieser Option wird ein Neustart empfohlen.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Legion Zone deaktivieren</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys wurde möglicherweise nicht korrekt deaktiviert</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys konnte nicht deaktiviert werden</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Deaktiviert Lenovo Hotkeys und dessen Dienste ohne es zu deinstallieren.\nWenn deaktiviert, verwaltet diese Anwendung Fn-Tastenkombinationen.\nNach dem Ändern dieser Option wird ein Neustart empfohlen.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys deaktivieren</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage und/oder ImController wurden möglicherweise nicht korrekt deaktiviert</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage und/oder ImController konnten nicht deaktiviert werden</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Deaktiviert Lenovo Vantage und ImController, ohne sie zu deinstallieren.\nNach dem Ändern dieser Option wird ein Neustart empfohlen.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage und ImController deaktivieren</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone wurde möglicherweise nicht korrekt aktiviert</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zone konnte nicht aktiviert werden</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys wurde möglicherweise nicht korrekt aktiviert</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys konnte nicht aktiviert werden</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage und/oder ImController wurden möglicherweise nicht korrekt aktiviert</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage und/oder ImController konnten nicht aktiviert werden</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Sie können Bildwiederholraten ausschließen, um die Tastenkombination Fn+R nützlicher zu machen.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Bildwiederholraten ausschließen</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Sprache auswählen.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Sprache</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Immer in die Taskleiste minimieren. Schließen mit Rechtsklick auf das Tray-Symbol.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimieren beim Schließen</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Legen Sie fest, welche Benachrichtigungen angezeigt werden sollen.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Benachrichtigungen</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Energiesparpläne</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Weise einen Kurzbefehl für zweimaliges betätigen von Fn+F9 zu.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key sekundäre Aktion</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Weise einen Kurzbefehl für einmaliges betätigen von Fn+F9 zu.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key Aktion</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Legen Sie ein helles oder dunkles Thema fest oder folgen Sie den Systemeinstellungen.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Erscheinungsbild</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Einstellungen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Helligkeit der Tastaturbeleuchtung einstellen.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Helligkeit der Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Effekt hinzufügen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Konnte Profil nicht anwenden</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Das Beleuchtungsprofil konnte nicht angewendet werden.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Helligkeit</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Alle Bereiche abwählen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Effekte</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profil konnte nicht exportiert werden</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Konnte Profil nicht exportieren</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profil konnte nicht importiert werden</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Konnte Profil nicht importieren</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Keine Effekte hinzugefügt.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Auf Standardwerte zurücksetzen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Alle Bereiche auswählen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Tastaturlayout wechseln</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Richtung</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Farbe</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Farben</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Richtung</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Effekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Dieser Effekt wird auf die gesamte Tastatur angewendet und ersetzt alle anderen Effekte.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Geschwindigkeit</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Effekt hinzufügen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Effekt bearbeiten</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Profil der Tastaturbeleuchtung anpassen.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Profil der Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Alle Tasten</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} Bereiche</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Sonnenaufgang</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Sonnenuntergang</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Uhrzeit</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Ermöglicht den Wechsel zwischen integrierter und diskreter GPU.\nErfordert einen Neustart.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Änderung des Hybrid-Modus erfordert einen Neustart. Möchten Sie jetzt neu starten?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Neustart erforderlich</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Hybrid-Modus</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Deaktiviere Touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Touchpad-Sperre</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Deaktiviere Touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Touchpad-Sperre</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Erneut versuchen</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Unerwartete Ausnahme aufgetreten:\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Ohne Titel</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Sie können auf eigenes Risiko fortfahren, sollten aber bedenken, dass einige Funktionen möglicherweise nicht verfügbar sind und/oder nicht richtig funktionieren.\n\nDie Protokollierung wird automatisch aktiviert, wenn Sie fortfahren möchten.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Auf der Projektseite auf GitHub finden Sie weitere Informationen.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Verzeichnis für Protokolldateien</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Gerätetyp</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit wurde nicht mit Ihrem Gerät getestet.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Modell</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Nicht unterstütztes Gerät</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Hersteller</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Update</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Update verfügbar</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Was ist neu?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Helligkeit der Tastaturbeleuchtung einstellen.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Sie können die Helligkeit mit Fn+Leertaste ändern</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Deaktiviert die Windows-Taste der integrierten Tastatur.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Windows-Tasten-Sperre</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Funktioniert nur bei integrierter Tastatur.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Windows-Tasten-Sperre</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Wenn ausgeschaltet, werden Mikrofone stummgeschaltet.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wenn ausgeschaltet, werden Mikrofone stummgeschaltet.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Auflösung</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Ändert die Auflösung des integrierten Bildschirms.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Auflösung</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ändert die Auflösung des integrierten Bildschirms.\n\nWARNUNG: Diese Aktion wird nicht korrekt ausgeführt, wenn der interne Bildschirm ausgeschaltet ist.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Ändert die Skalierung des integrierten Bildschirms.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ändert die Skalierung des integrierten Bildschirms.\n\nWARNUNG: Diese Aktion wird nicht korrekt ausgeführt, wenn der interne Bildschirm ausgeschaltet ist.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Bildschirm</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Sie können die Tastaturbeleuchtung mit Fn+Leertaste ein- oder ausschalten.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schalte Tastaturbeleuchtung ein oder aus.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Keine passenden Downloads gefunden</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Zeige nur Updates</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Übersicht anpassen</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Zurücksetzen</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Gruppe erstellen</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Je nach Zustand und Konfiguration Ihres Geräts werden einige Funktionen möglicherweise nicht in der Übersicht angezeigt.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Anpassen</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Bildschirme ausschalten</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Alle verfügbaren Bildschirme ausschalten.\nMausbewegung oder Tastendruck weckt die Bildschirme auf.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Ausschalten</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bildschirme ausschalten</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Alle verfügbaren Bildschirme ausschalten.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Gruppenname bearbeiten</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Legion Logo an</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Legion Logo aus</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Ports Hintergrundbeleuchtung an</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Ports Hintergrundbeleuchtung aus</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Neustart erforderlich</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Herunterfahren erforderlich</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Neustart empfohlen</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Speichern &amp; Schließen</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Vorlage Benutzerdefinierter Modus</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aktiviere Vorlage Benutzerdefinierter Modus.\nDiese Einstellung wird nur wirksam, wenn der benutzerdefinierte Modus aktiviert ist.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Vorlagenname</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Aktive Vorlage</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Anwendungsordner</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Daten</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temporär</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Einzelne Display-Helligkeit</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Wenn diese Option aktiviert ist, wird die gleiche Helligkeitsstufe auf alle Windows-Energiepläne angewendet, sobald Sie sie ändern.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Update {0} verfügbar!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Spitzenleistungsgrenze</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU sPPT-Leistungsgrenze</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Die kontinuierliche Leistungsaufnahme, die von der CPU erreicht werden kann.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Die maximale Leistungsaufnahme, die von der CPU innerhalb eines kurzen Zeitraums erreicht werden kann.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Die maximale sofortige Leistungsaufnahme, die von der CPU erreicht werden kann.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Der maximale Stromverbrauch, der von der CPU erreicht werden kann, wenn sowohl CPU als auch GPU voll ausgelastet sind.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Die maximale Leistungsaufnahme, die von der CPU mit einer geringen Verzögerung erreicht werden kann.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Die maximale Temperatur, die von der CPU erreicht werden kann, bevor Frequenz und Leistung reduziert werden.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Die zusätzliche maximale Leistung, die der GPU auf der Grundlage des Stromverbrauchs der CPU zugewiesen werden kann.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Die zusätzliche Energiemenge, die der GPU zusätzlich zum Basisstromverbrauch zugewiesen werden kann.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Die maximale Temperatur, die von der GPU erreicht werden kann, bevor Frequenz und Leistung reduziert werden.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Standard</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Dauer des kurzzeitigen Leistungslimits</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Die Zeitspanne, für die die CPU das kurzfristige Leistungslimit erhöhen und verwenden darf. Wenn die Zeit abläuft, wird das langfristige Leistungslimit verwendet.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Gesamtes Prozessorleistungsziel bei eingestecktem Netzteil</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Der Punkt, an dem die CPU die dynamische Anpassung des Stromverbrauchs für die GPU auslöst.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Erstellen</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Schritt hinzufügen</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Aktion erstellen</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Leistungsmodus</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Vorlage</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Diskrete GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Energie-Status</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Akku</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Modus</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Entladungsrate</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Update verfügbar!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Symbol auswählen</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Symbol ändern</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Akkustand niedrig</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Konfigurieren</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>S0 Low Power Idle-Modell erkannt</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows meldet, dass dieses Gerät den modernen Standby-Modus unterstützt. Die Verwendung anderer Energiesparpläne als \"Ausbalanciert\" kann zu unerwartetem Verhalten führen.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Wählen Sie Windows-Energiepläne aus, die bei einer Änderung des Energiemodus angewendet werden sollen.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Energie</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Energieplanoptionen in der Windows-Systemsteuerung</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Ausgeschaltet</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Importiere das Profil der Tastaturbeleuchtung</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Importiere das Profil der Tastaturbeleuchtung und wende es auf die aktuelle Konfiguration an.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Pfad</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Nach {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Mehrere Auslöser...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Einstellungen der GPU-Übertaktung</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Kernfrequenz-Offset</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Speicherfrequenz-Offset</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU übertakten</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Steigern Sie die Leistung durch Übertaktung der diskreten GPU.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU übertakten</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Steigern Sie die Leistung durch Übertaktung der diskreten GPU.\n\nWARNUNG: Diese Aktion wird nicht korrekt ausgeführt, wenn keine diskrete GPU verfügbar ist.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Ports Hintergrundbeleuchtung</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Schalten Sie die Hintergrundbeleuchtung der Anschlüsse auf der Rückseite des Laptops ein oder aus.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ports Hintergrundbeleuchtung</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schalten Sie die Hintergrundbeleuchtung der Anschlüsse auf der Rückseite des Laptops ein oder aus.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Hintergrundbeleuchtung des Panel-Logos</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Schalten Sie die Hintergrundbeleuchtung auf dem Deckel des Laptops ein oder aus.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hintergrundbeleuchtung des Panel-Logos</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schalten Sie die Hintergrundbeleuchtung auf dem Deckel des Laptops ein oder aus.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Maximal: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Nutzung</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Kerntakt</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatur</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Lüfter</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Speichertakt</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Aktualisierungsintervall</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Instant Boot</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Schalte den Laptop ein, wenn ein Netzadapter angeschlossen wird.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Instant Boot</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schalte den Laptop ein, wenn ein Netzadapter angeschlossen wird.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Leistungsmodus kann nicht geändert werden</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>Leistungsmodus {0} ist ohne Netzadapter nicht verfügbar.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensoren</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>GPU-Betriebsmodus konnte nicht geändert werden</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Versuchen Sie, den Modus in ein paar Sekunden erneut zu ändern, wenn Sie nicht das erwartete Ergebnis sehen.\nWenn die dGPU überhaupt nicht reagiert, starten Sie bitte Ihren Laptop neu.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU wird derzeit verwendet</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU wird automatisch getrennt, wenn sie nicht verwendet wird.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>dGPU wird gerade verwendet oder der Laptop ist nicht im Akkubetrieb</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>dGPU wird automatisch getrennt, wenn sie nicht verwendet wird und der Laptop im Akkubetrieb ist.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Die Einstellungen des benutzerdefinierten Modus werden nicht korrekt angewendet, wenn Lenovo Vantage oder dessen Dienste ausgeführt werden.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Die Einstellungen des benutzerdefinierten Modus werden nicht korrekt angewendet, wenn Legion Zone oder dessen Dienste ausgeführt werden.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU verbunden</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPU getrennt</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Betriebsmodus</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wählen Sie den GPU-Betriebsmodus entsprechend der Nutzung und den Energiebedingungen Ihres Computers.\nEin Wechsel des Modus kann einen Neustart erfordern.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hybrid-Modus</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ermöglicht den Wechsel zwischen integrierter und diskreter GPU.\nErfordert einen Neustart.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Dauer</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Updates</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>GPU zu CPU Dynamischer Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Dies ist die maximale zusätzliche Leistung, die der CPU von der GPU auf der Grundlage der CPU-Nutzung zugewiesen werden kann. Je höher der Wert, desto besser die Leistung von Anwendungen, die die CPU nutzen.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Boot-Logo</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Anpassen des Boot-Logos, das während des Systemstarts sichtbar ist.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Boot-Logo</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Standard Boot-Logo ist eingestellt</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Benutzerdefiniertes Boot-Logo ist eingestellt</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Auf Standard zurücksetzen</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Anpassen</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Aktionen</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Benachrichtigungstext</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Benachrichtigung anzeigen</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Vorlage</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Smart Fn-Lock</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Fn-Lock wird vorübergehend deaktiviert, wenn die Umschalt-, Strg- oder Alt-Taste gedrückt wird.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Aus</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Das benutzerdefinierte Boot-Logo muss genau {0} Pixel groß sein.\nUnterstützte Formate sind: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Akkuaufladung über Nacht</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Wenn diese Funktion aktiviert ist, wird das Gerät über Nacht zu 80 % aufgeladen und wird die Ladung zu 100 % beenden, während Sie das Gerät am Morgen benutzen.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Akkuaufladung über Nacht</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wenn diese Funktion aktiviert ist, wird das Gerät über Nacht zu 80 % aufgeladen und wird die Ladung zu 100 % beenden, während Sie das Gerät am Morgen benutzen.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Ungültige Bildgröße.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Ungültiges Bildformat.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>EFI-Partition kann nicht gemountet werden.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>UEFI-Berechtigung kann nicht gesetzt werden.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Nicht genügend Speicherplatz auf der EFI-Partition.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Benutzerdefiniertes Logo kann nicht eingestellt werden: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Standardlogo kann nicht eingestellt werden: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Standard Boot-Logo eingestellt.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Benutzerdefiniertes Boot-Logo eingestellt.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Netzwerkname (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Aktuellen Netzwerknamen kopieren</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Leer lassen für jedes Wi-Fi-Netzwerk.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Teilen Sie Lüftergeschwindigkeit, Batterietemperatur usw. mit HWiNFO64. Möglicherweise müssen Sie HWiNFO64 neu starten, nachdem Sie diese Option geändert haben.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Integrationen</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Einstellungen</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Information</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Download-Ordner</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Öffne Download-Ordner</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Herunterladen</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Öffne README (LIESMICH)</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Vorlage</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Aktualisieren</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Löschen</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Zeitraum (Minuten)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Setzt den Zähler für \"Auf Akku seit\" im Akkubereich zurück, wenn das System neu gestartet wird.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Zurücksetzen von \"Auf Akku seit\" beim Starten</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>WLAN ausschalten</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>WLAN einschalten</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Im Hintergrund starten</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Warten bis fertig</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Führen Sie Konsolenanwendungen aus, ohne ein Konsolenfenster zu erstellen.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Warten, bis das Programm oder Skript fertig ausgeführt ist</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wenn Sie die Stummschaltung aktivieren, werden alle aktiven Audioausgangsgeräte stummgeschaltet.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Lautsprecher</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>In Infobereich minimieren</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Immer zum Infobereich anstatt zur Taskleiste minimieren.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Windows Energiemodi</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Mit Fn+Q in den benutzerdefinierten Modus wechseln</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Schnelles Umschalten in den benutzerdefinierten Modus mit Fn+Q ermöglichen.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Synchronisation mit Leistungsmodus</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Automatischer Wechsel des Windows-Energiesparplans oder des Windows-Energiemodus beim Wechsel des Leistungsmodus.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Windows Energiemodi</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Wählen Sie den Windows-Energiemodus aus, der angewendet werden soll, wenn sich der Leistungsmodus ändert.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Beim Lesen der Geräteinformationen ist ein Fehler aufgetreten.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Makro</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Makro</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Wiederholen</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Verzögerungen ignorieren</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Löschen</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Aufnahme</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Aufnahme beenden</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Nicht wiederholen</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit muss ausgeführt werden, damit Makros funktionieren.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Aktivieren</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Sie können Serien von Tastendrücken aufzeichnen und über den Ziffernblock Ihrer Tastatur abrufen.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Makro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aktiviert oder deaktiviert Makros.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Unterbrechung, wenn eine andere Taste gedrückt wurde</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Verbergen</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Alle verbergen</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Geräte</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Alle abwählen</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Alle auswählen</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Nur Tastatur</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Tastaturtasten und Maustasten</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Alle Eingaben</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Aufnahme-Optionen</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Die Aufnahme beginnt in 3 Sekunden...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Aufnahme...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Drücken Sie ESC, um zu stoppen.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Nur ausgewählte Geräte anzeigen</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Nur entfernbare Geräte anzeigen</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Nur verbundene Geräte anzeigen</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>CLI</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Aktiviere die Befehlszeilenschnittstelle, die eine Steuerung über die Kommandozeile ermöglicht.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>CLI zu PATH hinzufügen</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Füge CLI zur PATH-Umgebungsvariable des Benutzers hinzu.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatur</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Wählen Sie die Einheiten für die Temperatursensoren.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys wird im Hintergrund ausgeführt.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone wird im Hintergrund ausgeführt.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage und/oder ImController wird im Hintergrund ausgeführt.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Zeige Benachrichtigung auf allen mit Ihrem Gerät verbundenen Bildschirmen an.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Benachrichtigung auf allen Bildschirmen</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Überprüfe</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Nach Updates suchen...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Nach Updates suchen</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Update</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>API-Ratenlimit erreicht, bitte versuchen Sie es später noch einmal.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Prüfung auf Updates fehlgeschlagen</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Es ist ein Fehler aufgetreten, bitte versuchen Sie es später noch einmal.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Keine Updates gefunden</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Automatisch auf Updates prüfen</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Update-Katalog nicht gefunden</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Versuche Updates von der anderen Quelle zu erhalten.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Etwas ist schiefgelaufen</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Prüfen Sie, ob Ihre Internetverbindung funktioniert.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ton abspielen</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Gängige Musikformate wie wav oder mp3 werden unterstützt.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Schnellaktion</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Führt eine gespeicherte Schnellaktion aus.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\" xml:space=\"preserve\">\n    <value>Benachrichtigung immer im Vordergrund</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\" xml:space=\"preserve\">\n    <value>Benachrichtigungen immer im Vordergrund anzeigen.\nAndere Vollbildfenster werden dadurch nicht beeinträchtigt, aber Sie können nicht mehr auf die Benachrichtigung klicken.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.el.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Κατασκευή</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Τελευταία έκδοση στο GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Σύνδεσμοι</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Ιστοσελίδα εφαρμογής στο GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Βιβλιοθήκες τρίτων</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Σχετικά με</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Οι μεταφράσεις γίνονται από την κοινότητα.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Έκδοση</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Προσθήκη</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Προσθήκη νέας</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Φορτίστε τις συσκευές USB όταν ο υπολογιστής είναι απενεργοποιημένος, σε κατάσταση αναστολής λειτουργίας ή αδρανοποίησης.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Πάντα ενεργά USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Φορτίστε τις συσκευές USB όταν ο υπολογιστής είναι απενεργοποιημένος, σε κατάσταση αναστολής λειτουργίας ή αδρανοποίησης.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Πάντα ενεργά USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Εφαρμογή</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Εφαρμογή και κλείσιμο</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Το Lenovo Legion Toolkit πρέπει να εκτελείται για να λειτουργήσουν οι αυτόματες δράσεις.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Ενεργοποιημένες</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Δεν έχουν οριστεί Δράσεις. Πατήστε \"Προσθήκη νέας\" για να δημιουργήσετε μια νέα Δράση.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Εάν είναι ενεργή, αυτή η δράση θα εκτελεστεί αυτόματα. Κάθε φορά που αλλάζει η κατάσταση, όλες οι δράσεις θα αξιολογηθούν από πάνω προς τα κάτω.\nΘα εκτελούνται μόνο οι δράσεις που αντιστοιχούν στην τρέχουσα κατάσταση.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Δράσεις</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Όνομα...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Προσθήκη νέας</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Δεν έχουν οριστεί Γρήγορες Δράσεις. Πατήστε \"Προσθήκη νέας\" για να δημιουργήσετε μια νέα Γρήγορη Δράση.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Οι γρήγορες δράσεις είναι διαθέσιμες στο μενού του δεξιού κλικ στου εικονίδιο του δίσκου εικονιδίων.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Γρήγορες Δράσεις</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Όνομα...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Μετονομασία</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Όλες οι αλλαγές επαναφέρθηκαν!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Επαναφορά</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Οι αλλαγές αποθηκεύτηκαν με επιτυχία!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Αποθηκεύτηκε</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Αυτοματισμός</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Προσθήκη βήματος</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Ρύθμιση</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Αποκλειστικό</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Να μην εκτελεστούν περαιτέρω δράσεις όταν εκτελείται αυτή η δράση.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Εκτέλεση τώρα</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Ολοκληρώθηκε με σφάλματα.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Εκτέλεση τώρα</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Ολοκληρώθηκε επιτυχώς!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Εκτέλεση τώρα</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Εκτελείται...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} βήμα</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} βήματα</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Εφαρμογές</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Στην ανατολή του ηλίου</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Στη δύση του ηλίου</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>Στις {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Λειτουργία Ισχύος</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Ανώνυμο</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Ανιχνεύει αυτόματα πότε εκτελούνται ορισμένα παιχνίδια και τροποποιεί την απόδοση της CPU και της GPU. Οι θερμοκρασίες και ο θόρυβος του ανεμιστήρα ενδέχεται να αυξηθούν.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Ενεργοποίηση Μηχανής AI</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ρυθμίσεις Ισορροπημένης Κατάστασης</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Επιλέξτε τον τρόπο φόρτισης της μπαταρίας.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Λειτουργία Μπαταρίας</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Επιλέξτε τον τρόπο φόρτισης της μπαταρίας.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Λειτουργία Μπαταρίας</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Συνδεδεμένη, φορτίζει...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Συνδεδεμένη, δε φορτίζει</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Τρέχουσα θερμοκρασία μπαταρίας.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Θερμοκρασία μπαταρίας</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Τρέχουσα χωρητικότητα μπαταρίας.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Τρέχουσα χωρητικότητα</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Αριθμός κύκλων φόρτισης/αποφόρτισης.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Κύκλοι φόρτισης</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Χωρητικότητα μπαταρίας όπως έχει σχεδιαστεί.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Χωρητικότητα σχεδιασμού</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Ρυθμός με τον οποίο η μπαταρία φορτίζεται (+), ή αποφορτίζεται (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Ρυθμός αποφόρτισης</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Εκτιμώμενος χρόνος που απομένει: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Εκτίμηση χρόνου...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Ημερομηνία πρώτης χρήσης</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Πότε χρησιμοποιήθηκε για πρώτη φορά η μπαταρία.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Χωρητικότητα μπαταρίας όταν είναι πλήρως φορτισμένη.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Πλήρης χωρητικότητα φόρτισης</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Συνδέθηκε φορτιστής χαμηλής ισχύος</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Πότε κατασκευάστηκε η μπαταρία.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Ημερομηνία παραγωγής</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Χρόνος από την τελευταία φορά που ο υπολογιστής φόρτιζε.\nΑυτός ο χρόνος μπορεί να μην είναι ακριβής εάν ο υπολογιστής φόρτιζε ενώ ήταν σε αδράνεια.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Λειτουργία με την μπαταρία από</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Μπαταρία</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Ακύρωση</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Κλείσιμο</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Μπλε</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Πράσινο</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Κόκκινο</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Επιλέξτε τον τρόπο λειτουργίας της GPU με βάση τη χρήση και τις συνθήκες ισχύος του υπολογιστή σας.\nΗ εναλλαγή λειτουργιών ενδέχεται να απαιτεί επανεκκίνηση.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Η αλλαγή σε {0} απαιτεί επανεκκίνηση. Θέλετε να κάνετε επανεκκίνηση τώρα;</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Απαιτείται επανεκκίνηση</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Κατάσταση Λειτουργίας GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Γρήγορες Δράσεις</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Συνέχεια</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Αντιγραφή όλων</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Γραφικά</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Άλλα</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Ισχύς</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Αρχική</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση της διακριτής GPU εάν είναι άσκοπα ενεργή.\n\nΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η δράση δε θα εκτελεστεί σωστά, εάν η ενσωματωμένη οθόνη είναι απενεργοποιημένη ή η υβριδική λειτουργία δεν είναι ενεργή.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση της GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Προσθήκη καθυστέρησης πριν την εκτέλεση του επόμενου βήματος.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Καθυστέρηση</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Διαγραφή</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Έκδοση BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Το κείμενο αντιγράφηκε στο πρόχειρο.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>Το \"{0}\" αντιγράφηκε στο πρόχειρο.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Αντιγράφηκε!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Συσκευή</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Υποστήριξη Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Τύπος Μηχανήματος</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Κατασκευαστής</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Μοντέλο</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Σειριακός αριθμός</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Σχετικά με τη συσκευή σας</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Ημερομηνία λήξης</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Ημερομηνία έναρξης</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Εγγύηση</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Ενεργή</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Αδρανής</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Τερματισμός εφαρμογών</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση της διακριτής GPU εάν είναι άσκοπα ενεργή.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Μια οθόνη είναι συνδεδεμένη στην nVidia GPU.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Δεν υπάρχουν διεργασίες</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Κατάσταση απόδοσης</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Άγνωστο</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Διεργασίες</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Επανεκκίνηση GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Διακριτή GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Αλλαγή φωτεινότητας οθόνης της ενσωματωμένης οθόνης.\n\nΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η δράση δε θα εκτελεστεί σωστά εάν η ενσωματωμένη οθόνη είναι απενεργοποιημένη.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Φωτεινότητα οθόνης</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Δωρεά με</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Η ανάπτυξη και η συντήρηση του Lenovo Legion Toolkit απαιτεί πολύ χρόνο. Εάν σας αρέσει να χρησιμοποιείτε αυτό το λογισμικό, μπορείτε να υποστηρίξετε το μέλλον του, δωρίζοντας ένα ποσό της επιλογής σας.\n\nΚάντε κλικ στο λογότυπο του PayPal παρακάτω ή σαρώστε τον κωδικό QR για να κάνετε δωρεά με το PayPal.\n\nΕυχαριστώ εκ των προτέρων!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Δωρεά</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Επεξεργασία</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Καταργήστε επιλογές ρυθμού ανανέωσης που δε θέλετε να χρησιμοποιήσετε μέσω της συντόμευσης Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Βεβαιωθείτε ότι η οθόνη του υπολογιστή είναι ενεργοποιημένη. Το Lenovo Legion Toolkit δεν μπορεί να φορτώσει ρυθμούς ανανέωσης σε απενεργοποιημένη οθόνη.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Δεν βρέθηκαν ρυθμοί ανανέωσης</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Εξαίρεση Ρυθμών Ανανέωσης</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Έξοδος</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Εξαγωγή</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Χρησιμοποιήστε μόνο την ενσωματωμένη GPU όταν ο υπολογιστής λειτουργεί με την μπαταρία, ή και τις δύο GPU όταν φορτίζει. Όταν είναι συνδεδεμένος ένας μη-τυπικός φορτιστής, το σύστημα μεταβαίνει σε λειτουργία Υβριδική-iGPU Μόνο.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Λειτουργία Υβριδική-Αυτόματη</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Η εναλλαγή από και προς αυτήν τη λειτουργία απαιτεί επανεκκίνηση.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Χρήση μόνο της διακριτής GPU. Αυτή η λειτουργία παρέχει την καλύτερη απόδοση γραφικών, αλλά αυξάνει την κατανάλωση ενέργειας.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Λειτουργία dGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Τόσο η ενσωματωμένη όσο και η διακριτή GPU είναι ενεργοποιημένες. Το σύστημα θα εναλλάσσεται αυτόματα μεταξύ τους ανάλογα με τις ανάγκες του.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Υβριδική Λειτουργία</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Αυτή η λειτουργία τίθεται σε ισχύ μόνο όταν η διακριτή GPU δε λειτουργεί.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Χρήση μόνο της ενσωματωμένης GPU. Αυτή η λειτουργία ελαχιστοποιεί την κατανάλωση ενέργειας και τον θόρυβο.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Λειτουργία Υβριδική-iGPU Μόνο</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Σχετικά με τις καταστάσεις λειτουργίας GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Αισθητήρας CPU</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Ταχύτητα Ανεμιστήρα</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>σ.α.λ.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ενεργοποιήστε τον υπολογιστή όταν σηκώνετε την οθόνη.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Άνοιγμα οθόνης για έναρξη</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Ενεργοποιήστε τον υπολογιστή όταν σηκώνετε την οθόνη.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Άνοιγμα οθόνης για έναρξη</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Χρησιμοποιήστε τις δευτερεύουσες λειτουργίες των πλήκτρων F1-F12 χωρίς να κρατάτε πατημένο το πλήκτρο Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Χρησιμοποιήστε τις δευτερεύουσες λειτουργίες των πλήκτρων F1-F12 χωρίς να κρατάτε πατημένο το πλήκτρο Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>ΠΡΟΕΙΔΟΠΟΙΗΣΗ:\nΜερικοί υπολογιστές μπορεί να αποδέχονται χαμηλότερες τιμές από αυτές που υποδεικνύουν, αλλά να είστε προσεκτικοί. Αυτή η επιλογή μπορεί να οδηγήσει σε απρόβλεπτη συμπεριφορά. Εάν δεν είστε βέβαιοι για το τι κάνετε, αφήστε τη στο 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Ελάχιστο αντιστάθμισμα</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>ΠΡΟΕΙΔΟΠΟΙΗΣΗ:\nΜερικοί υπολογιστές μπορεί να αποδέχονται υψηλότερες τιμές από αυτές που υποδεικνύουν, αλλά να είστε προσεκτικοί. Αυτή η επιλογή μπορεί να οδηγήσει σε απρόβλεπτη συμπεριφορά. Εάν δεν είστε βέβαιοι για το τι κάνετε, αφήστε τη στο 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Μέγιστο αντιστάθμισμα</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Μην αλλάξετε τις παρακάτω επιλογές εκτός και εάν γνωρίζετε πραγματικά τι κάνετε.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Για προχωρημένους</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Μακροπρόθεσμο Όριο Ισχύος (Διασταυρούμενη Επιβάρυνση)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Μακροπρόθεσμο Όριο Ισχύος</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Βραχυπρόθεσμο Όριο Ισχύος</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Όριο Θερμοκρασίας CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Αδυναμία εφαρμογής ρυθμίσεων</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Αδυναμία φόρτωσης ρύθμισης.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Η ταχύτητα του ανεμιστήρα δεν καθορίζεται αυστηρά από έναν αισθητήρα θερμοκρασίας. Η ταχύτητα αυξομειώνεται με βάση την υψηλότερη θερμοκρασία μεταξύ των αισθητήρων της CPU, της GPU και της ψύκτρας. Οι ακριβείς τιμές θα εμφανιστούν όταν τοποθετείτε το ποντίκι πάνω από κάθε βήμα.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Καμπύλη ανεμιστήρα</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>ΠΡΟΕΙΔΟΠΟΙΗΣΗ!\nΗ παρατεταμένη χρήση αυτής της επιλογής θα επιβαρύνει τους ανεμιστήρες μειώνοντας τη μακροζωία τους.\nΣοβαρά, να είστε προσεκτικοί με αυτήν την επιλογή!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Μέγιστη ταχύτητα ανεμιστήρα</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ανεμιστήρες</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Ρύθμιση TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Δυναμική Ώθηση</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Όριο Θερμοκρασίας GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ρυθμίσεις Προσαρμοσμένης Λειτουργίας</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ενεργοποίηση υψηλού δυναμικού εύρους (HDR) στην ενσωματωμένη οθόνη.\n\nΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η δράση δε θα εκτελεστεί σωστά εάν η ενσωματωμένη οθόνη είναι ανενεργή.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Ενεργοποίηση υψηλού δυναμικού εύρους (HDR) στην ενσωματωμένη οθόνη.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Η χρήση HDR εμποδίζεται από ρυθμίσεις των Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Εισαγωγή</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Αυτή η συσκευή δεν είναι συμβατή με το Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Δε βρέθηκαν συμβατά πληκτρολόγια</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός Πληκτρολογίου</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Ο φωτισμός του πληκτρολογίου δεν μπορεί να ρυθμιστεί όταν εκτελείται το Lenovo Vantage ή οι υπηρεσίες του.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Το Lenovo Vantage ή οι υπηρεσίες του εκτελούνται.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Σχετικά με</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Δράσεις</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Μπαταρία</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Πίνακας</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Δωρεά</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Πληκτρολόγιο</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Λήψεις</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Ρυθμίσεις</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Διαθέσιμη ενημέρωση!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Ενημέρωση {0} διαθέσιμη!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Μετακίνηση κάτω</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Μετακίνηση επάνω</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Όχι</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Ο φορτιστής συνδέθηκε</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Ο φορτιστής συνδέθηκε (Χαμηλή ισχύς)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Ο φορτιστής αποσυνδέθηκε</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Κάμερα ανενεργή</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Κάμερα ενεργή</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock ανενεργό</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock ενεργό</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock ανενεργό</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock ενεργό</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Μικρόφωνο ανενεργό</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Μικρόφωνο ενεργό</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock ανενεργό</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock ενεργό</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Φωτισμός Πληκτρολογίου {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Φωτεινότητα {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Προφίλ {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Επιφάνεια αφής ανενεργή</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Επιφάνεια αφής ενεργή</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Φωτισμός {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Φορτιστής</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Κάμερα</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock και Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποιεί τις ειδοποιήσεις για δράσεις πλήκτρων Fn, όπως τη σίγαση μικροφώνου.\nΕνεργοποιήστε αυτήν την επιλογή εάν έχετε διενέξεις με εφαρμογές πλήρους οθόνης.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Να μην εμφανίζονται ειδοποιήσεις</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Φωτισμός Πληκτρολογίου</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Μικρόφωνο</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Θέση</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Λειτουργία Ισχύος</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Ρυθμός ανανέωσης</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Έξυπνο Πλήκτρο</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ειδοποιήσεις</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Κλείδωμα Επιφάνειας Αφής</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Εντάξει</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Άνοιγμα</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Βελτίωση χρόνου απόκρισης της ενσωματωμένης οθόνης.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Βελτίωση χρόνου απόκρισης της ενσωματωμένης οθόνης.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} κατέβηκαν!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Η λήψη ολοκληρώθηκε</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Παρουσιάστηκε κάποιο πρόβλημα</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Ο διακομιστής επέστρεψε σφάλμα 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Το αρχείο εξαφανίστηκε</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Ελέγξτε εάν η σύνδεσή σας στο διαδίκτυο λειτουργεί.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Παρουσιάστηκε κάποιο πρόβλημα</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Διαθέσιμη ενημέρωση!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Αυτό το πακέτο είναι πάνω από ενός έτους.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Έκδοση</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Ακολουθεί μια λίστα με πακέτα λογισμικού που έχουν επισημανθεί ως συμβατά με τον υπολογιστή σας.\nΝα βεβαιώνεστε πάντα ότι εγκαθιστάτε σωστά πακέτα.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Ελέγξτε εάν ο Τύπος Μηχανήματος και το λειτουργικό σύστημα είναι σωστά.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Παρουσιάστηκε κάποιο πρόβλημα</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Η αλλαγή της ταξινόμησης, το φιλτράρισμα των αποτελεσμάτων, η απόκρυψη πακέτων ή η ανανέωση της λίστας θα σταματήσει τη λήψη. Θέλετε να συνεχίσετε;</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Λήψη σε εξέλιξη</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Φίλτρα...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Τύπος Μηχανήματος</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Λειτουργικό Σύστημα</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Κύρια (Συνιστάται)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Ίδια με το Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Δευτερεύουσα</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Ίδια με την Υποστήριξη Υπολογιστών Lenovo</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Κατηγορία</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Ημερομηνία</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Όνομα</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Πηγή</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Λήψεις</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Επικόλληση</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Επιλογή λειτουργίας απόδοσης.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Λειτουργία Ισχύος</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Επιλέξτε λειτουργία απόδοσης.\nΜπορείτε να αλλάξετε λειτουργία με το Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Ρυθμίσεις</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Λειτουργία Ισχύος</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Η επιλεγμένη λειτουργία ισχύος ενδέχεται να μη λειτουργεί σωστά χωρίς συνδεδεμένο φορτιστή.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Προεπιλογή</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Πλάνα Τροφοδοσίας Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Προσαρμογή προεπιλογής φωτισμού πληκτρολογίου.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός πληκτρολογίου</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Φωτεινότητα</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Προεπιλογή 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Προεπιλογή 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Προεπιλογή 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Προεπιλογή 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Ζώνη 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Ζώνη 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Ζώνη 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Ζώνη 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Εφέ</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Ταχύτητα</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Readme</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Ανανέωση</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Αλλαγή του ρυθμού ανανέωσης της ενσωματωμένης οθόνης.\n\nΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η δράση δε θα εκτελεστεί σωστά εάν η εσωτερική οθόνη είναι απενεργοποιημένη.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ρυθμός ανανέωσης</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Αλλαγή του ρυθμού ανανέωσης της ενσωματωμένης οθόνης.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Ρυθμός ανανέωσης</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Μετονομασία</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Θα επανεκκινήσω αργότερα</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Επανεκκίνηση τώρα</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Επαναφορά</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Παράμετροι</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Διαδρομή Εκτελέσιμου</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Εκτελέστε ένα script ή ένα πρόγραμμα.\nΠρώτα βεβαιωθείτε ότι το script σας εκτελείται σωστά.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Εκτέλεση</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Αποθήκευση</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Αποθήκευση...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Επιλέξτε μία ή περισσότερες γρήγορες δράσεις για κυκλική εναλλαγή</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Δεν έχουν οριστεί Γρήγορες Δράσεις.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Εμφάνιση της εφαρμογής</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Αλλάξτε το χρώμα έμφασης της εφαρμογής.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Χρώμα έμφασης</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Εκκίνηση εφαρμογής ελαχιστοποιημένης στη γραμμή εικονιδίων όταν συνδεθείτε στα Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Αυτόματη εκτέλεση</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Το Legion Zone μπορεί να μην απενεργοποιήθηκε σωστά</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Δεν ήταν δυνατή η απενεργοποίηση του Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποιήστε το Legion Zone και την υπηρεσία του χωρίς να το απεγκαταστήσετε.\nΣυνιστάται επανεκκίνηση αφού αλλάξετε αυτήν την επιλογή.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Το Lenovo Hotkeys μπορεί να μην απενεργοποιήθηκε σωστά</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Δεν ήταν δυνατή η απενεργοποίηση του Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποιήστε το Lenovo Hotkeys και την υπηρεσία του χωρίς να το απεγκαταστήσετε.\nΌταν είναι απενεργοποιημένο, αυτή η εφαρμογή θα χειρίζεται τις συντομεύσεις Fn.\nΣυνιστάται επανεκκίνηση αφού αλλάξετε αυτήν την επιλογή.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση του Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Το Lenovo Vantage ή/και το ImController ενδέχεται να μην έχουν απενεργοποιηθεί σωστά</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Αδυναμία απενεργοποίησης του Lenovo Vantage ή/και του ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση των Lenovo Vantage και ImController χωρίς να το απεγκαταστήσετε.\nΣυνιστάται επανεκκίνηση κατόπιν αλλαγής αυτής της επιλογής.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση των Lenovo Vantage και ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Το Legion Zone μπορεί να μην ενεργοποιήθηκε σωστά</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Δεν ήταν δυνατή η ενεργοποίηση του Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Το Lenovo Hotkeys μπορεί να μην ενεργοποιήθηκε σωστά</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Δεν ήταν δυνατή η ενεργοποίηση των πλήκτρων του Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Το Lenovo Vantage ή/και το ImController ενδέχεται να μην έχουν ενεργοποιηθεί σωστά</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Αδυναμία ενεργοποίησης του Lenovo Vantage ή/και του ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Μπορείτε να εξαιρέσετε ρυθμούς ανανέωσης, για να κάνετε τη συντόμευση Fn+R πιο χρήσιμη.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Εξαίρεση Ρυθμών Ανανέωσης</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Επιλέξτε γλώσσα.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Γλώσσα</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Πάντα ελαχιστοποίηση στο δίσκο εικονιδίων. Κλείστε με δεξί κλικ στο εικονίδιο στο δίσκο.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Ελαχιστοποίηση κατά το κλείσιμο</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Ρυθμίστε ποιες ειδοποιήσεις εμφανίζονται.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Ειδοποιήσεις</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Πλάνα Τροφοδοσίας Windows</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Αντιστοιχίστε μια Γρήγορη Δράση στο διπλό πάτημα Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Δευτερεύουσα Δράση Έξυπνου Πλήκτρου</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Αντιστοιχίστε μια Γρήγορη Δράση στο απλό πάτημα Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Δράση Έξυπνου Πλήκτρου</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Ορίστε ανοιχτό θέμα, σκούρο θέμα ή ακολουθήστε τις ρυθμίσεις συστήματος.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Θέμα</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Ρυθμίσεις</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Προσαρμόστε τη φωτεινότητα του φωτισμού πληκτρολογίου.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Φωτεινότητα πληκτρολογίου</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Προσθήκη εφέ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Αδυναμία εφαρμογής προφίλ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Δεν ήταν δυνατή η εφαρμογή του προφίλ φωτισμού.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Φωτεινότητα</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Αποεπιλέξτε όλες τις ζώνες</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Εφέ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Το προφίλ δεν ήταν δυνατό να εξαχθεί</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Αδυναμία εξαγωγής προφίλ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Το προφίλ δεν ήταν δυνατό να εισαχθεί</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Αδυναμία εισαγωγής προφίλ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Δεν προστέθηκαν εφέ.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Επαναφορά προεπιλογών</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Επιλέξτε όλες τις ζώνες</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Αλλαγή διάταξης πληκτρολογίου</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Κατεύθυνση</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Χρώμα</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Χρώματα</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Κατεύθυνση</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Εφέ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Αυτό το εφέ θα εφαρμοστεί σε όλο το πληκτρολόγιο και θα αντικαταστήσει όλα τα άλλα εφέ.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Ταχύτητα</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Προσθήκη εφέ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Επεξεργασία εφέ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Προσαρμογή προφίλ φωτισμού πληκτρολογίου.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Προφίλ φωτισμού πληκτρολογίου</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Όλα τα πλήκτρα</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} ζώνες</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Ανατολή ηλίου</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Δύση ηλίου</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Ώρα</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Επιτρέψτε την εναλλαγή μεταξύ ενσωματωμένης και διακριτής GPU.\nΑπαιτεί επανεκκίνηση.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Η αλλαγή της Υβριδικής Λειτουργίας απαιτεί επανεκκίνηση. Θέλετε να κάνετε επανεκκίνηση τώρα;</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Απαιτείται επανεκκίνηση</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Υβριδική Λειτουργία</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση επιφάνειας αφής.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Κλείδωμα Επιφάνειας Αφής</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση επιφάνειας αφής.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Κλείδωμα Επιφάνειας Αφής</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Προσπαθήστε ξανά</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Παρουσιάστηκε απροσδόκητη εξαίρεση:\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Ανώνυμο</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Μπορείτε να συνεχίσετε με δική σας ευθύνη, αλλά ενδέχεται ορισμένες λειτουργίες να μην είναι διαθέσιμες ή/και να μην λειτουργούν σωστά.\n\nΗ καταγραφή θα ενεργοποιηθεί αυτόματα, εάν επιλέξετε να συνεχίσετε.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Για περισσότερες πληροφορίες δείτε τη σελίδα της εφαρμογής στο GitHub.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Φάκελος καταγραφής</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Τύπος Μηχανήματος</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Το Lenovo Legion Toolkit δεν έχει δοκιμαστεί με τη συσκευή σας.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Μοντέλο</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Μη υποστηριζόμενη συσκευή</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Προμηθευτής</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Ενημέρωση</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Διαθέσιμη ενημέρωση</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Τι νέο υπάρχει;</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Προσαρμόστε τη φωτεινότητα του φωτισμού του πληκτρολογίου.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός πληκτρολογίου</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Μπορείτε να αλλάξετε τη φωτεινότητα με το Fn+Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός πληκτρολογίου</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση πλήκτρου Windows στο ενσωματωμένο πληκτρολόγιο.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Κλείδωμα Πλήκτρου Windows</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Λειτουργεί μόνο στο ενσωματωμένο πληκτρολόγιο.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Κλείδωμα Πλήκτρου Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Ναι</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Μικρόφωνο</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Όταν είναι απενεργοποιημένα, τα μικρόφωνα θα είναι σε σίγαση.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Μικρόφωνο</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Όταν είναι απενεργοποιημένα, τα μικρόφωνα θα είναι σε σίγαση.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Ανάλυση</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Αλλαγή ανάλυσης της ενσωματωμένης οθόνης.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ανάλυση</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Αλλαγή ανάλυσης της ενσωματωμένης οθόνης.\n\nΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η δράση δε θα εκτελεστεί σωστά εάν η εσωτερική οθόνη είναι απενεργοποιημένη.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Αλλαγή κλίμακας της ενσωματωμένης οθόνης.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Αλλαγή κλίμακας της ενσωματωμένης οθόνης.\n\nΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η δράση δε θα εκτελεστεί σωστά εάν η εσωτερική οθόνη είναι απενεργοποιημένη.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Οθόνη</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός πληκτρολογίου</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Μπορείτε να ανάψετε ή να σβήσετε τον φωτισμό πληκτρολογίου με το Fn+Space.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός πληκτρολογίου</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ενεργοποιήστε ή απενεργοποιήστε τον φωτισμό πληκτρολογίου.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Δεν βρέθηκαν λήψεις που να ταιριάζουν</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Εμφάνιση μόνο ενημερώσεων</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Προσαρμογή πίνακα επισκόπησης</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Φόρτωση</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Δημιουργία ομάδας</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Όνομα</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Μερικές δυνατότητες ενδέχεται να μην εμφανίζονται στον Πίνακα Επισκόπησης αναλόγως της κατάστασης και της διαρρύθμισης του υπολογιστή σας.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Προσαρμογή</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση οθονών</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποιήστε όλες τις διαθέσιμες οθόνες.\nΚινήσεις του ποντικιού ή πληκτρολογήσεις θα ξυπνήσουν τις οθόνες.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση οθονών</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Απενεργοποιήστε όλες τις διαθέσιμες οθόνες.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Επεξεργασία ονόματος ομάδας</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Όνομα</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Το λογότυπο Legion είναι ενεργό</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Το λογότυπο Legion είναι ανενεργό</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Ο φωτισμός θυρών είναι ενεργός</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Ο φωτισμός θυρών είναι ανενεργός</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Απαιτείται επανεκκίνηση</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Απαιτείται τερματισμός λειτουργίας</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Προτείνεται επανεκκίνηση</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Αποθήκευση &amp; Κλείσιμο</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Προεπιλογή Προσαρμοσμένης Λειτουργίας</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ενεργοποίηση προεπιλογής Προσαρμοσμένης Λειτουργίας.\nΑυτή η ρύθμιση τίθεται σε ισχύ μόνο όταν η Προσαρμοσμένη Λειτουργία είναι ενεργοποιημένη.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Όνομα προφίλ</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Όνομα</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Ενεργό προφίλ</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Φάκελοι εφαρμογής</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Δεδομένα</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Θερμοκρασία</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Ενιαία Φωτεινότητα Οθόνης</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Όταν ενεργοποιείται, το ίδιο επίπεδο φωτεινότητας θα εφαρμοστεί σε όλα τα πλάνα τροφοδοσίας Windows όποτε το αλλάζετε.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Η ενημέρωση {0} είναι διαθέσιμη!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Όριο Κορυφαίας Ισχύος</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Όριο Ισχύος APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Η συνεχής κατανάλωση ενέργειας που μπορεί να φτάσει η CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Η κορυφαία κατανάλωση ενέργειας που μπορεί να φτάσει η CPU μέσα σε σύντομο χρονικό διάστημα.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Η μέγιστη στιγμιαία κατανάλωση ενέργειας που μπορεί να φτάσει η CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Η μέγιστη κατανάλωση ισχύος που μπορεί να επιτευχθεί από τη CPU όταν χρησιμοποιούνται πλήρως τόσο η CPU όσο και η GPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Η κορυφαία κατανάλωση ισχύος που μπορεί να φτάσει η CPU με μικρή καθυστέρηση.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Η μέγιστη θερμοκρασία που μπορεί να φτάσει η CPU πριν μειωθεί η συχνότητα και η ισχύς της.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Η επιπρόσθετη μέγιστη ισχύς που μπορεί να κατανεμηθεί στην GPU με βάση την κατανάλωση ισχύος της CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Η επιπρόσθετη ποσότητα ισχύος που μπορεί να κατανεμηθεί στην GPU πέρα από τη βασική κατανάλωση ισχύος.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Η μέγιστη θερμοκρασία που μπορεί να φτάσει η GPU πριν μειωθεί η συχνότητα και η ισχύς της.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Προεπιλογή</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Διάρκεια Βραχυπρόθεσμου Ορίου Ισχύος</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Το χρονικό διάστημα για το οποίο επιτρέπεται στη CPU να χρησιμοποιήσει το Βραχυπρόθεσμο Όριο Ισχύος για ώθηση. Όταν λήξει το Tau, θα χρησιμοποιηθεί το Μακροπρόθεσμο Όριο Ισχύος.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Στόχος Συνολικής Ισχύος Επεξεργαστή Κατά Τη Φόρτιση</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Το σημείο στο οποίο η CPU ενεργοποιεί τη δυναμική προσαρμογή κατανάλωσης ισχύος για την GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Δημιουργία</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Προσθήκη βήματος</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Δημιουργία Δράσης</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Λειτουργία Ισχύος</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Προεπιλογή</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Διακριτή GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Κατάσταση Ισχύος</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Μπαταρία</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Λειτουργία</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Ρυθμός αποφόρτισης</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Διαθέσιμη ενημέρωση!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Επιλογή εικονιδίου</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Αλλαγή εικονιδίου</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Χαμηλό επίπεδο μπαταρίας</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Ρύθμιση</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Εντοπίστηκε Μοντέλο Χαμηλότερης Τροφοδοσίας S0</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Τα Windows αναφέρουν ότι αυτός ο υπολογιστής υποστηρίζει Μοντέρνα Αναμονή. Η χρήση πλάνων τροφοδοσίας εκτός του Ισορροπημένου ενδέχεται να προκαλέσει απρόοπτη συμπεριφορά.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Επιλέξτε ποια Πλάνα Τροφοδοσίας Windows να εφαρμοστούν όταν αλλάζει η Λειτουργία Ισχύος.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Ισχύς</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Επιλογές Πλάνου Τροφοδοσίας στον Πίνακα Ελέγχου Windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Απενεργοποίηση</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Εισαγωγή προφίλ φωτισμού πληκτρολογίου</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Εισαγωγή και εφαρμογή ρυθμίσεων φωτισμού πληκτρολογίου στο παρόν προφίλ.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Διαδρομή</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Μετά από {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Πολλαπλές ενεργοποιήσεις...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ρυθμίσεις Υπερχρονισμού GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Αντιστάθμισμα Βασικής Συχνότητας</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Αντιστάθμισμα Συχνότητας Μνήμης</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Υπερχρονισμός GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Αύξηση απόδοσης με υπερχρονισμό της διακριτής GPU.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Υπερχρονισμός GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Αύξηση απόδοσης με υπερχρονισμό της διακριτής GPU.\n\nΠΡΟΕΙΔΟΠΟΙΗΣΗ: Αυτή η δράση δε θα εκτελεστεί σωστά, εάν η διακριτή GPU δεν είναι διαθέσιμη.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός θυρών</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Άναμμα ή σβήσιμο των φωτεινών ενδείξεων των θυρών στην πίσω πλευρά του υπολογιστή.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός θυρών</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Άναμμα ή σβήσιμο των φωτεινών ενδείξεων των θυρών στην πίσω πλευρά του υπολογιστή.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός λογότυπου καπακιού</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Άναμμα ή σβήσιμο του φωτισμού στο καπάκι του υπολογιστή.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Φωτισμός λογότυπου καπακιού</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Άναμμα ή σβήσιμο του φωτισμού στο καπάκι του υπολογιστή.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Μέγιστο: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Χρήση</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Βασικό Ρολόι</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Θερμοκρασία</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Ανεμιστήρας</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Ρολόι Μνήμης</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Διάστημα ανανέωσης</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Στιγμιαία Εκκίνηση</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Εκκίνηση του υπολογιστή όταν συνδεθεί φορτιστής.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Στιγμιαία Εκκίνηση</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Εκκίνηση του υπολογιστή όταν συνδεθεί φορτιστής.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Αδυναμία αλλαγής Λειτουργίας Ισχύος</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>Η λειτουργία ισχύος {0} δεν είναι διαθέσιμη χωρίς τροφοδοσία ρεύματος.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Αισθητήρες</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Δεν ήταν δυνατή η αλλαγή Κατάστασης Λειτουργίας GPU</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Δοκιμάστε να αλλάξετε την κατάσταση ξανά σε λίγα δευτερόλεπτα, αν δε δείτε το αναμενόμενο αποτέλεσμα.\nΑν η dGPU δεν ανταποκρίνεται καθόλου, παρακαλούμε να κάνετε επανεκκίνηση του υπολογιστή σας.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>Η dGPU είναι απασχολημένη</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>Η dGPU θα αποσυνδεθεί αυτόματα όταν δεν είναι απασχολημένη.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>Η dGPU είναι απασχολημένη ή ο υπολογιστής δεν τροφοδοτείται από μπαταρία</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>Η dGPU θα αποσυνδεθεί αυτόματα όταν δεν είναι απασχολημένη και ο υπολογιστής τροφοδοτείται από μπαταρία.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Οι ρυθμίσεις της Προσαρμοσμένης Λειτουργίας δε θα εφαρμοστούν σωστά όταν εκτελείται το Lenovo Vantage ή οι υπηρεσίες του.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Οι ρυθμίσεις της Προσαρμοσμένης Λειτουργίας δε θα εφαρμοστούν σωστά όταν εκτελείται το Legion Zone ή οι υπηρεσίες του.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU συνδεδεμένη</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPU αποσυνδεδεμένη</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Κατάσταση Λειτουργίας GPU</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Επιλέξτε τον τρόπο λειτουργίας της GPU με βάση τη χρήση και τις συνθήκες ισχύος του υπολογιστή σας.\nΗ εναλλαγή λειτουργιών ενδέχεται να απαιτεί επανεκκίνηση.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Υβριδική Λειτουργία</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Επιτρέπει την εναλλαγή μεταξύ ενσωματωμένης και διακριτής GPU.\nΑπαιτεί επανεκκίνηση.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Διάρκεια</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Ενημερώσεις</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Δυναμική Ώθηση GPU προς CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Αυτή είναι η μέγιστη επιπρόσθετη ισχύς που μπορεί να κατανεμηθεί στη CPU από την GPU με βάση τη χρήση CPU. Όσο υψηλότερη η τιμή, τόσο καλύτερη η απόδοση εφαρμογών που χρησιμοποιούν τη CPU.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Λογότυπο Εκκίνησης</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Προσαρμογή της εικόνας του Λογότυπου Εκκίνησης, που είναι ορατή κατά την εκκίνηση του συστήματος.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Λογότυπο Εκκίνησης</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Το προκαθορισμένο Λογότυπο Εκκίνησης είναι ρυθμισμένο</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Έχει οριστεί προσαρμοσμένο Λογότυπο Εκκίνησης</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Κατάσταση</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Επαναφορά στην προεπιλογή</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Προσαρμογή</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Δράσεις</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Κείμενο Ειδοποίησης</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Εμφάνιση ειδοποίησης</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Προεπιλογή</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Έξυπνο Fn Lock</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Το Fn Lock θα απενεργοποιηθεί προσωρινά όταν πατήσετε τα πλήκτρα Alt, Ctrl ή Shift.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Ανενεργό</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Το προσαρμοσμένο λογότυπο εκκίνησης πρέπει να έχει διαστάσεις ακριβώς {0} pixels.\nΟι υποστηριζόμενες μορφές εικόνων είναι: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Φόρτιση Μπαταρίας Ολονυκτί</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Όταν είναι ενεργοποιημένο, αυτή η συσκευή θα φορτίσει μέχρι 80% κατά τη διάρκεια της νύχτας και θα ολοκληρώσει τη φόρτιση ως το 100% μέχρις ότου να ξεκινήσετε τη χρήση της συσκευής το πρωί.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Φόρτιση Μπαταρίας Ολονυκτί</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Όταν είναι ενεργοποιημένο, αυτή η συσκευή θα φορτίσει μέχρι 80% κατά τη διάρκεια της νύχτας και θα ολοκληρώσει τη φόρτιση ως το 100% μέχρις ότου να ξεκινήσετε τη χρήση της συσκευής το πρωί.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Άκυρο μέγεθος εικόνας.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Άκυρη μορφή εικόνας.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Δεν είναι δυνατή η προσάρτηση διαμερίσματος EFI.elect\n</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Δεν είναι δυνατός ο ορισμός προνομίου UEFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Ανεπαρκής ελεύθερος χώρος στο διαμέρισμα EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Αδυναμία ορισμού προσαρμοσμένου λογότυπου: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Το προκαθορισμένο λογότυπο δεν μπόρεσε να ρυθμιστεί: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Το προκαθορισμένο λογότυπο εκκίνησης ορίστηκε.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Το προσαρμοσμένο λογότυπο εκκίνησης ορίστηκε.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Όνομα δικτύου (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Αντιγραφή παρόντος ονόματος δικτύου</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Παραμονή κενού για κάθε δίκτυο Wi-Fi.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWINFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Μοιράζεται την ταχύτητα ανεμιστήρων, τη θερμοκρασία της μπαταρίας κλπ., με το HWINFO64. Ενδέχεται να χρειαστεί επανεκκίνηση του HWINFO64 μετά την αλλαγή αυτής της επιλογής.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Ενσωματώσεις</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Ρυθμίσεις</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Πληροφορίες</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Φάκελος Λήψεων</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Άνοιγμα φακέλου Λήψεων</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Λήψη</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Άνοιγμα README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Προεπιλογή</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Ανανέωση</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Διαγραφή</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Περίοδος (λεπτά)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Μηδενίζει τον μετρητή \"Λειτουργία με την μπαταρία από\" στον τομέα της μπαταρίας όταν το σύστημα κάνει επανεκκίνηση.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Μηδενισμός \"Λειτουργία με την μπαταρία από\" στην εκκίνηση</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Κλείσιμο Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Άνοιγμα Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Εκτέλεση ήσυχα</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Αναμονή μέχρι να τελειώσει</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Εκτελεί εφαρμογές κονσόλας, χωρίς τη δημιουργία παραθύρου κονσόλας.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Αναμένει μέχρι το πρόγραμμα ή το script τελειώσει την εκτέλεσή του</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>'Όταν είναι σε σίγαση, όλες οι ενεργές συσκευές εξόδου ήχου θα σιγήσουν.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ηχείο</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Ελαχιστοποίηση στο δίσκο εικονιδίων</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Πάντα ελαχιστοποιεί στο δίσκο εικονιδίων αντί στην μπάρα εργασίας.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Λειτουργίες Ισχύος Windows</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Εναλλαγή στην Προσαρμοσμένη Λειτουργία με το Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Επιτρέψτε γρήγορη εναλλαγή στην Προσαρμοσμένη Λειτουργία με το Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Συγχρονισμός Λειτουργίας Ισχύος</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Αυτόματη αλλαγή Πλάνου Τροφοδοσίας Windows ή Λειτουργίας Ισχύος Windows όταν αλλάζει η Λειτουργία Ισχύος.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Λειτουργίες Ισχύος Windows</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Επιλέξτε Λειτουργία Ισχύος Windows για εφαρμογή όταν αλλάζει η Λειτουργία Ισχύος.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Σφάλμα κατά την ανάγνωση πληροφοριών συσκευής.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Μακροεντολή</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Μακροεντολή</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Επανάληψη</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Αγνόηση καθυστερήσεων</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Εκκαθάριση</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Εγγραφή</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Τέλος εγγραφής</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Χωρίς επανάληψη</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Το Lenovo Legion Toolkit πρέπει να εκτελείται για να λειτουργήσουν οι μακροεντολές.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Ενεργοποίηση</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Μπορείτε να εγγράψετε μια σειρά από πατήματα πλήκτρων και να τα επικαλεστείτε μέσω του αριθμητικού πληκτρολογίου σας.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Μακροεντολή</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ενεργοποίηση ή απενεργοποίηση μακροεντολών.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Διακοπή εάν πατήθηκε άλλο πλήκτρο</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Απόκρυψη</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Απόκρυψη όλων</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Συσκευές</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Αποεπιλογή όλων</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Επιλογή όλων</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Μόνο πληκτρολόγιο</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Πλήκτρα πληκτρολογίου και ποντικιού</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Όλες οι είσοδοι</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Επιλογές εγγραφής</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Η εγγραφή θα ξεκινήσει σε 3 δευτερόλεπτα...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Εγγραφή...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Πατήστε ESC για τέλος.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Εμφάνιση μόνο επιλεγμένων συσκευών</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Εμφάνιση μόνο αφαιρούμενων συσκευών</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Εμφάνιση μόνο συνδεδεμένων συσκευών</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>CLI</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Ενεργοποίηση Διεπαφής Γραμμής Εντολών που επιτρέπει έλεγχο από τη γραμμή εντολών.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Προσθήκη CLI στο PATH</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Προσθήκη CLI στη μεταβλητή περιβάλλοντος PATH του χρήστη.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Θερμοκρασία</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Επιλέξτε μονάδες για τους αισθητήρες θερμοκρασίας.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Το Lenovo Hotkeys εκτελείται στο παρασκήνιο.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Το Legion Zone εκτελείται στο παρασκήνιο.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Το Lenovo Vantage ή/και το ImController εκτελούνται στο παρασκήνιο.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Να εμφανίζονται ειδοποιήσεις σε όλες τις συνδεδεμένες οθόνες της συσκευής σας.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Ειδοποιήσεις σε όλες τις οθόνες</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Έλεγχος</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Έλεγχος για ενημερώσεις...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>'Έλεγχος για ενημερώσεις</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Ενημέρωση</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>Φτάσατε στο όριο χρήσης API, παρακαλούμε προσπαθήστε ξανά αργότερα.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Αποτυχία ελέγχου για ενημερώσεις</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Κάτι πήγε στραβά, παρακαλούμε προσπαθήστε ξανά αργότερα.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Δε βρέθηκαν ενημερώσεις</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Αυτόματος έλεγχος για ενημερώσεις</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Δε βρέθηκε ο κατάλογος ενημερώσεων</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Δοκιμάστε να βρείτε ενημερώσεις από την άλλη πηγή.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Κάτι πήγε στραβά</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Ελέγξτε εάν η σύνδεσή σας στο διαδίκτυο λειτουργεί.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Αναπαραγωγή ήχου</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Υποστηρίζονται κοινές μορφές μουσικής όπως wav ή mp3.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Γρήγορη Δράση</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Εκτελεί μια αποθηκευμένη γρήγορη δράση.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\" xml:space=\"preserve\">\n    <value>Ειδοποίηση πάντα στην κορυφή</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\" xml:space=\"preserve\">\n    <value>Τοποθέτηση ειδοποιήσεως πάντα στην κορυφή.\nΔεν επηρεάζει άλλα παράθυρα πλήρους οθόνης, όμως δε θα είναι εφικτό το κλικ στις ειδοποιήσεις.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.es.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit (LLT)</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Revisión</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Última versión en GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Enlaces</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Sitio web del proyecto en GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Librerías de terceros</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Acerca de</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Traducido al español por: M.A.G.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Versión</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Añadir</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Añadir nueva</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Cargar dispositivos USB, cuando el equipo esté apagado o en modo de suspensión/hibernación.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>USB siempre encendido</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Cargar dispositivos USB, cuando el equipo esté apagado o en modo de suspensión/ hibernación.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>USB siempre encendido</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Aplicar</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Aplicar y cerrar</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit deberá estar ejecutándose para que funcionen las acciones automáticas.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Activar</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Ninguna acción definida. Haga clic en \"Añadir nueva\" para crear una nueva acción.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Al activar estas acciones, se ejecutarán automáticamente. Cada vez que el estado cambie, se evaluarán las acciones de arriba a abajo.\nSólo se ejecutarán las acciones que coincidan con el estado actual.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Acciones</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nombre...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Añadir nuevo</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Ninguna acción definida. Haga clic en \"Añadir nueva\" para crear una nueva acción rápida.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Haciendo clic derecho en el icono de la bandeja, se mostrará un menú con las acciones rápidas disponibles.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Acciones rápidas</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nombre...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Renombrar</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>¡Todos los cambios revertidos!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Revertido</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>¡Los cambios se han guardado correctamente!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Guardado</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatización</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Añadir paso</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Configurar</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exclusivo</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>No ejecutar más acciones al iniciar esta acción.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Ejecutar ahora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Completado con errores.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Ejecutar ahora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>¡Completado con éxito!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Ejecutar ahora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Ejecutando...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} paso</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} pasos</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Aplicaciones</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Al amanecer</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Al atardecer</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>A las {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Modo de alimentación</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Sin nombre</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Detecta automáticamente cuando se ejecutan determinados juegos y ajusta el rendimiento de la CPU y la GPU. Las temperaturas y el ruido del ventilador pueden aumentar.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Activar el motor de Inteligencia artificiaI</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ajustes del modo equilibrado</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Elegir como se carga la batería.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo de batería</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Elegir como se carga la batería.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo de batería</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Conectada, cargando...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Conectada, no cargando</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Temperatura actual de la batería.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura de la batería</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacidad actual de la batería.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacidad actual</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Número de ciclos de carga/descarga.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Contador de ciclos</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacidad según el diseño de la batería.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacidad según diseño</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Velocidad de carga (+) o descarga (-) de la batería.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Índice de descarga</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Tiempo restante estimado: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Estimación de tiempo...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Fecha del primer uso</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Cuando se utilizó la batería por primera vez.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacidad con carga completa de la batería.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacidad de carga total</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Cargador de bajo consumo conectado</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Cuando se fabricó la batería.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Fecha de fabricación</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Tiempo transcurrido desde la última conexión del portátil a la corriente eléctrica.\nEsta hora puede no ser correcta si el portátil se ha cargado mientras estaba suspendido o apagado.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>En batería desde</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Batería</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>ºC</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Cerrar</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Azul</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Rojo</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Seleccionar el modo de funcionamiento de la GPU, según el uso y las condiciones de energía de su equipo.\nEl cambio de modo puede requerir un reinicio.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Cambiando a {0} requiere un reinicio. ¿Desea reiniciar ahora?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Se requiere un reinicio</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo de trabajo de la GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Acciones rápidas</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Continuar</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Copiar todo</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Gráficos</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Otros</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Alimentación</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Inicio</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desactivar la GPU dedicada si está activa innecesariamente.\n\nAVISO: Esta acción no se ejecutará correctamente, si la pantalla interna está apagada o el modo híbrido no está activo.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Desactivar la GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Añadir una demora antes de ejecutar el siguiente paso.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Demora</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Eliminar</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Versión de BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Texto copiado al portapapeles.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" copiado(s) al portapapeles.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>¡Copiado(s)!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Dispositivo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Soporte de Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Tipo de máquina</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Fabricante</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Modelo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Número de serie</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Acerca de su dispositivo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Fecha de finalización</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Fecha de inicio</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garantía</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Activo</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Desactivada</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Inactiva</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Terminar aplicaciones</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Desactivar la GPU dedicada si está activa innecesariamente.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Un monitor está conectado a la GPU nVidia.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Ningún proceso</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Estado del rendimiento</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Desconocido</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Procesos</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Reiniciar la GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU dedicada</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Cambiar el brillo de la pantalla integrada.\nLos modos de energía modifican el brillo en algunos dispositivos. Asegúrese de realizar este paso en último lugar, si algo no funciona bien.\n\nAVISO: Esta acción no se ejecutará correctamente, si la pantalla interna está apagada.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Brillo de pantalla</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Donar con</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>El desarrollo y mantenimiento de Lenovo Legion Toolkit lleva mucho tiempo. Si le gusta este programa, puede apoyar su futuro, donando la cantidad que desee.\n\nHaga clic en el logo o escanee el código QR para donar con PayPal.\n\n¡Gracias anticipadas!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Donar</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Editar</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Desmarcar las tasas de actualización que no desea utilizar al usar las teclas Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Asegúrese de que la pantalla del portátil está encendida. Lenovo Legion Toolkit no puede cargar las tasas de refresco de una pantalla que no está encendida.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>No se han encontrado tasas de refresco</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Excluir tasas de refresco</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Salir</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Exportar</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Utilizar la GPU integrada sólo si está en modo batería. \nUtilizar la GPU integrada y dedicada si el adaptador de CA está conectado. Si se conecta un adaptador no estándar, el sistema cambiará sólo al modo híbrido-iGPU.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Modo híbrido-automático</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>El cambio a/desde este modo requiere un reinicio.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Utilizar sólo la GPU dedicada. Este modo proporciona el mejor rendimiento gráfico, pero aumenta el consumo de energía.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Modo dGPU (GPU dedicada)</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Las GPUs integrada y dedicada están activadas.\nEl sistema alternará automáticamente entre ellas, en función de sus necesidades.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Modo híbrido</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Este modo sólo surte efecto si la GPU dedicada no está funcionando.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Utilizar sólo la GPU integrada. Este modo minimiza el consumo de energía y el ruido.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Modo híbrido-iGPU sólo</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Acerca de los modos de trabajo de la GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>ºF</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>Unidad de control de potencia </value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Sensor de la CPU</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Velocidad del ventilador</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>Revoluciones por minuto</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Encender el portátil al abrir la tapa.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Voltear para iniciar</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Encender el portátil al abrir la tapa.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Voltear para iniciar</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Utilizar las funciones secundarias de las teclas F1-F12 sin pulsar la tecla Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueo de la tecla Fn</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Utilizar las funciones secundarias de las teclas F1-F12 sin pulsar la tecla Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueo de la tecla Fn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>¡ATENCIÓN!\nAlgunos portátiles pueden aceptar valores más bajos de los indicados, pero tenga cuidado. Esta opción puede dar lugar a un comportamiento impredecible, así que si no está seguro de lo que está haciendo, déjelo en 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Compensación mínima</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>¡ATENCIÓN!\nAlgunos portátiles pueden aceptar valores más altos de los indicados, pero tenga cuidado. Esta opción puede dar lugar a un comportamiento impredecible, así que si no está seguro de lo que está haciendo, déjelo en 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Compensación máxima</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>No cambiar las opciones siguientes a menos que sepa realmente lo que está haciendo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Avanzado</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Límite de potencia a largo plazo (carga mixta)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Límite de potencia a largo plazo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Límite de potencia a corto plazo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Límite de temperatura de la CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>No se ha podido aplicar la configuración</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>No se ha podido cargar la configuración</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>La velocidad del ventilador no está determinada estrictamente por un sensor de temperatura. Subirá o bajará, dependiendo del indicador más alto de temperatura de la CPU, la GPU y el disipador. Los valores exactos aparecerán al pasar el ratón por encima de cada paso.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Curva del ventilador</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>¡AVISO!\nEl uso prolongado de esta opción degradará los ventiladores disminuyendo su longevidad.\nEn serio, ¡tenga cuidado con esta opción!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Velocidad máxima del ventilador</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventiladores</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Potencia gráfica total configurable</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Mejora dinámica</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Límite de temperatura de la GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ajustes del modo personalizado</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activar el rango dinámico alto (HDR) en la pantalla interna.\n\nAVISO: Esta acción no se ejecutará correctamente si la pantalla interna está apagada.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Activar el rango dinámico alto (HDR) en la pantalla interna.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>El uso del HDR está bloqueado por la configuración de Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importar</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Este dispositivo no es compatible con Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>No se han encontrado teclados compatibles</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación del teclado</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>La retroiluminación del teclado no puede ser controlada aquí, si Lenovo Vantage o sus servicios están funcionando.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage o sus servicios se están ejecutando</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Acerca de</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Acciones</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Batería</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Cuadro de control</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Donar</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Teclado</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Descargas</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Ajustes</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>¡Actualización disponible!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>¡Actualización {0} disponible!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Mover abajo</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Mover arriba</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Adaptador de corriente alterna conectado</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Adaptador de corriente alterna conectado (bajo consumo)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Adaptador de corriente alterna desconectado</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Cámara apagada</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Cámara encendida</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Bloqueo de mayúsculas desactivado</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Bloqueo de mayúsculas activado</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Bloqueo tecla Fn desactivado</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Bloqueo tecla Fn activado</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Micrófono apagado</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Micrófono encendido</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Bloqueo numérico desactivado</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Bloqueo numérico activado</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Retroiluminación {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Brillo {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Perfil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Panel táctil apagado</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Panel táctil encendido</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Retroiluminación {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Adaptador de corriente alterna</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Cámara </value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Bloqueo de mayúsculas y bloqueo numérico</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Desactivar las notificaciones de las acciones de las teclas Fn como el silenciamiento del micrófono.\nActivar esta opción si tiene conflictos con las aplicaciones en pantalla completa.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>No mostrar notificaciones</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Bloqueo de tecla Fn</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Retroalimentación del teclado</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Micrófono </value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Posición </value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Modo de alimentación </value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Tasa de refresco</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Tecla inteligente</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Notificaciones</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Bloqueo del panel táctil</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Aceptar</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Abrir</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Mejorar el tiempo de respuesta de la pantalla integrada.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Aumentar velocidad tiempo de respuesta del monitor (OverDrive)</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Mejorar el tiempo de respuesta de la pantalla integrada.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Aumentar velocidad tiempo de respuesta del monitor (OverDrive)</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} descargado(s)</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Descarga completa</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Algo salió mal</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>El servidor ha devuelto el código 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>El fichero parece haber desaparecido</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Comprobar si su conexión a internet está funcionando.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Algo salió mal</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>¡Actualización disponible!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Este paquete tiene más de un año.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Versión</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>A continuación encontrará una lista de programas compatibles con su portátil.\nAsegúrese de instalar siempre los paquetes correctos.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Comprobar si el tipo de máquina y el Sistema Operativo están configurados correctamente.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Algo salió mal</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Modificar el orden, filtrar los resultados, ocultar paquetes o actualizar la lista detendrá la descarga. ¿Desea continuar?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Descarga en curso</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtro...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Tipo de máquina</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Sistema operativo</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primario (recomendado)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Igual que Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Secundario</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Igual que en la página web de soporte PC de Lenovo</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Categoría</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Fecha</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Nombre</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Origen</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Descargas</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Pegar</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Seleccionar modo de rendimiento.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo de alimentación</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Seleccionar el modo de rendimiento.\nPuede cambiar de modo con Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Ajustes</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo de alimentación</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>El modo de alimentación seleccionado puede no funcionar correctamente sin el adaptador de corriente alterna conectado.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Predefinido</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Planes de energía de Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar la retroiluminación predefinida del teclado. </value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación del teclado</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Brillo</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Predefinido 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Predefinido 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Predefinido 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Predefinido 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zona 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zona 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zona 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zona 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efecto</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Velocidad</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Léame</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Actualizar</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Cambiar la tasa de refresco de la pantalla integrada.\n\nAVISO: Esta acción no se ejecutará correctamente, si la pantalla interna está apagada.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tasa de refresco</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Cambiar la tasa de refresco de la pantalla integrada.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Tasa de refresco</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Renombrar</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Reiniciar más tarde</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Reiniciar ahora</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Revertir</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumentos</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Ruta del ejecutable</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ejecutar un script o un programa.\nAsegúrese primero de que su script se ejecuta correctamente.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ejecutar</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Guardar</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Guardando...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Elija una o varias acciones rápidas para desplazarse por ellas.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Ninguna acción rápida definida.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Mostrar está aplicacion</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Cambiar el color característico de la aplicación.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Color característico</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Minimizar en la bandeja al iniciar la sesión de Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Ejecución automática</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Es posible que Legion Zone no se haya desactivado correctamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>No se puede desactivar Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Desactivar Legión Zone y su servicio, sin desinstalarlo.\nSe recomienda reiniciar después de cambiar esta opción.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Desactivar Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Es posible que las teclas de acceso rápido de Lenovo no se hayan desactivado correctamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>No se pueden desactivar las teclas de acceso rápido de Lenovo</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Desactivar las teclas de acceso rápido de Lenovo y su servicio, sin desinstalarlo.\nSi se desactiva, esta aplicación controlará los accesos directos Fn.\nSe recomienda reiniciar después de cambiar esta opción.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Desactivar las teclas de acceso rápido de Lenovo</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage y/o ImController pueden no haber sido desactivados correctamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>No se ha podido desactivar Lenovo Vantage y/o ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Desactivar Lenovo Vantage e ImController sin desinstalarlos.\nSe recomienda reiniciar después de cambiar esta opción.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Desactivar Lenovo Vantage e ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Es posible que Legion Zone no se haya activado correctamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>No se ha podido activar Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Es posible que las teclas de acceso rápido de Lenovo no se hayan activado correctamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>No se pueden activar las teclas de acceso rápido de Lenovo</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage y/o ImController pueden no haber sido activados correctamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>No se ha podido activar Lenovo Vantage y/o ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Puede excluir las tasas de refresco, para que el acceso rápido Fn+R sea más útil.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Excluir tasas de refresco</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Seleccionar idioma.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Idioma</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Minimizar siempre en la bandeja. Haciendo clic derecho en el icono de la bandeja, podrá cerrar el programa.\n</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimizar al cerrar</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Configurar qué notificaciones se muestran</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Notificaciones</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Planes de energía de Windows</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Asignar acción rápida al presionar Fn+F9 dos veces.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Acción secundaria de la tecla inteligente</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Asignar acción rápida al presionar Fn+F9 una vez.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Acción de la tecla inteligente</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Establecer un tema claro, un tema oscuro o seguir con la configuración del sistema.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Ajustes</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar el brillo de la retroiluminación del teclado.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Brillo de la retroiluminación del teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Añadir efecto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>No se ha podido aplicar el perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>No se ha podido aplicar el perfil de iluminación.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Brillo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Desmarcar todas las zonas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Efectos</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Perfil no puede ser importado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>No se pudo exportar el perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Perfil no se puede importar</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>No se pudo importar el perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Ningún efecto añadido.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Restablecer los valores predefinidos</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Seleccionar todas las zonas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Cambiar la disposición del teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Dirección</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Color</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Colores</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Dirección</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Efecto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Este efecto se aplicará a todo el teclado y sustituirá a todos los demás efectos.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Velocidad</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Añadir efecto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Editar efecto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar el perfil de retroiluminación del teclado.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Perfil de retroiluminación del teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Cualquier tecla</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zonas</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Al amanecer</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Atardecer</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Hora</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Permitir cambiar entre la GPU integrada y la GPU dedicada.\nRequiere un reinicio.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>El cambio de modo híbrido requiere un reinicio. ¿Desea reiniciar ahora?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Se requiere un reinicio</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo híbrido</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desactivar el panel táctil.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueo del panel táctil</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Desactivar el panel táctil.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueo del panel táctil</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Intentar de nuevo</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Ha ocurrido una excepción inesperada: \n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Sin nombre</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Puede continuar bajo su propio riesgo, pero tenga en cuenta que algunas características pueden no estar disponibles y/o no funcionar correctamente.\n\nEl registro de sucesos se activará automáticamente, si decide continuar.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Consultar la página del proyecto en GitHub para obtener más información.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Carpeta de registros</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Tipo</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit no ha sido testeado en su dispositivo.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Modelo</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Dispositivo no compatible</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Vendedor</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Actualización</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Actualización disponible</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Novedades</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar el brillo de la retroiluminación del teclado.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación del teclado</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Puede cambiar el brillo usando Fn+Espacio</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación del teclado</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desactivar la tecla Windows del teclado integrado.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueo de la tecla Windows</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Sólo funciona en el teclado integrado.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueo de la tecla Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Si</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Micrófono</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Si está desactivado, los micrófonos se silencian.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Micrófono</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Si está desactivado, los micrófonos se silencian.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Resolución</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Cambiar resolución de la pantalla integrada.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Resolución</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Cambiar la resolución de la pantalla integrada.\n\nAVISO: Esta acción no se ejecutará correctamente, si la pantalla interna está apagada.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>Puntos por pulgada (DPI)</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Cambiar la resolución de la pantalla integrada.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Puntos por pulgada (DPI)</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Cambiar la resolución de la pantalla integrada.\n\nAVISO: Esta acción no se ejecutará correctamente, si la pantalla interna está apagada.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Pantalla</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación del teclado</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Puede encender o apagar la retroiluminación usando Fn+Espacio.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación del teclado</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Encender o apagar la retroiluminación.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>No se han encontrado descargas coincidentes</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Mostrar sólo actualizaciones</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Personalizar el panel de control</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Cargar</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Crear un grupo</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Nombre</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Es posible que algunas funciones no aparezcan en el panel de control en función del estado y la configuración del dispositivo.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Personalizar</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Apagar las pantallas</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Apaga todas las pantallas disponibles.\nAl mover el ratón o pulsar el teclado se activarán las pantallas.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Apagar</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Apagar las pantallas</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Apagar todas las pantallas disponibles.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Editar el nombre del grupo</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Nombre</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Logo Legion encendido</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Logo Legion apagado</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Puertos retroiluminados encendidos</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Puertos retroiluminados apagados</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Se requiere un reinicio</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Se requiere un apagado</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Se recomienda un reinicio</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Guardar y cerrar</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Preajuste de modo personalizado</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activa el preajuste del modo personalizado.\nEsta configuración sólo tiene efecto si el modo personalizado está activado.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Nombre del preajuste</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Nombre</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Preajuste activo</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Carpetas de aplicaciones</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Datos</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Un solo brillo de pantalla</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Si está activado, se aplicará el mismo nivel de brillo a todos los planes de energía de Windows cada vez que lo cambie.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>¡Actualización {0} disponible!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Límite de potencia máxima</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Límite de potencia APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>El consumo continuo de energía que puede alcanzar la tarjeta gráfica.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>El consumo máximo de energía que puede alcanzar la tarjeta gráfica en un breve espacio de tiempo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>El consumo máximo instantáneo que puede alcanzar la tarjeta gráfica.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>El consumo máximo de energía que puede alcanzar la CPU, si ésta y la GPU se utilizan al máximo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>El consumo máximo de energía que puede alcanzar la CPU con un retardo menor.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>La temperatura máxima que puede alcanzar la CPU antes de que se reduzca la frecuencia y la potencia.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>La potencia máxima adicional que puede asignarse a la GPU, en función del consumo de energía de la CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>La cantidad adicional de energía que puede asignarse a la GPU además del consumo básico.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>La temperatura máxima que puede alcanzar la GPU antes de que se reduzca la frecuencia y la potencia.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Predefinido</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Duración límite de potencia a corto plazo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>La cantidad de tiempo que se permite a la CPU aumentar y utilizar el límite de potencia a corto plazo. Cuando Tau expira, se utiliza el límite de potencia a largo plazo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Potencia total del procesador en corriente alterna</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>El punto en el que la CPU activa el ajuste dinámico de consumo de energía de la GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Crear</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Añadir paso</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Crear acción</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Modo de alimentación</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Preestablecido</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>GPU dedicada</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Estado de energía</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Batería</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Modo</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Índice de descarga</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>¡Actualización disponible!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Seleccionar icono</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Cambiar icono</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Nivel bajo de batería</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Configurar</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>S0 Modelo de menor potencia detectado</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows informa de que este dispositivo soporta Modern Standby. El uso de planes de energía distintos a Equilibrado puede provocar un comportamiento inesperado.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Seleccione Planes de energía de Windows para aplicar al cambiar el modo de energía.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Alimentación</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Opciones del Plan de energía en el Panel de Control de Windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Desactivado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Importar perfil de retroiluminación del teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Importar y aplicar la configuración de retroiluminación al perfil actual.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Ruta</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Después de {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Múltiples activadores...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ajustes de overclocking de la GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Compensación de frecuencia del núcleo</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Compensación de frecuencia de la memoria</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Overclock de la GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Aumentar el rendimiento haciendo overclocking en la GPU dedicada.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Overclock de la GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aumentar el rendimiento haciendo overclocking en la GPU dedicada.\n\nAVISO: Esta acción no se ejecutará correctamente si no se dispone de una GPU externa.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación de puertos</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Activa o desactiva la retroiluminación de los puertos de la parte posterior del portátil.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación de puertos</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activa o desactiva la retroiluminación de los puertos de la parte posterior del portátil.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación del logo del panel</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Activa o desactiva la retroiluminación de la tapa del portátil.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Retroiluminación del logo del panel</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Enciende o apaga la retroiluminación de la tapa del portátil.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Máximo: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>Unidad de control de potencia (CPU)</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Uso</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Reloj del procesador</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Ventilador</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>Unidad de procesamiento gráfico (GPU)</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Reloj de memoria</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Intervalo de actualización</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Inicio inmediato</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Encender el portátil cuando haya un cargador conectado.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Inicio inmediato</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Encender el portátil cuando haya un cargador conectado.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>No se puede cambiar el modo de energía</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>El modo de energía {0} no está disponible sin alimentación de corriente eléctrica.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensores</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>No se puede cambiar el modo de trabajo de la GPU</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>En un par de segundos intentar cambiar el modo de nuevo, si no obtiene el resultado esperado.\nSi la dGPU no responde del todo, reinicie su portátil.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>La dGPU está actualmente en uso</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>La dGPU se desconectará automáticamente si no está en uso.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>La dGPU está actualmente en uso o el portátil no está alimentado por batería</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>La dGPU se desconectará automáticamente si no está en uso y el portátil está alimentado por batería.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Los ajustes del modo personalizado no se aplicarán correctamente, si Lenovo Vantage o sus servicios se están ejecutando.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Los ajustes del modo personalizado no se aplicarán correctamente, si Legion Zone o sus servicios se están ejecutando.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU conectada</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPU desconectada</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo de trabajo de la GPU</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Seleccionar el modo de funcionamiento de la GPU, según el uso y las condiciones de energía de su equipo.\nEl cambio de modo puede requerir un reinicio.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo híbrido</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Permitir cambiar entre la GPU integrada y la GPU dedicada.\nRequiere un reinicio.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Duración</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Actualizaciones</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Mejora dinámica de la GPU a la CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Es la máxima potencia adicional que puede asignarse a la CPU desde la GPU, en base al uso de ésta. Cuanto mayor sea el valor, mejor será el rendimiento de las aplicaciones que utilizan la CPU.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Logo de arranque</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Personalizar la imagen del logo de arranque, visible durante el inicio del sistema.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Logo de arranque</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Logo de arranque predefinido está configurado</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Logo de arranque personalizado está configurado</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Estado</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Volver al valor predefinido</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Personalizar</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Acciones</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Texto de notificación</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mostrar notificación</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Predefinido</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Bloqueo Fn inteligente</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>El bloqueo Fn se desactivará temporalmente al pulsar las teclas Mayús, Ctrl o Alt.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Apagado</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>El logo de arranque personalizado debe tener un tamaño exacto de {0} píxeles. Los formatos soportados son: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Carga nocturna de la batería</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Si está activado y enchufa este dispositivo durante la noche, cargará al 80% y terminará de cargarse al 100% cuando lo utilice por la mañana.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Carga nocturna de la batería</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Si está activado y enchufa este dispositivo durante la noche, cargará al 80% y terminará de cargarse al 100% cuando lo utilice por la mañana.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Tamaño de imagen no válido.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Formato de imagen no válido.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>No se puede montar la partición EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>No se puede establecer el privilegio UEFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>No hay suficiente espacio libre en la partición EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>No se ha podido establecer el logo personalizado: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>No se ha podido establecer el logo predefinido: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Logo de arranque predefinido.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Logo de arranque personalizado.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Nombre de la red (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Copiar el nombre de la red actual</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Dejar vacío para cualquier red Wi-Fi.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Compartir la velocidad del ventilador, la temperatura de la batería, etc... con HWiNFO64. Puede que tenga que reiniciar HWiNFO64 después de cambiar esta opción.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Integraciones</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Ajustes</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Información</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Carpeta de descargas</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Abrir carpeta de descargas</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Descargar</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Abrir README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Predefinido</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Actualizar</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Eliminar</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Período (minutos)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Restablece el contador de \"En batería desde\" en la sección de batería al reiniciar el sistema.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Restablecer \"En batería desde\" al iniciar</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Apagar el Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Encender el Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Ejecutar silenciosamente</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Esperar a que finalice</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Ejecutar aplicaciones de consola, sin crear una ventana de consola.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Esperar a que el programa o script termine de ejecutarse</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Al silenciar, se silenciarán todos los dispositivos de salida de audio activos.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Altavoz</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Minimizar en la bandeja</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Minimizar siempre en la bandeja en lugar de en la barra de tareas.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Modos de energía de Windows</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Cambiar al modo personalizado con Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Permitir cambiar rápidamente al modo personalizado con Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Sincronización del modo de alimentación</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Cambiar automáticamente el plan de energía o el modo de energía de Windows al cambiar los modos de energía.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Modos de energía de Windows</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Seleccionar el modo de energía de Windows para aplicarlo al cambiar el modo de energía.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Se ha producido un error al leer la información del dispositivo.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Repetir</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Ignorar demoras</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Borrar</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Registro</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Detener grabación</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>No repetir</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit deberá estar ejecutándose para que funcionen las macros.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Activar</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Puede grabar series de pulsaciones de teclas y utilizarlas con el teclado numérico.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activar o desactivar macros.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Interrumpir si se ha pulsado otra tecla</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Ocultar</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Ocultar todo(s)</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Dispositivos</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Desmarcar todo(s)</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Seleccionar todo(s)</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Sólo teclado</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Teclado y botones del ratón</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Todas las entradas</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Opciones de grabación</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>La grabación comenzará en 3 segundos...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Grabando...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Pulse ESC para detener.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Mostrar sólo dispositivos seleccionados</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Mostrar sólo dispositivos extraíbles</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Mostrar sólo dispositivos conectados</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>Interfaz de línea de comandos (CLI)</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Activar la interfaz que permite el control desde la línea de comandos.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Añadir la interfaz de línea de comandos a la ruta</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Añadir la interfaz de línea de comandos a la variable de entorno ruta.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Seleccionar unidades para los sensores de temperatura.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value> Las teclas de acceso rápido de Lenovo se están ejecutando en segundo plano.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone se está ejecutando en segundo plano.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage y/o ImController se está(n) ejecutando en segundo plano.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Mostrar notificación en todas las pantallas conectadas a su dispositivo.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Notificación en todas las pantallas</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Comprobar</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Buscando actualizaciones....</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Buscar actualizaciones</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Actualización</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>Se ha alcanzado el límite de velocidad API, inténtelo más tarde.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Error al buscar actualizaciones</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Algo ha ido mal, inténtelo más tarde.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Ninguna actualización disponible</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Buscar actualizaciones automáticamente</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Catálogo de actualización no encontrado</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Intentar obtener actualizaciones de la otra procedencia.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Algo salió mal</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Comprobar si funciona su conexión a internet.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Reproducir sonido</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Se admiten formatos habituales de música como WAV o MP3.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Acción rápida</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ejecutar una acción rápida guardada.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\" xml:space=\"preserve\">\n    <value>Notificaciones siempre visibles</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\" xml:space=\"preserve\">\n    <value>Poner siempre las notificaciones visibles.\nNo afectará a otras ventanas a pantalla completa, pero no podrá hacer clic en las notificaciones.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.fr.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Dernière version sur GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Liens</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Site web du projet sur GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Bibliothèques tierces</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>À propos</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Traductions en français fournies par EliotAku, Georges de Massol, Rigbone et ZeroDegree.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Ajouter</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Ajouter une Action</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Charger les périphériques USB, lorsque l'appareil est éteint ou en veille ou en veille prolongée.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Always on USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Charger les périphériques USB, lorsque l'appareil est éteint ou en veille ou en veille prolongée.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Always on USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Appliquer</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Appliquer et fermer</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit doit être en cours d'exécution pour que les actions automatiques fonctionnent.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Activer</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Aucune Action définie. Cliquer sur \"Ajouter une Action\" pour créer une nouvelle Action.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Si elles sont activées, ces actions seront exécutées automatiquement. Lorsque l'état change, toutes les actions sont évaluées de haut en bas.\nSeules les actions qui correspondent à l'état actuel seront exécutées.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Actions</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nom...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Ajouter une Action</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Aucune Action Rapide définie. Cliquer sur \"Ajouter une Action\" pour créer une nouvelle Action Rapide.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Les actions rapides sont disponibles dans le menu du clic droit de l'icône de la barre des taches.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Actions rapides</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nom...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Renommer</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Toutes les modifications ont été rétablies !</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Réinitialisée</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Les modifications ont été enregistrées avec succès !</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Sauvegardé</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatisation</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Ajouter une étape</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Configurer</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exclusif</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Ne pas exécuter d'autres actions lorsque cette action est exécutée.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Exécuter maintenant</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Terminé avec des erreurs.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Exécuter maintenant</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Terminé avec succès!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Exécuter maintenant</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>En cours...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} étape</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} étapes</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Applications</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Au lever du soleil</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Au coucher du soleil</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>À {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Mode d'alimentation</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Sans nom</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Détecte automatiquement lorsque certains jeux sont en cours et ajuste les performances du CPU et du GPU. \nLa température et le bruit des ventilateurs peuvent augmenter.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Activer l'AI Engine</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Paramètres de mode équilibré</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Choisir comment la batterie est chargée.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mode batterie</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Choisir comment la batterie est chargée.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Mode batterie</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Appareil branché, en charge...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Appareil branché, pas de charge</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Température actuelle de la batterie.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Température de la batterie</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacité actuelle de la batterie.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacité actuelle</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Nombre des cycles de charge/décharge.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Nombre de cycles</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacité de la batterie annoncée par le fabricant.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacité annoncée</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Vitesse à laquelle la batterie est chargée (+), ou déchargée (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Vitesse de charge/décharge</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Temps restant estimé : {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Estimation du temps...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Date de la première utilisation</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Date de la première utilisation de la batterie.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacité de la batterie pleinement chargée.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacité à pleine charge</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Chargeur de faible puissance connecté</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Date de fabrication de la batterie.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Date de fabrication</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Temps écoulé depuis la dernière connexion au secteur.\nCette valeur peut être imprécise si l'appareil a été chargé en veille ou éteint.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Sur batterie depuis</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Batterie</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Annuler</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Fermer</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Bleu</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Vert</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Rouge</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Sélectionne le mode de fonctionnement du GPU en fonction de l'utilisation et des conditions d'alimentation de votre ordinateur.\nLe changement de mode peut nécessiter un redémarrage.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Changer pour {0} nécessite un redémarrage. Voulez-vous redémarrer maintenant ?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Redémarrage nécessaire</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Mode de fonctionnement du GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Actions rapides</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Continuer</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Tout copier</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Graphiques</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Autre</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Alimentation</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Accueil</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Désactiver le GPU dédié si actif inutilement.\n\nATTENTION : Cette action ne fonctionnera pas correctement, si l'écran intégré est éteint ou si le mode Hybride n'est pas actif.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Désactiver le GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajoutez un délai avant d'exécuter l'étape suivante.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Délai</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Supprimer</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Version du BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Texte copié dans le presse-papier.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" copié dans le presse-papiers.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Copié!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Appareil</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Support Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Type de Machine</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Fabricant</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Modèle</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>N° de série</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>À propos de l'appareil</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Date de fin</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Date de début </value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garantie</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Actif</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Désactiver</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Inactif</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Fermer les applications</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Désactive le GPU dédié s'il est actif inutilement.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Un écran est connecté au GPU nVidia.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Pas de processus</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>État du fonctionnement</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Inconnu</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Processus</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Redémarrer le GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU dédié</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modifie la luminosité de l'écran intégré.\nLes modes d'alimentation peuvent modifier la luminosité sur certains appareils. Assurez-vous d'effectuer cette étape en dernier, si cela ne fonctionne pas. \n\nATTENTION : Cette action ne fonctionnera pas si l'écran intégré est éteint.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luminosité de l'écran</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Faire un don avec</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Développer et maintenir Lenovo Legion Toolkit demande du temps. Si vous appréciez ce programme, vous pouvez soutenir son développement en faisant don du montant de votre choix.\n\nCliquez sur le logo PayPal ci-dessous ou scannez le QR code pour donner via PayPal.\n\nMerci par avance !</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Faire un don</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Modifier</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Décochez les taux de rafraîchissement que vous ne souhaitez pas utiliser lorsque le raccourci Fn+R est utilisé.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Assurez-vous que l'écran intégré est allumé. Lenovo Legion Toolkit ne peut afficher les taux de rafraîchissement d'un écran éteint.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Aucun taux de rafraîchissement trouvé</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Exclure les taux de rafraîchissement</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Quitter</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Exporter</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Utilisez uniquement le GPU intégré lorsque vous utilisez la batterie et les GPU intégrés et discrets lorsque l'adaptateur secteur est connecté. Lorsqu'un adaptateur non-standard est connecté, le système passe en mode Hybride-iGPU uniquement.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Mode Hybride-Auto</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Basculer vers et depuis ce mode nécessite un redémarrage.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Utiliser uniquement le GPU dédié. Ce mode offre de meilleures performances graphiques, mais augmente la consommation d'énergie.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Mode dGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Les GPU intégré et dédié sont actifs. Le système basculera automatiquement entre eux en fonction des besoins.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Mode Hybride</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Ce mode prend uniquement effets quand le GPU dédié ne fonctionne pas.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Utiliser uniquement le GPU intégré. Ce mode réduit la consommation énergétique et le bruit.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Mode hybride-iGPU uniquement</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>À propos des modes de fonctionnement du GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Sonde CPU</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Vitesse du ventilateur</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>Tr/min</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Allume l'ordinateur à l'ouverture de l'écran.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Démarrer à l'ouverture</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Allume l'ordinateur à l'ouverture de l'écran.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Démarrer à l'ouverture</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Utiliser les fonctions secondaires des touches F1-F12 sans maintenir la touche Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Verrouillage de Fn</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Utiliser les fonctions secondaires des touches F1-F12 sans maintenir la touche Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Verrouillage de Fn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>ATTENTION !\nCertaines machines peuvent accepter des valeurs plus faibles à celles indiquées, mais soyez prudents. Cette option peut engendrer un comportement imprévisible, si vous n'êtes pas sûr de ce que vous faites, laissez cette valeur à 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Réglage minimum</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>ATTENTION !\nCertaines machines peuvent accepter des valeurs plus élevées à celles indiquées, mais soyez prudents. Cette option peut engendrer un comportement imprévisible, si vous n'êtes pas sûr de ce que vous faites, laissez cette valeur à 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Réglage maximum</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Ne modifiez pas les options ci-dessous à moins que vous ne sachiez vraiment ce que vous faites.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Avancé</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Limite de puissance à long terme (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Limite de puissance à long terme</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Limite de puissance à court terme</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limite de température du CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Impossible d'appliquer les paramètres</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Impossible de charger les paramètres.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>La vitesse du ventilateur n'est pas strictement déterminée par un seul capteur de température. Il augmentera ou diminuera sa vitesse en fonction du capteur le plus élevé entre la température du CPU, du GPU et du dissipateur thermique. Les valeurs exactes apparaissent lorsque vous passez la souris sur chaque élément.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Profil de ventilation</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>AVERTISSEMENT !\nL'utilisation prolongée de cette option dégradera les ventilateurs en diminuant leur longévité.\nSoyez très prudent avec cette option !</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Vitesse maximale du ventilateur</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventilateurs</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Configuration du TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Boost dynamique</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limite de température du GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Paramètres du mode personnalisé</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activez la plage dynamique élevée (HDR) sur l'écran intégré.\n\nAVERTISSEMENT : Cette action ne fonctionnera pas correctement si l'affichage interne est éteint.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Activez la plage dynamique élevée (HDR) sur l'écran intégré.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>L'utilisation du HDR est bloquée par les paramètres Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importer</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Cet appareil n'est pas compatible avec Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Aucun clavier compatible trouvé</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage du clavier</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Le rétroéclairage du clavier ne peut pas être contrôlé par ici quand Lenovo Vantage ou ses services sont en exécution.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage ou ses services sont en cours d'exécution</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>À propos</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Actions</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Batterie</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Accueil</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Don</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Clavier</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Paquets</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Paramètres</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Mise à jour disponible !</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>La mise à jour {0} est disponible !</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Descendre</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Monter</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Non</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Chargeur connecté</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Chargeur connecté (Faible puissance)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Chargeur déconnecté</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Caméra désactivée</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Caméra activée</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Verrouillage des majuscules désactivé</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Verrouillage des majuscules activé</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Verrouillage de Fn désactivé</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Verrouillage de Fn activé</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Microphone désactivé</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Microphone activé</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Verrouillage du pavé numérique désactivé</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Verrouillage du pavé numérique activé</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Rétroéclairage {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Luminosité {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Pavé tactile désactivé</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Pavé tactile activé</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Rétroéclairage {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Adaptateur secteur</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Caméra</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Verrouillage des majuscules et du pavé numérique</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Désactive la notification pour les actions des touches Fn comme la coupure du microphone.\nActivez cette option si vous avez des conflits avec les applications en plein écran.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Ne pas afficher les notifications</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Verrouillage de Fn</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Rétroéclairage du clavier</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Microphone</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Position</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Mode d'alimentation</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Taux de rafraîchissement</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart Key</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Notifications</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Verrouillage du pavé tactile</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Ouvrir</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Améliore le temps de réponse de l'écran intégré.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Améliore le temps de réponse de l'écran intégré.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} téléchargé !</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Téléchargement terminé</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Un problème est survenu</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Le serveur a renvoyé un code 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Le fichier semble manquer</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Veuillez vérifier si votre connexion internet est opérationnelle.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Un problème est survenu</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Mise à jour disponible !</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Ce paquet est vieux de plus d'un an.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Vous trouverez ci-dessous une liste de logiciels marqués comme compatibles avec votre appareil.\nAssurez-vous toujours que vous installez les paquets appropriés.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Vérifiez que le type de machine et le système d'exploitation sont correctement définis.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Un problème est survenu</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Modifier le tri, filtrer les résultats, masquer les paquets ou actualiser la liste arrêtera le téléchargement. Voulez-vous continuer ?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Téléchargement en cours</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtrer...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Type de Machine</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Système d'exploitation</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Principale (Recommandée)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Identique à Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Secondaire</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Identique à celui du Support PC Lenovo</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Catégorie</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Date</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Nom</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Source</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Téléchargements</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Coller</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Sélectionnez le mode de performance.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mode d'alimentation</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Sélectionnez le mode de performances.\nVous pouvez changer de mode avec Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Paramètres</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Mode d'alimentation</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Le mode d'alimentation sélectionné peut ne pas fonctionner correctement sans adaptateur secteur connecté.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Par défaut</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Plans d'alimentation Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustez le préréglage du rétroéclairage du clavier.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage du clavier</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Luminosité</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Préréglage 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Préréglage 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Préréglage 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Pré-réglage 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Éteint</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zone 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zone 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zone 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zone 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Effet</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Vitesse</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Lisez-Moi</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Actualiser</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modifie la fréquence d'actualisation de l'écran intégré.\n\nATTENTION : Cette action ne fonctionnera pas correctement si l'écran intégré est éteint.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Taux de rafraîchissement</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Modifier la fréquence d'actualisation de l'écran intégré.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Taux de rafraîchissement</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Renommer</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Redémarrer plus tard</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Redémarrer maintenant</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Rétablir</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Arguments</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Chemin de l'exécutable</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Exécuter un script ou un programme.\nAssurez-vous d'abord que votre script s'exécute correctement.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Exécuter</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Sauvegarder</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Sauvegarde en cours...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Choisissez une ou plusieurs actions rapides à parcourir</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Aucune action rapide définie.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Afficher cette application</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Changer la couleur d'accentuation de l'application.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Couleur d'accentuation</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Lancer l'application dans la barre des tâches lors de la connexion a Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Démarrage auto</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone n'a peut-être pas été désactivée correctement</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Impossible de désactiver Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Désactiver Legion Zone et son service sans le désinstaller.\nUn redémarrage est recommandé après avoir modifié cette option.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Désactiver Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys n'a peut-être pas été désactivé correctement</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Impossible de désactiver Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Désactive Lenovo Hotkeys et son service sans le désinstaller.\nSi elle est désactivée, cette application gérera les raccourcis Fn.\nIl est recommandé de redémarrer l'ordinateur après avoir modifié cette option.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Désactiver Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage et/ou ImController ont peut-être été mal désactivés</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Impossible de désactiver Lenovo Vantage et/ou ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Désactive Lenovo Vantage et ImController sans les désinstaller.\nUn redémarrage est recommandé après avoir modifié cette option.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Désactiver Lenovo Vantage et ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone n'a peut-être pas été activé correctement</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Impossible d'activer Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys n'a peut-être pas été activé correctement</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Impossible d'activer les raccourcis claviers Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage et/ou ImController n'ont peut-être pas été activés correctement</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Impossible d'activer Lenovo Vantage et/ou ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Vous pouvez exclure les taux de rafraîchissement, pour rendre le raccourci Fn+R plus pratique.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Exclure les taux de rafraîchissement</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Sélectionner une langue.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Langue</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Toujours minimiser dans la barre des tâches. Fermez avec un clic droit sur l'icône de la barre des tâches.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimiser à la fermeture</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Configurez quelles notifications afficher.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Notifications</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Plans d'alimentation Windows</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Assignez l'action rapide au double appui Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Action au double appui Smart Key</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Assignez l'action rapide au simple appui Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Action Smart Key</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Choisir un thème clair, un thème sombre ou suivre les paramètres du système.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Thème</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Paramètres</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustez la luminosité du rétroéclairage du clavier.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luminosité du rétroéclairage du clavier</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Ajouter un effet</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Impossible d'appliquer le profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Le profil d'éclairage n'a pas pu être appliqué.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Luminosité</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Désélectionner toutes les zones</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Effets</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Le profil n'a pas pu être exporté</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Impossible d'exporter le profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Le profil n'a pas pu être importé</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Impossible d'importer le profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Aucun effet ajouté.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Valeurs par défaut</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Sélectionner toutes les zones</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Changer la disposition du clavier</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Direction</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Couleur </value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Couleurs</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Direction</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Effet</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Cet effet sera appliqué à l'ensemble du clavier et remplacera tous les autres effets.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Vitesse</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Ajouter un effet</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Modifier l'effet</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustez le profil du rétroéclairage du clavier.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Profil du rétro-éclairage du clavier</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Toutes les touches</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zones</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Lever du soleil</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Coucher du soleil</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Heure spécifique</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Permet le changement entre le GPU intégré et dédié.\nNécessite un redémarrage.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>La modification du mode hybride nécessite un redémarrage. Voulez-vous redémarrer maintenant ?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Redémarrage nécessaire</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Mode Hybride</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Désactiver le pavé tactile.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Verrouillage du pavé tactile</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Désactiver le pavé tactile.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Verrouillage du pavé tactile</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Réessayez</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Sans nom</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Vous pouvez choisir de continuer à vos propres risques, mais gardez à l'esprit que certaines fonctionnalités peuvent ne pas être disponibles et/ou ne pas fonctionner correctement.\n\nLa journalisation sera activée automatiquement si vous choisissez de continuer.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Consultez la page du projet sur GitHub pour plus d'informations.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Dossier de journalisation</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Type de Machine</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit n'a pas été testé avec votre appareil.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Modèle</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Appareil non supporté</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Constructeur</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Mettre à jour</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Mise à jour disponible</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Dernières nouveautés</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustez la luminosité du rétroéclairage du clavier.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage du clavier</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Vous pouvez modifier la luminosité avec Fn+Espace</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage du clavier</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Désactiver la touche Windows du clavier intégré.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Verrouillage de la touche Windows</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Fonctionne uniquement sur le clavier intégré.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Verrouillage de la touche Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Oui</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Microphone</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Lorsqu'il est désactivé, les microphones sont coupés.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Microphone</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Lorsqu'il est désactivé, les microphones sont coupés.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Résolution</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Modifier la résolution de l'écran intégré.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Résolution</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modifier la résolution de l'écran intégré.\n\nATTENTION : Cette action ne fonctionnera pas correctement, si l'écran interne est éteint.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Modifier l'échelle de l'écran intégré.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modifier l'échelle de l'écran intégré.\n\nATTENTION : Cette action ne fonctionnera pas correctement, si l'écran interne est éteint.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Affichage</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage du clavier</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Vous pouvez activer ou désactiver le rétroéclairage avec Fn+Espace.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage du clavier</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Allume ou éteint le rétro-éclairage.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Aucun téléchargement trouvé</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Afficher les mises à jour uniquement</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Tableau de bord personnalisé</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Réinitialiser</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Créer un groupe</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Nom</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Certaines fonctionnalités peuvent ne pas apparaître sur le tableau de bord selon l'état et la configuration de votre appareil.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Personnaliser</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Éteindre les écrans</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Éteint tous les écrans disponibles.\nEn déplaçant la souris ou en appuyant sur le clavier, les écrans se réveillent.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Éteindre</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Éteindre les écrans</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Éteint tous les écrans disponibles.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Modifier le nom du groupe</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Nom</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Logo Legion allumé</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Logo Legion éteint</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Éclairage des ports allumé</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Éclairage des ports éteint</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Redémarrage nécessaire</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Redémarrage nécessaire</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Redémarrage recommandé</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Enregistrer et fermer</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Préréglage du mode personnalisé</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Active le préréglage du mode personnalisé.\nCe paramètre ne prend effet que lorsque le mode personnalisé est activé.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Nom du pré-réglage</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Nom</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Préréglage actuel</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Dossiers de l'application</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Données</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temp</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Luminosité unique de l'écran</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Activé, le même niveau de luminosité sera appliqué à tous les modes de gestion d'alimentation de Windows chaque fois que vous le modifiez.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>La mise à jour {0} est disponible !</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Limite de puissance de crête</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Limite de puissance de l'APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>La consommation d'énergie qui peut être atteinte en continu par le CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>La consommation d'énergie maximale qui peut être atteinte par le CPU dans un court laps de temps.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>La consommation d'énergie instantanée maximale qui peut être atteinte par le CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>La consommation d'énergie maximale qui peut être atteinte par le CPU lorsque le CPU et le GPU sont tous deux pleinement utilisés.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>La consommation d'énergie maximale qui peut être atteinte par le CPU avec un délai mineur.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>La température maximale que peut atteindre le CPU avant que la fréquence et la puissance ne soient réduites.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>La puissance maximale supplémentaire qui peut être allouée au GPU en fonction de la consommation d'énergie du CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>La quantité supplémentaire de puissance qui peut être allouée au GPU en plus de la consommation de base.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>La température maximale que peut atteindre le GPU avant que la fréquence et la puissance ne soient réduites.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Par défaut</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Durée de la limite de puissance à court terme</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Le temps pendant lequel le CPU est autorisé à booster et à utiliser la limite de puissance à court terme. Lorsque le temps expire, la limite de puissance à long terme est utilisée.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Objectif de puissance totale du processeur en AC</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Le moment à partir duquel le CPU déclenche l'ajustement dynamique de la consommation d'énergie pour le GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Créer</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Ajouter une étape</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Créer une action</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Mode d'alimentation</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Préréglage</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>GPU dédié</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Etat d'alimentation</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Batterie</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Mode</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Vitesse de charge/décharge</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Mise à jour disponible !</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Choisir une icône</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Changer l’icône</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Batterie faible</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Configurer</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>S0 Modèle de puissance inférieure détectée</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows signale que ce périphérique prend en charge la mise en veille moderne. L'utilisation de modes de gestion d'alimentation autres qu'équilibré peut entraîner un comportement inattendu.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Sélectionnez les modes de gestion d'alimentation Windows à appliquer lorsque le mode d'alimentation change.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Alimentation</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Options du mode de gestion d'alimentation dans le panneau de configuration de Windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Désactivé</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Importer un profil de rétroéclairage du clavier</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Importer et appliquer la configuration du rétroéclairage au profil actuel.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Emplacement</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Après {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Plusieurs déclencheurs...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Paramètres d'overclocking du GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Offset de la Fréquence du Cœur</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Offset de la fréquence de la mémoire</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Overclock GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Améliorez les performances en surcadençant le GPU dédié.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Overclock GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Augmentez les performances en surcadençant le GPU discret.\n\nAVERTISSEMENT : Cette action ne fonctionnera pas correctement si le GPU dédié n'est pas disponible.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage des ports</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Activez ou désactivez le rétroéclairage des ports situés à l'arrière de l'ordinateur portable.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage des ports</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activez ou désactivez le rétroéclairage des ports situés à l'arrière de l'ordinateur portable.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage du logo</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Activez ou désactivez le rétroéclairage sur le capot de l'ordinateur portable.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rétroéclairage du logo</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Active ou désactive le rétroéclairage sur le capot de l'ordinateur portable.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Maximum：{0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Utilisation</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Fréquence du Cœur</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Température</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Ventilateur</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Fréquence de la mémoire</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Fréquence d'actualisation</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Démarrage instantané</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Allumer l'ordinateur lorsqu'un chargeur est branché.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Démarrage instantané</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Allumer l'ordinateur lorsqu'un chargeur est branché.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Impossible de changer le mode d'alimentation</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>Le mode d'alimentation {0} n'est pas disponible sans le chargeur secteur.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Capteurs</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Impossible de changer le mode de fonctionnement GPU</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Essayez de changer à nouveau de mode dans quelques secondes, si vous n'obtenez pas le résultat escompté. Si le GPU dédié ne répond pas du tout, redémarrez votre ordinateur portable.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>Le dGPU est actuellement utilisé</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>Le dGPU va se déconnecter automatiquement lorsqu'il ne sera plus utilisé.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>Le dGPU est actuellement utilisé ou l'ordinateur n'est pas alimenté sur batterie</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>Le dGPU va se déconnecter automatiquement lorsqu'il ne sera plus utilisé et l'ordinateur alimenté sur batterie.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Les paramètres du mode personnalisé ne seront pas appliqués correctement lorsque Lenovo Vantage ou ses services sont en cours d'exécution.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Les paramètres du mode personnalisé ne seront pas appliqués correctement lorsque Legion Zone ou ses services sont en cours d'exécution.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU connecté</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPU déconnecté</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mode de fonctionnement du GPU</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Sélectionne le mode de fonctionnement du GPU en fonction de l'utilisation et des conditions d'alimentation de votre ordinateur.\nLe changement de mode peut nécessiter un redémarrage.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mode Hybride</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Permet le changement entre le GPU intégré et dédié.\nNécessite un redémarrage.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Durée</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Mises à jour</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>GPU vers Boost Dynamique CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Il s'agit de la puissance supplémentaire maximale qui peut être allouée au CPU par le GPU en fonction de l'utilisation du CPU. Plus la valeur est élevée, meilleures sont les performances des applications qui utilisent le CPU.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Logo de démarrage</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Personnaliser le logo de démarrage qui est visible lorsque l'ordinateur démarre.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Logo de démarrage</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Le logo de démarrage par défaut est enregistré</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Le logo de démarrage personnalisé est enregistré</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>État</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Rétablir par défaut</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Personnaliser</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Actions</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Texte de la notification</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Afficher une notification</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Préréglage</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Verrouillage Fn Intelligent</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Le Verrouillage Fn sera temporairement désactivé lorsque les touches Maj, Ctrl ou Alt sont appuyées.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Désactivé</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Le logo de démarrage personnalisé doit faire exactement {0} pixels de large. Les formats supportés sont : {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Charger la batterie pendant la nuit</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Lorsque cette option est activée, l'appareil se charge à 80 % lorsqu'il est branché pendant la nuit et finit de se charger à 100 % au moment où vous l'utilisez le matin.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Charger la batterie pendant la nuit</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Lorsque cette option est activée, l'appareil se charge à 80 % lorsqu'il est branché pendant la nuit et finit de se charger à 100 % au moment où vous l'utilisez le matin.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Taille d'image non valide.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Format d'image non valide.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Montage de la partition EFI impossible.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Impossible d'appliquer le privilège UEFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Pas assez d'espace libre sur la partition EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Le logo personnalisé n'a pas pu être appliqué : {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Le logo par défaut n'a pas pu être appliqué : {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Le logo de démarrage par défaut a été appliqué.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Logo de démarrage personnalisé appliqué.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Nom du point d'accès (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Copier le nom du point d'accès actuel</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Laisser vide pour n'importe quel réseau Wi-Fi.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Partager la vitesse du ventilateur, la température de la batterie, etc. avec HWiNFO64. Vous devrez peut-être redémarrer HWiNFO64 après avoir modifié cette option.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Intégrations</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Paramètres</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Information</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Dossier des téléchargements</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Ouvrir le dossier des téléchargements</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Télécharger</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Ouvrir le README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Préréglage</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Actualiser</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Supprimer</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Période (minutes)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Réinitialise le compteur de \"Sur batterie depuis\" dans la section batterie lors du redémarrage du système.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Réinitialiser \"Sur batterie depuis\" au démarrage</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Désactiver Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Activer le Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Exécuter en arrière-plan</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Attendre la fin</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Exécuter des applications en console, sans créer de fenêtre de console.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Attendre la fin de l'exécution du programme ou du script</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Lorsque la fonction muet est activée, tous les dispositifs de sortie audio actifs sont mis en sourdine.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Haut-parleur</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Réduire dans la zone de notification</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Toujours réduire dans la zone de notification au lieu de la barre des tâches.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Modes de gestion de l'alimentation Windows</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Passer en mode personnalisé avec Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Permettre de basculer rapidement en mode personnalisé avec Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Synchronisation de mode d'alimentation</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Change automatiquement entre les Plans d'Alimentation et les Modes d'Alimentation lors du changement du Mode d'Alimentation.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Plans d'Alimentation Windows</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Sélectionnez le mode de gestion d'alimentation Windows à appliquer lorsque le mode d'alimentation change.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Une erreur s'est produite lors de la lecture des informations de l'appareil.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Répéter</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Ignorer les délais</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Effacer</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Enregistrer</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Arrêter d'enregistrer</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Ne pas répéter</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit doit être en cours d'exécution pour que les macros fonctionnent.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Activer</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Vous pouvez enregistrer des séries de pressions de touches et les utiliser à l'aide du pavé numérique de votre clavier.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activer ou désactiver les macros.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Arrêter si une autre touche a été appuyée</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Cacher</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Cacher tout</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Appareils</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Tout déselectionner</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Tout sélectionner</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Clavier uniquement</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Touches du clavier et boutons de la souris</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Toutes les entrées</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Options d'enregistrement</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>L'enregistrement commence dans 3 secondes...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Enregistrement...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Appuyez sur ÉCHAP pour arrêter.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Afficher uniquement les appareils sélectionnés</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Afficher uniquement les périphériques amovibles</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Afficher uniquement les appareils connectés</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>ILC</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Activez l'interface de ligne de commande qui permet le contrôle à partir de la ligne de commande.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Ajouter l'ILC au PATH</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Ajoutez l’ILC à la variable d’environnement PATH de l’utilisateur.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Température</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Sélectionner une unité de mesure pour les capteurs de température.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys s'exécute en arrière-plan.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone s'exécute en arrière-plan.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage et/ou ImController s'exécutent en arrière-plan.</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Vérifier</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Vérification des mises à jour...</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Échec de la vérification des mises à jour</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Un problème est survenu, veuillez réessayer plus tard.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Aucune mise à jour trouvée</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Vérifier automatiquement les mises à jour</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Essayez d'obtenir les mises à jour depuis l'autre source.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Un problème est survenu</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Veuillez vérifier si votre connexion internet est opérationnelle.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.hu.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Eszköztár</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Verzió</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Legfrissebb kiadás GitHub-on</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Linkek</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Projekt GitHub-on</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Külső könyvtárak</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Névjegy</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Translated into Hungarian by LabodiDavid.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Verziók</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Hozzáadás</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Új hozzáadása</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Töltse az USB eszközöket a számítógép kikapcsolt, alvó vagy hibernált állapota esetén is.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Állandó USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Töltse az USB eszközöket a számítógép kikapcsolt, alvó vagy hibernált állapota esetén is.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Állandó USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Eszköztár</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Alkalmaz</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Alkalmazás és bezárás</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>A Lenovo Legion Eszköztárnak futnia kell az automatikus műveletek működéséhez.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Engedélyezés</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Nincsenek meghatározott műveletek. Kattints az \"Új hozzáadása\" gombra új művelet létrehozásához.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Ha engedélyezve van, ezek a műveletek automatikusan lefutnak. Amikor az állapot megváltozik, az összes művelet futásra kerül felülről lefelé haladva.\nCsak az aktuális állapotnak megfelelő műveletek fognak futni.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Műveletek</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Név...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Új hozzáadása</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Nincsenek meghatározott gyorsműveletek. Kattints az \"Új hozzáadása\" gombra új gyorsművelet létrehozásához.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>A gyorsműveletek jobb egérgombbal a tálcaikonra kattintva érhetők el.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Gyors műveletek</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Név...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Átnevezés</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Minden változás visszállítva!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Visszaszállítva</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Módosítások sikeresen elmentve!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Mentve</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatizálás</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Lépés hozzáadása</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Beállítás</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exkluzív</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Ne hajtson végre további műveleteket, ha ez a művelet fut.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Futtatás most</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Befejezve hibával.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Futtatás most</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Sikeresen befejezve!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Futtatás most</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Futás...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} lépés</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} lépés</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Alkalmazások</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Napkeltekor</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Naplementekor</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>{0:D2}:{1:D2}-kor</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Teljesítménymód</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Névtelen</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Automatikusan érzkékeli egyes játékok futtatását és javítja a processzor, illetve videókártya teljesítményét. A hőmérséklet értéke és a ventilátor zaja megnövekedhet.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>AI Engine engedélyezése</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Kiegyensúlyozott mód beállításai</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Válaszd ki, hogyan töltődjön az akkumulátor.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Akkumulátor mód</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Válaszd ki, hogyan töltődjön az akkumulátor.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Akkumulátor mód</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Csatlakoztatva, töltés...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Csatlakoztatva, nem töltődik</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Az akkumulátor aktuális hőmérséklete.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Akkumulátor hőmérséklete</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Aktuális akkumulátor töltöttség.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Aktuális töltöttség</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>A töltések/kisülések száma.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Ciklusszám</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Az akkumulátor tervezett kapacitása.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Tervezési kapacitás</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Az akkumulátor töltésének (+) vagy merülésének (-) sebessége.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Merülési ráta</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Becsült hátralévő idő: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Idő becslése...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Első használat dátuma</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Mikor volt az akkumulátor először használva.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Az akkumulátor kapacitása teljes töltöttség esetén.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Teljes töltöttségi szint</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Alacsony teljesítményű töltő csatlakoztatva</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Az akkumulátor gyártási ideje.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Gyártás dátuma</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>A laptop utolsó hálózati csatlakoztatása óta eltelt idő.\nEz az idő nem biztos, hogy pontos, ha a laptopot alvó vagy kikapcsolt állapotban töltötték fel.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Akkumulátoron ennyi ideje</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Akkumulátor</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Mégsem</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Bezárás</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Kék</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Zöld</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Vörös</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Válaszd ki a videókártya működési módját a számítógép használati és energiaellátási körülményei alapján.\nAz üzemmódok közötti váltás újraindítást igényelhet.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>A {0} módra való váltás újraindítást igényel. Újraindítod most?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Újraindítás szükséges</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>GPU működési mód</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Gyors műveletek</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Tovább</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Összes másolása</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafikus beállítások</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Egyéb</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Tápellátás</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Kezdőlap</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Letiltja a diszkrét GPU-t, ha az feleslegesen aktív.\n\nFIGYELMEZTETÉS: Ez a művelet nem fog helyesen futni, ha a belső kijelző ki van kapcsolva vagy a hibrid üzemmód nem aktív.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU deaktiválása</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Késleltetés hozzáadása a következő lépés futtatása előtt.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Késleltetés</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Törlés</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS verzió</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Szöveg vágólapra másolva.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>{0} vágólapra másolva.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Másolva!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Eszköz</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Ügyfélszolgálat</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Számítógép típusa</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Gyártó</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Modell</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Sorozatszám</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Az eszköz névjegye</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Lejárat dátuma</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Kezdés dátuma</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Jótállás</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Aktív</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Deaktiválás</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Inaktív</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Alkalmazások kilövése</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Letiltja a diszkrét GPU-t, ha az feleslegesen aktív.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Kijelző csatlakoztatva az NVIDIA videókártyához.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Nincsenek folyamatok</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Teljesítmény állapot</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Ismeretlen</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Folyamatok</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Videókártya újraindítása</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Diszkrét GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>A beépített kijelző fényerejének módosítása.\n\nFIGYELMEZTETÉS: Ez a művelet nem fog megfelelően futni, ha a belső kijelző ki van kapcsolva.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Kijelző fényereje</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Támogatás ezzel</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>A Lenovo Legion Toolkit fejlesztése és karbantartása sok időt vesz igénybe. Ha szívesen használja ezt a szoftvert, akkor támogathatja a jövőjét az Ön által választott összeg felajánlásával.\n\nKattintson az alábbi PayPal-logóra, vagy szkennelje be a QR-kódot a PayPal segítségével történő adományozáshoz.\n\nElőre is köszönjük!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Támogatás</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Szerkesztés</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Törölje a jelölőnégyzetből azokat a frissítési sebességeket, amelyeket nem szeretne használni az Fn+R gyorsbillentyű használatakor.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Győződjön meg róla, hogy a laptop kijelzője be van kapcsolva. A Lenovo Legion Toolkit nem tudja betölteni a frissítési frekvenciákat egy nem bekapcsolt kijelzőhöz.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Nem található frissítési arányok</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Frissítési ráták kihagyása</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Kilépés</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Exportálás</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Használja csak az integrált GPU-t, ha akkumulátorral működik, és az integrált és a különálló GPU-t is, ha hálózati adapter van csatlakoztatva. Ha nem szabványos adaptert csatlakoztat, a rendszer átvált a Csak hibrid-iGPU módra.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Hybrid-Auto mód</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Ebbe az üzemmódba és ebből az üzemmódból való váltás újraindítást igényel.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Csak diszkrét GPU-t használ. Ez az üzemmód biztosítja a legjobb grafikus teljesítményt, de növeli az energiafogyasztást.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>dGPU Mód</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Mind az integrált, mind a diszkrét GPU engedélyezett. A rendszer automatikusan váltogat közöttük az igényei alapján.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hibrid mód</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Ez az üzemmód csak akkor lép életbe, ha a diszkrét GPU nem működik.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Csak integrált GPU-t használjon. Ez az üzemmód minimalizálja az energiafogyasztást és a zajszintet.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Csak hibrid-iGPU mód</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>A GPU-munkamódokról</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>Processzor</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU érzékelő</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Ventillátor sebesség</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>Videókártya</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kapcsolja be a laptopot, amikor kinyitja a fedelet.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fedél felhajtása az indításhoz</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Kapcsolja be a laptopot, amikor kinyitja a fedelet.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Fedél felhajtása az indításhoz</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Az F1-F12 billentyűk másodlagos funkcióinak használata az Fn billentyű lenyomva tartása nélkül.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Az F1-F12 billentyűk másodlagos funkcióinak használata az Fn billentyű lenyomva tartása nélkül.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>FIGYELEM!\nEgyes laptopok alacsonyabb értékeket is elfogadnak, mint amennyit jeleznek, de legyen óvatos. Ez az opció kiszámíthatatlan viselkedést eredményezhet. Ha nem biztos benne, hogy mit csinál, hagyja ezt 0-án.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Minimális eltolás</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>FIGYELEM!\nEgyes laptopok nagyobb értékeket is elfogadnak, mint amennyit jeleznek, de legyen óvatos. Ez az opció kiszámíthatatlan viselkedést eredményezhet. Ha nem biztos benne, hogy mit csinál, hagyja ezt 0-án.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maximum eltolás</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Ne változtassa meg az alábbi beállításokat, hacsak nem tudja, mit csinál.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Haladó</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Hosszú távú teljesítménykorlátozás (keresztterhelés)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Hosszú távú teljesítménykorlátozás</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Rövid távú teljesítménykorlátozás</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPU hőmérséklet-határ</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Nem sikerült alkalmazni a beállítást</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Beállítás betöltése sikertelen.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>A ventillátor sebességét nem minden esetben csak egy hőmérséklet szenzor határozza meg. A processzor, videókártya és a hűtőborda szenzorai közüli legmelegebb értékhez képest változik a ventillátor sebessége. A pontos értékek megjeleníthetők az egér mozgatásával.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Ventilátor görbe</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>FIGYELEM!\nEnnek az opciónak a hosszan tartó használata károsítja a ventilátorokat, csökkentve azok élettartamát.\nKomolyan, legyen óvatos ezzel az opcióval!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Maximális ventilátor sebesség</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventilátorok</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Konfigurálható TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dinamikus Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>GPU hőmérsékleti határérték</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>Videókártya</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Egyéni üzemmód-beállítások</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>A nagy dinamikatartomány (HDR) engedélyezése a beépített kijelzőn.\n\nFIGYELMEZTETÉS: Ez a művelet nem fog megfelelően futni, ha a belső kijelző ki van kapcsolva.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>A nagy dinamikatartomány (HDR) engedélyezése a beépített kijelzőn.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>A HDR használatát a Windows beállításai blokkolják.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importálás</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Ez a készülék nem kompatibilis a Lenovo Legion Toolkit-tel.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Nem találtunk kompatibilis billentyűzeteket</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>A billentyűzet háttérvilágítása nem szabályozható itt, amikor a Lenovo Vantage vagy annak szolgáltatásai futnak.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>A Lenovo Vantage vagy annak szolgáltatásai futnak</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Névjegy</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Műveletek</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Akkumulátor</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Irányítópult</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Támogatás</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Billentyűzet</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Letöltések</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Beállítások</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Frissítés érhető el!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>{0} frissítés érhető el!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Mozgatás le</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Mozgatás fel</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nem</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Hálózati töltőadapter csatlakoztatva</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Hálózati töltőadapter csatlakoztatva (alacsony teljesítményű)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Hálózati adapter lecsatlakoztatva</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Kamera ki</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Kamera be</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock ki</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock be</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock ki</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock be</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Mikrofon ki</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Mikrofon be</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock ki</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock be</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Háttérvilágítás {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Fényerő {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profil: {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Érintőfelület ki</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Érintőfelület be</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Háttérvilágítás {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Hálózati adapter</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Kamera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock és Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Az Fn billentyűkkel végzett műveletek, például a mikrofon elnémítása esetén az értesítés letiltása.\nEngedélyezze ezt az opciót, ha konfliktusok vannak a teljes képernyős alkalmazásokkal.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Ne jelenítsen meg értesítéseket</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Pozíció</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Energiagazdálkodási üzemmód</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Frissítés gyakorisága</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Okos gomb</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Értesítések</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Touchpad zár</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Megnyitás</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>A beépített kijelző válaszidejének gyorsítása.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>A beépített kijelző válaszidejének gyorsítása.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} letöltve!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Letöltés kész</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Valami hiba történt</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>A szerver 404-es kódot küldött vissza.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Úgy tűnik a fájl eltűnt</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Ellenőrizze, hogy az internetkapcsolata működik-e.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Valami hiba történt</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Frissítés érhető el!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Ez a csomag több mint egy éves.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Verzió</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Az alábbiakban a laptopjával kompatibilisnek jelölt szoftvercsomagok listáját találja.\nMindig győződjön meg arról, hogy a megfelelő csomagokat telepíti.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Ellenőrizze, hogy a gép típusa és az operációs rendszer helyesen van-e beállítva.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Valami nem sikerült</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>A rendezés megváltoztatása, az eredmények szűrése, a csomagok elrejtése vagy a lista frissítése leállítja a letöltést. Folytatni szeretné?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Letöltés folyamatban</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Szűrő...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Gép típusa</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Operációs rendszer</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Elsődleges (ajánlott)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Ugyanaz, mint a Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Másodlagos</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Ugyanaz, mint a Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Kategória</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Dátum</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Név</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Forrás</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Letöltések</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Beillesztés</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Teljesítmény üzemmód váltása.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Teljesítménymód</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Teljesítmény üzemmód váltása.\nA teljesítménymódot az Fn+Q billentyűkombinációval is meg lehet változtatni.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Beállítások</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Teljesítménymód</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>A kiválasztott teljesítménymód nem biztos, hogy megfelelően működik hálózati adapter csatlakoztatása nélkül.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Alapértelmezett</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Windows Energiasémák</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás beállítása.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Fényerő</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Előre beállított 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Előre beállított 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Előre beállított 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Előre beállított 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zóna 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zóna 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zóna 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zóna 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Hatás</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Sebesség</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Olvass el</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Frissítés</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>A beépített kijelző frissítési sebességének módosítása.\n\nFIGYELMEZTETÉS: Ez a művelet nem fog megfelelően futni, ha a belső kijelző ki van kapcsolva.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Frissítés gyakorisága</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>A beépített kijelző frissítési sebességének módosítása.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Frissítés gyakorisága</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Átnevezés</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Később újraindítom</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Újraindítás most</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Visszaállítás</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Paraméterek</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Futtatható elérési útvonal</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Szkript vagy program futtatása.\nElőször győződjön meg róla, hogy a szkript helyesen fut.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Futtatás</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Mentés</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Mentés...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Válasszon ki egy vagy több gyorsműveletet, hogy végigmenjen</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Nincsenek gyors műveletek definiálva.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Mutassa ezt az alkalmazást</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Az alkalmazás kiemelő színének módosítása.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Kiemelőszín</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>A Windows rendszerbe való bejelentkezéskor a tálcára minimalizálva indul.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Automatikus indítás</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Lehet, hogy a Legion Zone nem megfelelően lett letiltva</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nem tudta letiltani a Legion Zone-t</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Tiltja le a Legion Zone-t és szolgáltatását anélkül, hogy eltávolítaná.\nAz opció módosítása után ajánlott az újraindítás.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Legion Zone letiltása</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>A Lenovo gyorsbillentyűk esetleg nem megfelelően lettek letiltva</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nem sikerült letiltani a Lenovo Hotkeys-t</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>A Lenovo Hotkeys és szolgáltatásának letiltása eltávolítás nélkül.\nHa letiltja, ez az alkalmazás kezeli az Fn parancsikonokat.\nAz opció módosítása után ajánlott az újraindítás.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Lenovo gyorsbillentyűk (Hotkeys) letiltása</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>A Lenovo Vantage és/vagy az ImController esetleg nem megfelelően lett letiltva</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Nem sikerült letiltani a Lenovo Vantage és/vagy ImController-t</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>A Lenovo Vantage és az ImController letiltása eltávolításuk nélkül.\nAz opció módosítása után ajánlott az újraindítás.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>A Lenovo Vantage és az ImController letiltása</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Lehet, hogy a Legion Zone nem megfelelően lett engedélyezve</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nem sikerült engedélyezni a Legion Zone-t</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>A Lenovo gyorsbillentyűk esetleg nem megfelelően lettek engedélyezve</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nem sikerült engedélyezni a Lenovo Hotkeys billentyűket</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>A Lenovo Vantage és/vagy az ImController esetleg nem megfelelően lett engedélyezve</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Nem sikerült engedélyezni a Lenovo Vantage és/vagy ImController-t</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Kizárhat frissítési rátákat, hogy az Fn+R gyorsbillentyű hasznosabbá váljon.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Frissítési ráták kihagyása</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Nyelv kiválasztása.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Nyelv</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Mindig minimalizálja a tálcára. Zárja be a tálca ikonjára való jobb kattintással.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimalizálás bezáráskor</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Annak beállítása, hogy mely értesítések jelenjenek meg.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Értesítések</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Windows Energiasémák</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Az Fn+F9 dupla lenyomásához rendelje hozzá a gyors műveletet.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Okos gomb másodlagos művelet</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Gyors művelet hozzárendelése az Fn+F9 egyszeri megnyomásához.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Okos gomb művelete</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Állítson be világos témát, sötét témát vagy kövesse a rendszerbeállításokat.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Téma</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Beállítások</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágításának beállítása.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>A billentyűzet háttérvilágítás fényereje</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Effekt hozzáadása</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Nem lehetett alkalmazni a profilt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>A világítási profilt nem lehetett alkalmazni.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Fényerő</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Az összes zóna kijelölésének megszüntetése</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Effektek</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>A profilt nem lehetett exportálni</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nem sikerült exportálni a profilt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>A profilt nem lehetett importálni</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nem sikerült importálni a profilt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Nincs hozzáadott effektus.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Alapbeállítások visszaállítása</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Összes zóna kiválasztása</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Billentyűzetkiosztás váltása</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Irány</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Szín</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Színek</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Irány</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Effekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Ez az effekt az egész billentyűzetre vonatkozik, és minden más effekt helyébe lép.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Gyorsaság</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Effekt hozzáadása</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Effekt szerkesztése</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás profiljának beállítása.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás profilja</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Minden gomb</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zónák</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Napkelte</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Napnyugta</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Idő</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Lehetővé teszi az integrált és a diszkrét GPU közötti váltást.\nÚjraindítást igényel.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>A hibrid üzemmód megváltoztatása újraindítást igényel. Most szeretné újraindítani?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Újraindítás szükséges</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Hibrid mód</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Az érintőpad kikapcsolása.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Touchpad zár</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Az érintőpad kikapcsolása.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Touchpad zár</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Próbálja meg újra</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Váratlan kivétel történt: {0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Névtelen</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>A folytatást saját felelősségére választhatja, de ne feledje, hogy egyes funkciók esetleg nem állnak rendelkezésre és/vagy nem működnek megfelelően.\n\nA naplózás automatikusan engedélyezésre kerül, ha a folytatást választja.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>További információkért nézd meg a projekt oldalát a GitHubon.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Napló mappa</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Számítógép típusa</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>A Lenovo Legion Toolkitet nem tesztelték az Ön készülékével.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Modell</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Nem támogatott eszköz</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Gyártó</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Frissítés</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Frissítés elérhető</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Mik az újdonságok?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágításának beállítása.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>A fényerőt az Fn+Space billentyűkombinációval módosíthatja</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>A beépített billentyűzet Windows gombjának letiltása.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Windows gomb zár</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Csak a beépített billentyűzeten működik.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Windows gomb zár</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Igen</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Kikapcsolt állapotban a mikrofonok ellesznek némítva.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kikapcsolt állapotban a mikrofonok ellesznek némítva.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Felbontás</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>A beépített kijelző felbontásának módosítása.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Felbontás</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>A beépített kijelző felbontásának módosítása.\n\nFIGYELMEZTETÉS: Ez a művelet nem fog megfelelően futni, ha a belső kijelző ki van kapcsolva.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>A beépített kijelző méretarányának módosítása.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>A beépített kijelző méretezésének módosítása.\n\nFIGYELMEZTETÉS: Ez a művelet nem fog megfelelően futni, ha a belső kijelző ki van kapcsolva.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Kijelző</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>A háttérvilágítást az Fn+Space billentyűkombinációval kapcsolhatja be vagy ki.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>A háttérvilágítás be- vagy kikapcsolása.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Nincs megfelelő letöltés</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Csak a frissítések megjelenítése</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Az irányítópult testreszabása</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Betöltés</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Csoport létrehozása</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Név</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Előfordulhat, hogy egyes funkciók nem jelennek meg a műszerfalon a laptop állapotától és konfigurációjától függően.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Testreszabás</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Kijelző kikapcsolása</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Kapcsolja ki az összes rendelkezésre álló kijelzőt.\nAz egér mozgatása vagy a billentyűzet megnyomása felébreszti a kijelzőket.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Kikapcsolás</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Kijelzők kikapcsolása</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kikapcsolja az összes rendelkezésre álló kijelzőt.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Csoportnév szerkesztése</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Név</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Legion logó bekapcsolva</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Legion logó kikapcsolva</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Portok háttérvilágítás bekapcsolva</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Portok háttérvilágítás kikapcsolva</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Újraindítás szükséges</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Leállítás szükséges</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Újraindítás ajánlott</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Mentés &amp; bezárás</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Egyéni üzemmód beállítása</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Egyéni üzemmód előbeállítás aktiválása.\nEz a beállítás csak akkor lép hatályba, ha az Egyéni üzemmód engedélyezve van.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Előbeállítás neve</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Név</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Aktív előbeállítás</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Alkalmazás mappái</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Adatok</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Ideiglenes</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Egyetlen kijelző fényereje</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Ha be van kapcsolva, akkor a Windows összes energiatakarékossági tervére ugyanaz a fényerőszint lesz érvényben, amikor megváltoztatja azt.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>{0} frissítés elérhető!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Csúcsteljesítmény-határérték</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU sPPT teljesítményhatár</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>A CPU által elérhető folyamatos energiafogyasztás.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>A CPU által rövid időn belül elérhető maximális energiafogyasztás.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>A CPU által elérhető maximális pillanatnyi energiafogyasztás.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>A maximális energiafogyasztás, amelyet a CPU elérhet, ha a CPU és a GPU teljes mértékben ki van használva.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>A CPU által kisebb késleltetéssel elérhető maximális energiafogyasztás.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>A maximális hőmérséklet, amelyet a CPU elérhet, mielőtt a frekvencia és a teljesítmény csökkenne.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>A GPU-nak a CPU energiafogyasztása alapján kiosztható további maximális teljesítmény.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>A GPU-nak az alap energiafogyasztáson felül kiosztható további teljesítmény.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Az a maximális hőmérséklet, amelyet a GPU elérhet, mielőtt a frekvencia és a teljesítmény csökkenne.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Alapértelmezett</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Rövid távú teljesítménykorlátozás időtartama</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Az az időtartam, ameddig a CPU növelheti és használhatja a rövid távú teljesítménykorlátozást. Ha a Tau lejár, a hosszú távú teljesítménykorlátozás kerül használatba.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Teljes processzor teljesítménycél AC-ben</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Az a pont, amikor a CPU elindítja a GPU dinamikus energiafogyasztásának beállítását.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Létrehozás</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Lépés hozzáadása</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Művelet létrehozása</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Teljesítménymód</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Sablon</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Diszkrét GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Áramellátás állapota</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Akkumulátor</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Mód</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Merülési ráta</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Frissítés érhető el!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Ikon kiválasztása</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Ikon módosítása</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Alacsony töltöttség</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Beállítás</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>S0 Alacsonyabb teljesítményű modell észlelve</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>A Windows jelentése szerint ez a laptop támogatja a Modern Standby funkciót. A Kiegyensúlyozottaktól eltérő energiatakarékossági tervek használata váratlan viselkedést okozhat.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Válassza ki az Energiagazdálkodási mód változása esetén alkalmazandó Windows energiatakarékossági terveket.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Tápellátás</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Energiaséma beállítások a Windows Vezérlőpultban</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Kikapcsolva</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Billentyűzet háttérvilágítás profil importálása</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>A háttérvilágítás konfigurációjának importálása és alkalmazása az aktuális profilhoz.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Elérési út</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Ezután {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Több trigger...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>GPU Overclock beállítások</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Core Frequency Eltolás</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Memory Frequency Eltolás</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU Overclock</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Növelje a teljesítményt a diszkrét GPU túlhajtásával.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Overclock</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Növelje a teljesítményt a diszkrét GPU túlhajtásával.\n\nFIGYELMEZTETÉS: Ez a művelet nem fog megfelelően futni, ha nem áll rendelkezésre diszkrét GPU.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Portok háttérvilágítása</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Kapcsolja be vagy ki a laptop hátoldalán lévő portok háttérvilágítását.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Portok háttérvilágítása</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kapcsolja be vagy ki a laptop hátoldalán lévő portok háttérvilágítását.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Panel logó háttérvilágítás</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Kapcsolja be vagy ki a laptop fedelén lévő háttérvilágítást.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Panel logó háttérvilágítás</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kapcsolja be vagy ki a laptop fedelén lévő háttérvilágítást.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Maximum: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Kihasználtság</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Mag órajel</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Hőmérséklet</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Ventilátor</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Memória órajel</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Frissítési gyakoriság</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Instant Boot</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Kapcsolja be a laptopot, ha a töltő csatlakoztatva van.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Instant Boot</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kapcsolja be a laptopot, ha a töltő csatlakoztatva van.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Nem lehet megváltoztatni a Teljesítmény üzemmódot</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>{0} üzemmód nem érhető el hálózati AC áram nélkül.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Szenzorok</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Nem tudta megváltoztatni a GPU munkamódját</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Ha nem látja a várt eredményt, pár másodperc múlva próbálja meg újra megváltoztatni az üzemmódot.\nHa a dGPU egyáltalán nem reagál, kérjük, indítsa újra a laptopját.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>A dGPU jelenleg használatban van</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>A dGPU automatikusan kikapcsol, ha nincs használatban.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>A dGPU jelenleg használatban van, vagy a laptop nem akkumulátorról működik</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>A dGPU automatikusan kikapcsol, ha nincs használatban, és a laptop akkumulátorral működik.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Az Egyéni mód beállításai nem lesznek megfelelően alkalmazva, ha a Lenovo Vantage vagy annak szolgáltatásai futnak.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Az Egyéni mód beállításai nem lesznek megfelelően alkalmazva, ha a Legion Zone vagy annak szolgáltatásai futnak.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU csatlakoztatva</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPU lekapcsolva</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU működési mód</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Válassza ki a GPU működési módját a számítógép használatának és az energiaellátás körülményeinek megfelelően.\nAz üzemmódok váltása újraindítást igényelhet.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hibrid mód</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Lehetővé teszi az integrált és a diszkrét GPU közötti váltást.\nÚjraindítást igényel.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Időtartam</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Frissítések</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>GPU és CPU közötti dinamikus boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Ez az a maximális többletteljesítmény, amely a CPU-nak a GPU-tól a CPU-használat alapján kiosztható. Minél magasabb az érték, annál jobb a CPU-t használó alkalmazások teljesítménye.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Boot logó</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>A rendszer indításakor látható Boot Logo kép testreszabása.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Boot logó</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Alapértelmezett boot logó beállítva</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Testreszabott boot logó beállítva</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Státusz</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Alapértelmezett visszaállítása</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Testreszabás</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Műveletek</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Értesítési szöveg</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Értesítés megjelenítése</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Előbeállítás</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Smart Fn Zár</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Az Fn Zár ideiglenesen kikapcsol, ha az Alt, Ctrl vagy Shift billentyű le van nyomva.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Ki</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Az egyéni boot logónak pontosan {0} pixel méretűnek kell lennie.\nA támogatott formátumok a következők: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Éjszakai akkumulátortöltés</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Ha engedélyezve van, ez a készülék éjszakára 80%-ra töltődik, amikor csatlakoztatva van, és reggelre 100%-ra töltődik, mire használja a készüléket.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Éjszakai akkumulátortöltés</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ha engedélyezve van, ez a készülék éjszakára 80%-ra töltődik, amikor csatlakoztatva van, és reggelre 100%-ra töltődik, mire használja a készüléket.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Érvénytelen képméret.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Érvénytelen képformátum.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Nem lehet csatlakoztatni az EFI partíciót.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Nem lehet UEFI jogosultságot beállítani.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Nincs elég szabad hely az EFI partíción.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Az egyéni logót nem lehetett beállítani: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Az alapértelmezett logót nem lehetett beállítani: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Az alapértelmezett boot logó beállításra került.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Az testreszabott boot logó beállításra került.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Hálózat neve (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Jelenlegi hálózat nevének másolása</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Hagyja üresen bármilyen Wi-Fi hálózat esetén.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Ossza meg a ventilátor sebességét, az akkumulátor hőmérsékletét stb. a HWiNFO64-gyel. Előfordulhat, hogy az opció módosítása után újra kell indítania a HWiNFO64-et.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Integrációk</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Beállítások</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Információ</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Letöltési könyvtár</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Letöltési mappa megnyitása</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Letöltés</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>OLVASSEL Megnyitása</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Előbeállítás</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Újratölt</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Törlés</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Periódus (perc)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>A rendszer újraindításakor visszaállítja az „Akkumulátoron ennyi ideje” számlálót az akkumulátor szakaszban.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>„Akkumulátoron ennyi ideje” visszaállítása indításkor</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Wi-Fi kikapcsolása</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Wi-Fi bekapcsolása</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Futás csendben</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Várjon, amíg befejeződik</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Konzolalkalmazások végrehajtása konzolablak létrehozása nélkül.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Várjon, amíg a program vagy a szkript befejezi a végrehajtást</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Némításkor az összes aktív hangkimeneti eszköz elnémul.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hangszóró</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Kicsinyítés a rendszerikonok közé</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Mindig a rendszerikonokhoz minimalizálja a programot a tálca helyett.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Windows energiagazdálkodási módok</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Egyéni módra váltás az Fn+Q billentyűkombinációval</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Gyors váltás egyéni módba az Fn+Q billentyűkombinációval.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Teljesítmény üzemmód szinkronizálása</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>A Windows energiagazdálkodási terv vagy a Windows energiaellátási mód automatikus módosítása az energiaellátási módok váltásakor.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Windows energiagazdálkodási módok</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Válassza ki a Windows Energiagazdálkodási módot az Energiagazdálkodási mód változása esetén történő alkalmazáshoz.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Hiba lépett fel az eszközinformációk olvasásakor.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Makró</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Makró</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Ismétlés</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Késedelmek figyelmen kívül hagyása</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Törlés</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Felvétel</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Felvétel leállítása</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Nincs ismétlés</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>A makrók működéséhez a Lenovo Legion Toolkit-nek futnia kell.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Engedélyezés</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>A billentyűleütések sorozatát rögzítheti, és a billentyűzet számtáblájával hívhatja elő őket.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Makró</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Makrók engedélyezése vagy letiltása.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Megszakítás, ha egy másik billentyűt nyomtak le</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Elrejtés</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Összes elrejtése</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Eszközök</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Összes kijelölés megszüntetése</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Összes kijelölése</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Csak billentyűzet</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Billentyűk és egérgombok</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Minden bemenet</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>A felvételek beállításai</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>A felvétel 3 másodperc múlva indul...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Felvétel...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>A leállításhoz nyomja meg az ESC gombot.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Csak a kiválasztott eszközök megjelenítése</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Csak az eltávolítható eszközök megjelenítése</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Csak a csatlakoztatott eszközök megjelenítése</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>CLI</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Engedélyezze a parancssori felületet, amely lehetővé teszi a vezérlést a parancssorból.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>CLI hozzáadása a PATH-hoz</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>A CLI hozzáadása a felhasználó PATH környezeti változójához.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Hőmérséklet</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Válassza ki a hőmérséklet-érzékelők egységeit.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>A Lenovo Hotkeys a háttérben fut.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>A Legion Zone a háttérben fut.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage és/vagy ImController fut a háttérben.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Mutassa az értesítéseket minden csatlakoztatott kijelzőn.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Értesítések minden kijelzőn</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Ellenőrzés</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Frissítések keresése...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Frissítések ellenőrzése</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Frissítés</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>Az API ráta korlátját elértük, kérjük, próbálja meg később újra.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Nem sikerült ellenőrizni a frissítéseket</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Hiba történt. Kérjük, próbálkozzon később.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Nincs elérhető frissítés</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Frissítések automatikus keresése</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Frissítési katalógus nem található</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Próbáljon meg frissítéseket más forrásból szerezni.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Valami nem sikerült</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Ellenőrizze, hogy az internetkapcsolata működik-e.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hang lejátszása</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Az általános zenei formátumok, mint a wav vagy az mp3, támogatottak.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Gyors művelet</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Mentett gyors művelet futtatása.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\" xml:space=\"preserve\">\n    <value>Értesítések mindig legfelül</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\" xml:space=\"preserve\">\n    <value>Tegye az értesítéseket mindig legfelülre.\nNincs hatással a többi teljes képernyős ablakokra, de nem lehet kattintani az értesítésekre.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.it.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Ultima versione su GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Links</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Pagina del progetto su Github</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Informazioni su</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Traduzioni a cura della comunità.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Versione</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Aggiungi</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Aggiungi Evento</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Alimenta i dispositivi connessi alle porte USB, quando il computer è spento, in standby o in ibernazione.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>USB sempre attive</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Alimenta i dispositivi connessi alle porte USB, quando il computer è spento, in standby o in ibernazione.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>USB sempre attive</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Salva</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Salva ed esci</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit deve rimanere in esecuzione per far funzionare le azioni automatizzate.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Abilita</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Nessuna azione configurata. clicca su \"Aggiungi nuova\" per configurare una nuova azione.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Se attive, queste azioni verranno eseguite automaticamente secondo gli eventi configurati. La priorità delle azioni è dall'alto verso il basso.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Azioni automatizzate</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nome...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Aggiungi Evento</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Nessuna azione rapida configurata. clicca su \"Aggiungi nuova\" per configurare una nuova azione rapida.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Le azioni rapide sono disponibili nel menu contestuale facendo click destro sull'icona di Legion Toolkit nella tray di windows.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Azioni rapide</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nome...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Rinomina</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Tutte le modifiche sono state annullate!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Modifiche Annullate</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Le modifiche sono state salvate correttamente!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Salvato</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automazione</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Aggiungi azione</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Configura</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Esclusivo</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Non eseguire ulteriori azioni durante l'esecuzione di questa azione.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Esegui ora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Eseguito con errori.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Esegui ora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Eseguito correttamente!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Esegui ora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>In esecuzione...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} azione</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} azioni</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Applicazioni</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>All'alba</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Al tramonto</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>Alle {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Modalità energetica</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Senza nome</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Rileva automaticamente quando alcuni giochi sono in esecuzione e modifica le prestazioni della CPU e della GPU. Le temperature e la rumorosità delle ventole potrebbe aumentare.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Abilita motore AI</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Impostazioni modalità Bilanciata</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Scegli come caricare la batteria.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modalità batteria</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Scegli come caricare la batteria.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Modalità batteria</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Connesso, in carica...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Connesso, non in carica</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Temperatura attuale della batteria.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura batteria</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacità attuale della batteria.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacità attuale</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Numero di cicli di carica/scarica.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Cicli di carica</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacità batteria prevista da progetto.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacità progettata</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Velocità alla quale la batteria viene caricata (+) o scaricata (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Tasso di scarica</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Tempo stimato rimanente: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Ricalcolo l'autonomia...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Data primo utilizzo</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Quando la batteria è stata usata la prima volta.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacità della batteria quando è totalmente carica.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacità batteria totalmente carica</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Alimentatore a bassa potenza collegato</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Quando è stata prodotta la batteria.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Data di produzione</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Tempo trascorso dall'ultimo collegamento dell'alimentatore.\nl'orario indicato potrebbe non essere corretto se il laptop è stato caricato mentre era in standby o spento.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>A batteria da</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Batteria</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Annulla</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Chiudi</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Blu</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Rosso</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Seleziona automaticamente la modalità energetica della GPU in base all'utilizzo e alle condizioni energetiche.\nCambiare questa impostazione richiede il riavvio.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Il cambio a {0} richiede il riavvio. Vuoi riavviare adesso?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>È necessario riavviare il computer per attivare questa opzione</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Modalità operativa GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Azioni rapide</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Continua</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Copia tutto</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafica</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Altro</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Alimentazione</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Pagina iniziale</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Disattiva la GPU dedicata se inutilmente attiva.\n\nAttenzione: Questa azione non funzionerà correttamente se il display è spento o la modalità Ibrida non è attiva.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Disattiva GPU dedicata</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aggiungi una pausa prima di eseguire la prossima azione.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Pausa</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Elimina</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Versione BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Testo copiato negli appunti.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" è stato copiato.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Copiato!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Dispositivo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Supporto Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Codice modello</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Produttore</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Modello</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Numero seriale</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Informazioni sul dispositivo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Data di scadenza</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Data di inizio</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garanzia</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Attivata</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Disattiva</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Disattivata</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Chiudi applicazioni</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Disattiva la GPU dedicata se inutilmente attiva.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Un monitor è collegato alla GPU Nvidia.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Nessun processo</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Stato delle prestazioni</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Sconosciuto</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Processi</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Riavvia GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU dedicata</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Cambia la luminosità del display integrato.\nAlcune opzioni energetiche potrebbero cambiare la luminosità su alcuni dispositivi. Lascia per ultimo questa azione, se le cose non funzionano correttamente.\n\nATTENZIONE: questa azione non verrà eseguita correttamente se il display interno è spento.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luminosità Display</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Dona con</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Lo sviluppo e il mantenimento di Lenovo Legion Toolkit richiede parecchio tempo. Se ti piace usare questo software puoi supportarlo donando una cifra a tua scelta.\n\nClicca il logo PayPal qui sotto oppure scansiona il QR code per donare con PayPal.</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Donazioni</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Modifica</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Deseleziona le frequenze di aggiornamento che non desideri utilizzare quando viene utilizzata la scorciatoia Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Assicurati che il display del laptop sia acceso. Lenovo Legion Toolkit non può caricare le frequenze di aggiornamento per un display non acceso.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Nessun refresh rate trovato</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Escludi refresh rate</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Esci</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Esporta</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Usa solo la GPU integrata quando è a batteria e sia la GPU integrata che quella dedicata quando è collegato l'adattatore CA. Quando è collegato un adattatore non standard, il sistema passa alla modalità solo GPU ibrida-integrata.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Modalità ibrida-automatica</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Il passaggio a/da questa modalità richiede il riavvio.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Usa solo la GPU dedicata. Questa opzione offre le migliori prestazioni, ma aumenta il consumo energetico.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Modalità GPU dedicata</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Sia la GPU integrata che quella dedicata sono abilitate. Il sistema passerà automaticamente da uno all'altro in base alle sue esigenze.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Modalità ibrida</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Questa modalità ha effetto solo quando la GPU dedicata non funziona.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Usa solo la GPU integrata. Questa modalità riduce il consumo energetico e riduce il rumore delle ventole.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Modalità GPU Integrata-Ibrida</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Informazioni sulle modalità di lavoro della GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Sensore CPU</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Velocità Ventole</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>Giri/min</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Accende il laptop quando apri il coperchio.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Accende il laptop quando apri il coperchio.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Utilizzare le funzioni secondarie dei tasti F1-F12 senza tenere premuto il tasto Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Utilizzare le funzioni secondarie dei tasti F1-F12 senza tenere premuto il tasto Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Non modificare le opzioni seguenti a meno che tu non sappia davvero cosa stai facendo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Avanzate</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Long Term Power Limit (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Long Term Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Short Term Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Temperatura limite CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Non è stato possibile salvare le impostazioni</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Impossibile caricare le impostazioni.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>La velocità della ventola non è strettamente determinata da un sensore di temperatura. Aumenterà o abbasserà la velocità in base al sensore più alto tra la temperatura di CPU, GPU e dissipatore di calore. I valori esatti appariranno quando passi il mouse su ogni step.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Curva ventole</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>AVVERTIMENTO! L'uso prolungato di questa opzione degraderà le ventole diminuendone la longevità. Seriamente, fai attenzione con questa opzione!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Velocità massima ventole</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventole</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>TGP Configurabile</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limite temperatura GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Impostazioni modalità personalizzata</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Abilita la gamma dinamica elevata (HDR) sul display integrato.\n\nATTENZIONE: questa azione non verrà eseguita correttamente se il display interno è spento.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Abilita la gamma dinamica elevata (HDR) sul display integrato.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>L'utilizzo dell'HDR è bloccato dalle impostazioni di Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importa</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Questo dispositivo non è compatibile con Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Nessuna tastiera compatibile trovata</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Retroilluminazione tastiera</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Informazioni su</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Azioni</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Batteria</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Pannello di controllo</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Donazioni</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Tastiera</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Downloads</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Impostazioni</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Aggiornamento disponibile!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>L'aggiornamento {0} è disponibile!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Sposta giù</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Sposta su</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Alimentatore collegato</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Alimentatore collegato (bassa potenza)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Alimentatore scollegato</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Fotocamera disattivata</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Fotocamera attivata</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock off</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock on</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock off</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock on</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Microfono disattivato</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Microfono attivato</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock off</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock on</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Retroilluminazione {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Luminosità {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profilo {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad off</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad on</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Retroilluminazione {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Alimentatore</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Fotocamera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Bloc Maiusc e Bloc Num</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Non mostrare notifiche</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Retroilluminazione tastiera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Microfono</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Posizione</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Modalità di alimentazione</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Frequenza Aggiornamento</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart Key</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Notifiche</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Blocca Touchpad</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Apri</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Migliora il tempo di risposta del display integrato.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Migliora il tempo di risposta del display integrato.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} scaricato!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Download completato</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Si è verificato un errore</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Il server ha restituito il codice 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Il file sembra essere sparito</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Controlla se la tua connessione Internet è attiva e funzionante.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Si è verificato un errore</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Aggiornamento disponibile!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Questo pacchetto ha più di un anno.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Versione</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Qua sotto è riportato un elenco di pacchetti software contrassegnati come compatibili con il tuo laptop. \nAssicurati sempre di installare i pacchetti corretti.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Verificare se il tipo di macchina e il sistema operativo sono impostati correttamente.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Si è verificato un errore</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Modificare l'ordinamento, filtrare i risultati, nascondere i pacchetti o aggiornare l'elenco interromperà il download. Vuoi continuare?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Download in corso</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtra...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Codice modello</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Sistema Operativo</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Ufficiale (consigliato)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Come Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Terze parti</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Come Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Categoria</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Data</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Fonte</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Downloads</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Incolla</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Cambia la modalità energetica.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modalità energetica</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Cambia la modalità energetica.\nPuoi anche usare la scorciatoia Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Opzioni</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Modalità energetica</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>La modalità di alimentazione selezionata potrebbe non funzionare correttamente senza un alimentatore collegato.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modifica retroilluminazione tastiera.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Retroilluminazione tastiera</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Luminosità</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Tema 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Tema 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Tema 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Spenta</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zona 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zona 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zona 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zona 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Effetto</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Velocità</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Leggimi</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Refresh</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modifica la frequenza di aggiornamento del display integrato.\n\nATTENZIONE: questa azione non verrà eseguita correttamente se il display interno è spento.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Frequenza di aggiornamento</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Cambia la frequenza di aggiornamento dello schermo integrato.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Frequenza di aggiornamento</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Rinomina</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Riavvierò più tardi</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Riavvia adesso</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Annulla modifiche</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Parametri</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Percorso dell'eseguibile</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Esegui uno script o un programma.\nAssicurati prima, che il tuo script funzioni correttamente.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Esegui</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Salva</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Salvataggio...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Scegli una o più azioni rapide da ciclare</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Nessuna azione rapida definita.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Mostra questa app</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Cambia il colore dell'app.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Colore</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Inizia ridotto a icona quando accedi a Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Esecuzione automatica</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone potrebbe non essere disabilitato correttamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Impossibile disattivare Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Disabilita Legion Zone e i suoi servizi senza disinstallarli.\nIl riavvio è consigliabile dopo aver cambiato questa impostazione.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Disabilita Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys potrebbe non essere disabilitato correttamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Impossibile disattivare Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Disabilita Lenovo Hotkeys e i suoi servizi senza disinstallarli.\nSe disabilitata questa app gestirà i tasti Fn\nIl riavvio è consigliabile dopo aver cambiato questa impostazione.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Disabilita Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Disabilita Lenovo Vantage e i suoi servizi senza disinstallarli.\nIl riavvio è consigliabile dopo aver cambiato questa impostazione.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Disabilita Lenovo Vantage</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone potrebbe non essere abilitato correttamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Impossibile abilitare Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys potrebbe non essere abilitato correttamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Impossibile abilitare Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Puoi escludere le frequenze di aggiornamento per rendere più comoda la scorciatoia Fn+R.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Escludi refresh rate</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Seleziona lingua.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Lingua</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Riduci sempre a icona. Chiudi con il tasto destro del mouse sull'icona nella barra delle applicazioni.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimizza alla chiusura</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Configura quali notifiche vengono visualizzate.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Notifiche</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Piani energetici</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Assegna azione rapida a Fn+F9 doppia pressione.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Azione secondaria della chiave intelligente</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Assegna azione rapida a Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Azione chiave intelligente</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Imposta il tema chiaro/scuro o segue le impostazioni di sistema.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Impostazioni</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Regola la luminosità della tastiera.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Spento</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luminosità retroilluminazione tastiera</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Aggiungi effetto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Impossibile applicare il profilo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Impossibile applicare il profilo di illuminazione.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Luminosità</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Deseleziona tutte le zone</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Effetti</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Il profilo non può essere esportato</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Impossibile esportate il profilo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Il profilo non può essere importato</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Impossibile importare il profilo</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Nessun effetto impostato.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Reimposta a predefinito</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Deseleziona tutte le zone</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Cambia layout della tastiera</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Direzione</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Colore</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Colori</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Direzione</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Effetto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Questo effetto verrà applicato all'intera tastiera e sostituirà tutti gli altri effetti.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Velocità</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Aggiungi effetto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Modifica effetto</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modifica profilo retroilluminazione tastiera.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Profilo retroilluminazione tastiera</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Tutti i tasti</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zone</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Alba</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Tramonto</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Orario</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Consente di scegliere se usare la GPU integrata o la dedicata.\nRichiede il riavvio.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Per attivare/disattivare la modalità ibrida è necessario il riavvio. vuoi riavviare adesso?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Riavvio richiesto</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Modalità ibrida</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Disattiva il touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Blocca Touchpad</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Disattiva il touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Blocca Touchpad</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Riprova</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Senza nome</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Puoi scegliere di continuare a tuo rischio, ma tieni presente che alcune funzionalità potrebbero non essere disponibili e/o non funzionare correttamente. \n\nIl logging verrà abilitato automaticamente, se scegli di continuare.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Controlla la pagina del progetto su GitHub per ulteriori informazioni.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Cartella dei file di registro</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Codice modello</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit non è stato testato per il tuo dispositivo.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Modello</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Dispositivo non supportato</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Produttore</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Aggiornamento</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Aggiornamento disponibile</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Cosa c'è di nuovo?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Regola la luminosità della tastiera.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Retroilluminazione tastiera</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Puoi cambiare la retroilluminazione con Fn+Spazio</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Retroilluminazione tastiera</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Funziona solo sulla tastiera integrata.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Blocca tasto Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Si</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Microfono</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Se spento, Il microfono sarà mutato.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Microfono</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Se spento, Il microfono sarà mutato.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Risoluzione</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Cambia la risoluzione dello schermo integrato.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Risoluzione</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modifica la risoluzione del display integrato.\n\nATTENZIONE: questa azione non verrà eseguita correttamente se il display interno è spento.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Cambia il fattore di scala dello schermo integrato.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modifica il fattore di scala del display integrato.\n\nATTENZIONE: questa azione non verrà eseguita correttamente se il display interno è spento.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Schermo</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Retroilluminazione tastiera</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Puoi spegnere o accendere la retroilluminazione tastiera con Fn+Spazio.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Retroilluminazione tastiera</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Accendi o spegni retroilluminazione tastiera.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Nessun elemento corrispondente trovato</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Visualizza solo gli aggiornamenti</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Personalizza Dashboard</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Ripristina</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Crea gruppo</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Alcune opzioni potrebbero non apparire nella Dashboard in base allo stato e configurazione del tuo dispositivo.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Personalizza</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Spegni i display</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Spegni tutti i display.\nSpostare il mouse o premere il tasto sulla tastiera per risvegliarli.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Spegni</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Spegni i display</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Spegni tutti i display.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Modifica il nome del gruppo</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Logo Legion acceso</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Logo Legion spento</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Retroilluminazione porte accesa</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Retroilluminazione porte spenta</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Riavvio richiesto</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Spegnimento richiesto</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Riavvio consigliato</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Salva &amp; chiudi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Nome preset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temp</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Quando attivo, lo stesso livello di luminosità verrà applicato a tutti i profili energia.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Predefinito</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Aggiungi azione</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Modalità di alimentazione</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>GPU dedicata</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Batteria</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Tasso di scarica</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Aggiornamento disponibile!</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Alimentazione</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Spento</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.ja.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>GitHubの最新リリース</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>リンク</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>GitHubのリポジトリ</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>サードパーティのライブラリ</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>このソフトの情報</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>anmoti によって日本語に翻訳されました。</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>追加</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>新しく追加</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>デバイスの電源がオフ、スリープ、または休止状態の場合にUSB機器を充電します。</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>USBの常時給電</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>デバイスの電源がオフ、スリープ、または休止状態の場合にUSB機器を充電します。</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>USBの常時給電</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>適用</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>適用して閉じる</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>自動アクションが機能するには、Lenovo Legion Toolkit が実行されている必要があります。</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>有効化</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>アクションが定義されていません。「新しく追加」をクリックして新しいアクションを作成します。</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>有効にすると、これらのアクションは自動的に実行されます。状態が変化するたびに、すべてのアクションが上から下に評価されます。\n現在の状態と一致するアクションのみが実行されます。</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>アクション</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>名前...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>新しく追加</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>クイック アクションが定義されていません。「新しく追加」をクリックして、新しいクイックアクションを作成します。</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>クイック アクションは、トレイ アイコンの右クリックメニューから実行できます。</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>クイックアクション</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>名前...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>名前を変更</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>すべての変更を元に戻しました！</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>復元済</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>変更は正常に保存されました。</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>保存しました</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>自動化</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>ステップを追加</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>このアクションの実行中は、それ以外のアクションを実行しないでください。</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>今すぐ実行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>エラーありで完了</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>今すぐ実行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>正常に終了しました！</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>今すぐ実行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>実行中...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} ステップ</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} ステップ</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>アプリケーション</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>日の出</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>日の入り</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>えっと {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>電源モード</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>名称未設定</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>特定のゲームの実行中を自動的に検出し、CPU と GPU のパフォーマンスを調整します。温度とファンの騒音が増加する可能性があります。</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>AIエンジンを有効化</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>バランスモードの設定</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>バッテリーの充電方法を選択します。</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>バッテリーモード</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>バッテリーの充電方法を選択します。</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>バッテリーモード</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>電源に接続済み。充電しています。</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>電源に接続済み。充電していません。</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>バッテリーの現在の温度</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>バッテリーの温度</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>現在のバッテリーの容量</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>現在の容量</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>充電/放電サイクルの数</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>充電回数</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>設計時のバッテリーの最大容量</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>設計時の最大容量</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>バッテリーの充電 (+) または放電 (-) の速度</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>出力量</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>推定残り時間: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>残り時間を計算中...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>初回使用日</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>バッテリーを初めて使用した年月日</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>フル充電時のバッテリーの容量</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>バッテリーの最大容量</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>低出力な電源が接続されています。</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>バッテリーが製造された年月日</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>製造日</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>デバイスが最後に電源に接続されてからの時間\nデバイスがスリープ、電源オフのときに充電されていた場合、この時間は正確ではない可能性があります。</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>バッテリー駆動時間</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>バッテリー</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>キャンセル</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>閉じる</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>青</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>緑</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>赤</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>コンピューターの使用状況と電源状態に基づいて GPU 動作モードを選択します。\nモードを切り替えるには再起動が必要になる場合があります。</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>{0} に変更するには再起動が必要です。今すぐ再起動しますか？</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>再起動が必要です</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>GPU動作モード</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>クイックアクション</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>続行</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>すべてをコピー</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>グラフィック</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>その他</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>電源</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>ホーム</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>ディスクリートGPUが不必要にアクティブになっている場合は無効にします。\n\n警告: 内蔵ディスプレイがオフになっているか、ハイブリッドモードがアクティブでない場合、このアクションは正しく実行されません。</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPUを非アクティブ化</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>次のステップを実行する前に遅延を追加する。</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>遅延</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS バージョン</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>テキストをクリップボードにコピーしました。</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>「{0}」をクリップボードにコピーしました。</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>コピーしました！</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>デバイス</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Support</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>デバイスの種類</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>製造元</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>モデル</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>シリアルナンバー</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>このデバイスについて</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>終了日</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>開始日</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>保証</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>有効</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>無効</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>無効</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>アプリを強制終了</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>ディスクリートGPUが不必要にアクティブになっている場合は無効にします。</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>モニターは NVIDIA GPU に接続されています。</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>プロセスがありません</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>パフォーマンスの状態</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>不明</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>プロセス</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>GPUを再起動</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>ディスクリートGPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイの表示輝度を変更します。\n\n警告: 内蔵ディスプレイがオフの場合、このアクションは正しく実行されません。</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>ディスプレイの明るさ</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>寄付はこちら</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit の開発とメンテナンスには多くの時間がかかります。このソフトウェアが良いと思った場合は寄付をお願いします。寄付をすることで長期的にメンテナンスされます。\n\nPayPal で寄付するには、下の PayPal ロゴをクリックするかQR コードをスキャンしてください。</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>寄付</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>編集</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Fn+R ショートカットを使用するときに、使用しないリフレッシュレートのチェックを外します。</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>デバイスのディスプレイがオンになっていることを確認します。Lenovo Legion Toolkitは、電源が入っていないディスプレイのリフレッシュレートをロードできません。</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>リフレッシュレートが見つかりません</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>リフレッシュレートの除外</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>終了</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>エクスポート</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>バッテリ使用時は内蔵GPU (iGPU) のみを使用し、ACアダプタが接続されている場合は内蔵GPUとディスクリートGPU (dGPU) の両方を使用します。低出力なアダプタが接続されている場合は、システムは「ハイブリッドiGPU専用モード」に切り替わります。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>オートハイブリッドモード</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>このモードの切り替えには、再起動が必要です。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>ディスクリートGPU (dGPU) のみを使用します。このモードでは、最大のグラフィック性能が得られますが、消費電力が大きくなります。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>dGPUモード</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>内蔵GPU (iGPU) とディスクリートGPU (dGPU) の両方が有効になります。システムは必要に応じて自動的に切り替わります。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>ハイブリッドモード</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>このモードは、ディスクリートGPU (dGPU) が機能していない場合にのみ有効になります。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>内蔵GPU (iGPU) のみを使用します。このモードでは、消費電力とノイズを最小限に抑えます。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>ハイブリッドiGPU専用モード</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>GPUの動作モードについて</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPUセンサー</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>ファン回転速度</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>画面を開くとラップトップの電源が入ります。</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>画面を開いたら起動</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>画面を開くとラップトップの電源が入ります。</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>画面を開いたら起動</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Fn キーを押したままにせずに、F1 ～ F12 キーの二次機能を使用します。</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Fn キーを押したままにせずに、F1 ～ F12 キーの二次機能を使用します。</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>警告！\n一部のデバイスは、表示されるよりも低い値を受け付ける場合がありますが、注意が必要です。このオプションにより、予測不能な動作が発生する可能性があります。これがなにかわからない場合は、0に設定してください。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>最小オフセット</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>警告！\n一部のデバイスは、表示されるよりも高い値を受け付ける場合がありますが、注意が必要です。このオプションにより、予測不能な動作が発生する可能性があります。これがなにかわからない場合は、0に設定してください。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>最大オフセット</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>以下に示すオプションは、何を操作しているのかをよく理解している場合にのみ変更してください。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>高度</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Long Term Power Limit (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Long Term Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Short Term Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPUの温度制限</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>設定を適用できませんでした</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>PWA設定を読み込めません。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>ファンの速度は、1つの温度センサーによって厳密に決まるわけではありません。CPU、GPU、ヒートシンクの温度の最も高いセンサーに応じて速度を上げたり下げたりします。正確な値は各ステップにマウスを合わせると表示されます。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>ファンの速度</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>警告！\nこのオプションを長時間使用すると、ファンが劣化して寿命が短くなります。\nこのオプションを使用する際は 本当に 注意してください。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>最大ファン速度</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>ファン</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>構成可能なTGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>ダイナミックブースト</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>GPUの温度制限</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>カスタムモード設定</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイでハイダイナミックレンジ（HDR）を有効にします。\n\n警告: 内蔵ディスプレイがオフの場合、このアクションは正しく実行されません。</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイでハイダイナミックレンジ（HDR）を有効にします。</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>HDRの使用はWindowsの設定によってブロックされています。</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>インポート</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>このデバイスは Lenovo Legion Toolkit と互換性がありません。</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>互換性のあるキーボードが見つかりません</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>キーボードバックライト</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage またはそのサービスの実行中は、ここでキーボードのバックライトを制御できません。</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage またはそのサービスが実行されています</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>ヘルプ</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>アクション</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>バッテリー</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>ダッシュボード</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>寄付</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>キーボード</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>ダウンロード</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>更新があります！</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>バーション {0} の更新があります！</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>下へ移動</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>上へ移動</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>いいえ</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>ACアダプターが接続されました</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>ACアダプター（低出力）が接続されました</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>ACアダプターが切断されました</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>カメラが無効になりました</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>カメラが有効になりました</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lockが無効になりました</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lockが有効になりました</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fnキーが有効になりました</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fnキーが無効になりました</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>マイクが無効になりました</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>マイクが有効になりました</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lockが無効になりました</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lockが有効になりました</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>バックライト {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>明るさ {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>プロファイル {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>タッチパッドが無効になりました</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>タッチパッドが有効になりました</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>バックライト {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>ACアダプタ</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>カメラ</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock と Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>マイクのミュートなどの Fn キー操作の通知を無効にします。\n全画面アプリケーションと競合する場合は、このオプションを有効にします。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>通知を非表示</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>キーボードバックライト</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>マイク</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>位置</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>電源モード</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>リフレッシュレート</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart Key</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>通知</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Touchpad Lock</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>開ける</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイの応答時間を改善します。</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイの応答時間を改善します。</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} をダウンロードしました！</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>ダウンロードが完了しました</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>エラーが発生しました</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>サーバーからコード 404 が返されました。</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>ファイルが見つからないようです</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>インターネット接続が機能していることを確認してください。</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>エラーが発生しました</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>更新があります！</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>このパッケージは１年以上前のものです。</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>以下はこのデバイスと互換性があるとマークされているソフトウェアパッケージのリストです。\n常に正しいパッケージをインストールしていることを確認してください。</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>エラーが発生しました</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>ダウンロードが進行中です</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>フィルタ...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>デバイスの種類</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>オペレーティングシステム</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>プライマリ (推奨)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantageと同じ</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>セカンダリ</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Lenovo PC Supportと同じ</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>カテゴリー</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>日付</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>ソース</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>ダウンロード</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>貼り付け</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>パフォーマンスモードを変更します。</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>電源モード</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>パフォーマンスモードを変更します。\nパフォーマンスモードは Fn+Q でも変更できます。</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>電源モード</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>AC アダプタが接続されていないと、選択した電源モードが正しく動作しない可能性があります。</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>既定</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Windows電源プラン</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>キーボードのバックライトのプリセットを調整します。</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>キーボードバックライト</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>明るさ</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>プリセット 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>プリセット 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>プリセット 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>プリセット 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>ゾーン 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>ゾーン 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>ゾーン 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>ゾーン 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>エフェクト</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>速度</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>お読み下さい</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイのリフレッシュレートを変更します。\n\n警告: 内蔵ディスプレイがオフの場合、このアクションは正しく実行されません。</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>リフレッシュレート</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイのリフレッシュレートを変更します。</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>リフレッシュレート</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>名前を変更</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>後で再起動</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>今すぐ再起動</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>元に戻す</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>引数</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>実行パス</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>スクリプトまたはプログラムを実行します。\nこの項目を設定する前に、スクリプトが正しく実行されることを確認してください。</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>実行</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>保存</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>保存しています...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>循環する１つ以上のクイック アクションを選択します</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>クイックアクションが定義されていません。</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>このアプリケーションを表示する</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>アプリのアクセントカラーを変更できます。</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>アクセントカラー</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Windowsにログオンした時にシステムトレイに最小化して起動します。</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>自動起動</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zoneを無効にできませんでした</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Legion Zoneとそのサービスをアンインストールせずに無効にします。\nこのオプションを変更した後はデバイスを再起動することをお勧めします。</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Legion Zoneを無効化</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys は正しく無効になっていない可能性があります</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys を無効にできませんでした</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys とそのサービスをアンインストールせずに無効にします。\n無効にすると、このアプリは Fn ショートカットを処理します。\nこのオプションを変更した後はデバイスを再起動することをお勧めします。</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys を無効化</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo VantageとImControllerの両方またはいずれか一方が正しく無効になっていない可能性があります</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo VantageとImControllerの両方またはいずれか一方を無効にできませんでした</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage と ImController をアンインストールせずに無効にします。\nこのオプションを変更した後はデバイスを再起動することをお勧めします。</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage と ImController を無効化</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zoneを有効にできませんでした</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys は正しく有効になっていない可能性があります</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo VantageとImControllerの両方またはいずれか一方が正しく有効になっていない可能性があります</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo VantageとImControllerの両方またはいずれか一方を有効にできませんでした</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Fn+R ショートカットをさらに便利にするために、リフレッシュレートを除外できます。</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>リフレッシュレートの除外</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>このソフトウェアで表示する言語を選択できます。</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>言語</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>常にトレイに最小化します。トレイのアイコンを右クリックしてアプリケーションを閉じます。</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>終了時に最小化</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>どの通知を表示するかを設定できます。</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>通知</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Windows電源プラン</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Fn+F9 の２回押しにクイック アクションを割り当てることができます。</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>スマートキーアクション（２回押し）</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Fn+F9 の１回押しにクイック アクションを割り当てることができます。</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>スマートキーアクション</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>テーマをライト、ダークから指定できます。システムに従うこともできます。</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>テーマ</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>キーボードのバックライトの明るさを調整します。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>キーボードのバックライトの明るさ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>エフェクトを追加</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>プロフィールを適用できませんでした</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>ライティングプロファイルを適用できませんでした。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>明るさ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>すべてのノードの選択を解除</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>エフェクト</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>プロファイルをエクスポートできませんでした</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>プロフィールをエクスポートできませんでした</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>プロファイルをインポートできませんでした</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>プロフィールをインポートできませんでした</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>何もエフェクトが追加されていません。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>デフォルトに戻す</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>すべてのノードを選択</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>キーボード レイアウトの切り替え</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>方向</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>色</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>色</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>方向</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>エフェクト</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>速度</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>エフェクトを追加</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>エフェクトを編集</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>キーボードのバックライトのプロファイル</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>すべてのキー</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>ゾーン {0}</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>日の出</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>日没</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>時間</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>再起動が必要です</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>ハイブリッドモード</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>タッチパッドを無効にします。</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>タッチパッドの無効化</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>タッチパッドを無効にします。</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>タッチパッドの無効化</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>もう一度試してください</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>名前なし</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>ご自身の責任で続行することもできますが、一部の機能が利用できなくなったり、正しく動作しない可能性があることに注意してください。\n\n続行することを選択すると、ログは自動的に有効になります。</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>ログフォルダ</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>デバイスの種類</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit はお使いのデバイスでテストされていません。</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>モデル</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>サポートされていないデバイス</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>ベンダー</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>アップデートがあります</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>新着情報</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>キーボードバックライト</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>キーボードバックライト</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>内蔵キーボードの Windows キーを無効にします。</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Windowsキーの無効化</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>この機能は内蔵キーボードでのみ動作します。</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Windowsキーの無効化</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>はい</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>マイク</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>オフの場合、マイクはミュートになります。</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>マイク</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>オフの場合、マイクはミュートになります。</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>解像度</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイの解像度を変更します。</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>解像度</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイの解像度を変更します。\n\n警告: 内蔵ディスプレイがオフの場合、このアクションは正しく実行されません。</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイの表示の大きさを変更します。</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>内蔵ディスプレイの表示の大きさを変更します。\n\n警告: 内蔵ディスプレイがオフの場合、このアクションは正しく実行されません。</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>ディスプレイ</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>キーボードバックライト</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>キーボードバックライト</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>一致するダウンロードは見つかりませんでした</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>更新のみを表示</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>ダッシュボードをカスタマイズ</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>読み込み</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>グループを作成</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>使用しているデバイスの状態や構成によっては、一部の機能がダッシュボードに表示されない場合があります。</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>カスタマイズ</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>ディスプレイオフ</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>ディスプレイをすべてオフにします。\nマウスを動かすかキーボードを押すと、ディスプレイが起動します。</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>オフにする</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>ディスプレイをオフにする</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>利用可能なディスプレイをすべてオフにします。</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>グループの名前を編集</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Legionのロゴが有効になりました</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Legionのロゴが無効になりました</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>ポートのバックライトが有効になりました</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>ポートのバックライトが無効になりました</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>再起動が必要です。</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>シャットダウンが必要です。</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>再起動を推奨します。</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>保存して閉じる</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>カスタムモードプリセット</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>カスタムモードプリセットを有効にします。\nこの設定は、カスタムモードが有効な場合にのみ有効です。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>プリセット名</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>名前</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>アクティブプリセット</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>アプリケーションのフォルダ</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Data</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temp</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>一定なディスプレイの明るさ</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>オンにすると、変更するたびにすべてのWindows電源プランに同じ輝度レベルが適用されます。</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>バーション {0} の更新があります！</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>ピークパワー制限</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU sPPTの電力制限</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>デフォルト</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>作成</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>ステップを追加</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>アクションを作成</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>電源モード</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>プリセット</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>ディスクリートGPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>電源の状態</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>バッテリー</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>モード</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>出力量</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>更新があります！</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>アイコンの選択</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>アイコンの変更</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>バッテリー残量が少なくなっています。</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>電源</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>電源オフ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>キーボードのバックライトのプロファイルをインポート</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>パス</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>複数のトリガー...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>オーバークロックGPUの設定</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>オーバークロックGPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>ディスクリートGPUをオーバークロックすることでパフォーマンスを向上させます。</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>オーバークロックGPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>ディスクリートGPU をオーバークロックすることでパフォーマンスを向上させます。\n\n警告: ディスクリートGPUが利用できない場合、このアクションは正しく実行されません。</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>ポートのバックライト</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>ポートのバックライト</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>パネルのロゴのバックライト</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>ラップトップのカバーのバックライトをオンまたはオフにします。</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>パネルのロゴのバックライト</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>ラップトップのカバーのバックライトをオンまたはオフにします。</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>最高: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>使用率</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>コアクロック</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>温度</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>ファン</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>メモリークロック</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>更新間隔</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>インスタントブート</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>電源が接続されているときにラップトップの電源を入れます。</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>インスタントブート</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>電源が接続されているときにラップトップの電源を入れます。</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>電源モードを変更できません</value>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>センサー</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPUは現在使用中です</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPUが接続されました</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPUが切断されました</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>ハイブリッドモード</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>長さ</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>ブートロゴ</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>システムの起動時に表示されるブートロゴをカスタマイズできます。</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>ブートロゴ</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>既定のブートロゴが設定されています。</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>カスタムブートロゴが設定されています。</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>状態</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>デフォルトに戻す</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>カスタマイズ</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>アクション</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>通知するテキスト</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>通知を表示</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>プリセット</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>スマート Fn Lock</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Alt、Ctrl、Shift キーを押すと、Fn Lock が一時的に無効になります。</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>オフ</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>カスタムブートロゴのサイズは、{0} ピクセルにする必要があります。\nサポートされるフォーマットは {1} です。</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>夜間のバッテリー充電</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>有効にすると、夜間にこのデバイスに電源を接続した場合80%まで充電され、翌朝このデバイスを使用するまでに100%まで充電が完了します。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>無効な画像サイズです。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>無効な画像フォーマットです。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>EFI パーティションをマウントできません。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>UEFI privilegeを設定できません。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>EFI パーティションに空き容量がありません。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>カスタムロゴを設定できませんでした: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>規定のロゴを設定できませんでした: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>既定のブートロゴが設定されました。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>カスタムブートロゴが設定されました。</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>ネットワーク名 (SSID)</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>統合</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>情報</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>ダウンロードフォルダ</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>ダウンロードフォルダを開く</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>ダウンロード</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>READMEを開く</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>プリセット</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>間隔（分）</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>システムの再起動時に、バッテリーの「バッテリー駆動時間」をリセットします。</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>起動時に「バッテリー駆動時間」をリセットする</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Wi-Fiをオフにする</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Wi-Fiをオンにする</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>バックグラウンドで実行</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>終了するまで待つ</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>コンソールウィンドウを表示せずに、コンソールアプリケーションを実行します。</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>プログラムまたはスクリプトの実行が終了するまで待ちます</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>ミュートすると、アクティブなオーディオ出力デバイスがすべてミュートされます。</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>スピーカー</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>トレイに最小化</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>タスクバーではなく、トレイに最小化します。</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Windows電源モード</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>電源モードの同期</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>電源モードを変更するときに、Windows電源プランまたは Windows電源モードを自動的に変更します。</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Windows電源モード</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>電源モードが変更されたときに適用する、Windows電源モードを選択します。</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>マクロ</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>マクロ</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>繰り返し</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>遅延を無視</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>削除</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>記録</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>記録を停止</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>繰り返さない</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>マクロが機能するには、Lenovo Legion Toolkit が実行されている必要があります。</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>有効化</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>キー入力を記録し、キーボードのテンキーを使用して呼び出すことができます。</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>マクロ</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>マクロを有効または無効にします。</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>別のキーが押された時に中断する</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>キーボードのみ</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>キーボードとマウス</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>すべての入力</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>記録オプション</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>記録は3秒で起動します...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>記録中...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>ESCを押して停止します。</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>CLI</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>CLIをPATHに追加</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>ユーザーのPATH環境変数にCLIを追加します。</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>温度</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>温度センサーの単位を選択します。</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo VantageとImControllerの両方またはいずれか一方がバックグラウンドで実行されています。</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>確認</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>更新を確認しています…</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>更新の確認</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>APIのレート制限に達しました。時間が経ってから再度お試しください。</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>更新の確認に失敗しました</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>問題が発生しました。後ほど再度お試しください。</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>更新はありません</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>更新を自動的に確認</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>アップデートカタログが見つかりません</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>他のソースから更新を取得してください。</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.ko.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.lv.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Izlaidums</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Jaunākais laidums iekš GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Saites</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Projekta mājaslapa iekš GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Trešo pušu bibliotēkas</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Par</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Tulkojumus nodrošina kopiena.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Versija</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Pievienot</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Pievienot jaunu</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Uzlādējiet USB ierīces, kad dators ir izslēgts vai atrodas miega vai hibernācijas režīmā.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Vienmēr ieslēgts USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Uzlādējiet USB ierīces, kad dators ir izslēgts vai atrodas miega vai hibernācijas režīmā.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Vienmēr ieslēgts USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Apstiprināt</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Apstiprināt un Aizvērt</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lai automātiskās darbības darbotos, ir jābūt ieslēgtam Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Iespējot</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Nav definētas Darbības. Lai izveidotu jaunu Darbību, noklikšķiniet uz \"Pievienot jaunu\".</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Ja šīs darbības ir iespējotas, tās tiks veiktas automātiski. Mainoties stāvoklim, visas darbības tiks izvērtētas no augšas uz leju.\nTiks izpildītas tikai tās darbības, kas atbilst pašreizējam stāvoklim.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Darbības</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Vārds...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Pievienot jaunu</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Nav definētas Veiklās Darbības. Lai izveidotu jaunu Veiklo Darbību, noklikšķiniet uz \"Pievienot jaunu\".</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Ātrās darbības ir pieejamas ar peles labo klikšķi uz teknes ikonas izvēlnes.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Ātrās Darbības</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Vārds...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Pārdēvēt</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Visas izmaiņas atgrieztas!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Atgriezts</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Izmaiņas saglabātas veiksmīgi!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Saglabāts</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatizācija</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Pievienot soli</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Konfigurēt</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Ekskluzīvs</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Neveikt turpmākas darbības, kad šī darbība tiek izpildīta.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Palaist tagad</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Pabeigts ar kļūdām.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Palaist tagad</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Veiksmīgi pabeigts!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Palaist tagad</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Notiek palaišana...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} solis</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} soļi</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Aplikācijas</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Rītausmā</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Saulrietā</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>Plkst. {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Barošanas Režīms</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Bez nosaukuma</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Automātiski nosaka, kad darbojas noteiktas spēles, un koriģē centrālā procesora un GPU veiktspēju. Temperatūra un ventilatora troksnis var paaugstināties.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Ieslēgt AI Engine</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Balancētā Režīma Iestatījumi</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Izvēlēties kā akumulātors tiek uzlādēts.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Akumulatora Režīms</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Izvēlēties kā akumulātors tiek uzlādēts.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Akumulatora Režīms</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Savienots, notiek uzlāde...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Savienots, nenotiek uzlāde</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Pašreizējā akumulatora temperatūra.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Akumulatora temperatūra</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Pašreizējā akumulatora ietilpība.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Pašreizējā ietilpība</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Uzlādes/izlādes ciklu skaits.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Ciklu skaits</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Paredzētā Akumulatora ietilpība.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Paredzētā ietilpība</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Akumulatora uzlādes ātrums (+) vai izlādes ātrums (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Izlādes ātrums</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Atlikušais paredzamais laiks: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Notiek laika novērtēšana...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Pirmais lietošanas datums</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Kad pirmo reizi akumulators ticis izmantots.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Akumulatora tilpība kad tas ir pilnībā uzlādēts.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Pilnas uzlādes tilpība</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Zemas jaudas lādētājs pievienots</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Kad akumulators ticis ražots.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Ražošanas datums</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Laiks, kopš klēpjdators pēdējo reizi tika pievienots maiņstrāvas avotam.\nŠis laiks var nebūt precīzs, ja klēpjdators ir uzlādēts miega vai izslēgšanas laikā.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>No akumulatora kopš</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Akumulators</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Atcelt</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Aizvērt</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Zils</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Zaļš</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Sarkans</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Atlasiet GPU darbības režīmu atkarībā no datora lietojuma un barošanas apstākļiem.\nPārslēdzot režīms dators varbūt būt jārestartē.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Lai pārslēgtos uz {0}, nepieciešama restartēšana. Vai vēlaties restartēt tūlīt?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Nepieciešama restartēšana</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>GPU Darbošanās režīms</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Ātrās Darbības</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Turpināt</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Kopēt visu</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafika</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Cits</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Enerģija</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Sākums</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Atspējojiet diskrēto GPU, ja tas ir nevajadzīgi aktīvs.\n\nBRĪDINĀJUMS. Ja iekšējais displejs ir izslēgts vai hibrīda režīms nav aktīvs, šī darbība nedarbosies pareizi.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Deaktivizēt GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pirms nākamās darbības veikšanas pievienot aizkavi.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Aizkave</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Dzēst</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS versija</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Teksts iekopēts starpliktuvē.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" iekopēts starpliktuvē.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Nokopēts!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Ierīce</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Atbalsts</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Iekārtas Tips</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Ražotājs</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Modelis</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Sērijas numurs</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Par Jūsu ierīci</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Beigu datums</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Sākuma datums</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garantija</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Aktīvizēt</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Deaktivizēt</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Neaktīvs</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Nokaut lietotnes</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Atspējojiet diskrēto GPU, ja tas ir nevajadzīgi aktīvs.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Monitors ir pievienots nVidia GPU.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Nav procesu</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Veiktspējas stāvoklis</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Nezināms</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Procesi</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Restartēt GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Diskrētais GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Mainiet iebūvētā ekrāna spilgtumu.\nEnerģijas režīmi maina spilgtumu dažās ierīcēs. Pārliecinies, ka šis solis ir pēdējais, ja kaut kas nesanāk vienkārši pareizi.\n\nBRĪDINĀJUMS. Ja iebūvētais ekrāns ir izslēgts, šī darbība nedarbosies pareizi.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ekrāna spilgtums</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Ziedot ar</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit izstrāde un uzturēšana prasa daudz laika. Ja jums patīk izmantot šo programmatūru, varat atbalstīt tās nākotni, ziedojot noteiktu summu.\n\nNoklikšķiniet uz zemāk redzamā PayPal logotipa vai skenējiet QR kodu, lai ziedotu ar PayPal.\n\nPaldies jau iepriekš!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Ziedot</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Rediģēt</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Noņemiet atzīmi no atsvaidzināšanas ātruma, ko nevēlaties izmantot, izmantojot fn + R saīsni.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Pārliecinieties, vai ir ieslēgts klēpjdatora ekrāns. Lenovo Legion Toolkit nevar ielādēt atsvaidzināšanas ātrumu ekrānam, kas nav ieslēgts.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Atsvaidzināšanas Ātrumi netika atrasti</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Izlaist Atsvaidzināšanas Ātrumus</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Iziet</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Eksportēt</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Izmantojiet tikai integrēto GPU akumulatora uzlādes laikā un gan integrēto, gan diskrēto GPU, ja ir pievienots maiņstrāvas adapteris. Ja ir pievienots nestandarta adapteris, sistēma pārslēdzas tikai uz Hybrid-iGPU režīmu.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Hybrid-Auto Režīms</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Lai pārslēgtos uz šo režīmu un no tā, nepieciešama restartēšana.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Izmantojiet tikai diskrēto GPU. Šis režīms nodrošina labāko grafikas veiktspēju, bet palielina enerģijas patēriņu.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>dGPU Režīms</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Ir iespējots gan integrētais, gan diskrētais GPU. Sistēma automātiski pārslēgsies starp tiem atkarībā no savām vajadzībām.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hibrīda Režīms</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Šis režīms stājas spēkā tikai tad, ja diskrētais GPU nedarbojas.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Izmantojiet tikai integrēto GPU. Šis režīms samazina enerģijas patēriņu un troksni.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Tikai Hybrīda-iGPU Režīms</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Par GPU Darbības Režīmiem</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU Sensors</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Ventilatora ātrums</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>Apgr/min</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Klēpjdatora ieslēgšana, atverot vāku.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Atvērt Lai Ieslēgtu</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Klēpjdatora ieslēgšana, atverot vāku.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Atvērt Lai Ieslēgtu</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Izmantojiet F1-F12 taustiņu sekundārās funkcijas, neturot taustiņu fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Bloķēšana</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Izmantojiet F1-F12 taustiņu sekundārās funkcijas, neturot taustiņu fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Bloķēšana</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>Brīdinājums!\nDaži klēpjdatori var pieņemt zemākas vērtības, nekā norādīts, taču esiet piesardzīgs. Šī opcija var izraisīt neprognozējamu rīcību, tāpēc, ja neesat pārliecināts, ko darāt, atstājiet 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Minimālā nobīde</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>Brīdinājums!\nDaži klēpjdatori var pieņemt augstākas vērtības, nekā norādīts, taču esiet piesardzīgs. Šī opcija var izraisīt neprognozējamu rīcību, tāpēc, ja neesat pārliecināts, ko darāt, atstājiet 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maksimālā nobīde</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Nemainiet tālāk norādītās opcijas, ja vien zinat, ko darāt.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Papildus</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Ilgtermiņa jaudas ierobežojums (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Ilgtermiņa Jaudas Ierobežojums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Īstermiņa Jaudas Ierobežojums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPU Temperatūras Ierobežojums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Neizdevās piemērot iestatījumu</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Neizdevās ielādēt iestatījumu.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Ventilatora ātrumu stingri nenosaka tikai viens temperatūras sensors. Tas palielina vai samazina ātrumu uz augstāko sensoru starp CPU, GPU un sildītāja temperatūru. Precīzas vērtības tiks parādītas, noliekot kursoru virs katra soļa.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Ventilatora līkne</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>BRĪDINĀJUMS!\nIlgstoša šīs iespējas izmantošana degradēs ventilātorus, samazinot viņu ilgmūžību.\nNopietni, esi uzmanīgs ar šo variantu!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Ventilatora maksimālais ātrums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventilatori</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Konfigurējams TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPU Temperatūras Ierobežojums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Pielāgotā Režīma Iestatījumi</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Iebūvētajā ekrānā iespējojiet augstu dinamisko diapazonu (HDR).\n\nBRĪDINĀJUMS. Ja iebūvētais ekrāns ir izslēgts, šī darbība nedarbosies pareizi.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Iebūvētajā ekrānā iespējojiet augstu dinamisko diapazonu (HDR).</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>HDR lietošanu bloķē Windows iestatījumi.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importēt</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Šī ierīce nesader ar Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Netika atrastas saderīgas tastatūras</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Tastatūras Izgaismojums</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Tastatūras fona apgaismojumu šeit nevar kontrolēt, ja darbojas Lenovo Vantage vai tā pakalpojumi.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage vai tā servisi šobrīd ir ieslēgti</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Par</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Darbības</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Akumulators</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Informācijas panelis</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Ziedot</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Tastatūra</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Lejupielādes</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Iestatījumi</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Pieejams atjauninājums!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Pieejams atjauninājums {0}!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Pārvietoties uz leju</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Pārvietoties uz augšu</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nē</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Maiņstrāvas adapteris pievienots</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Maiņstrāvas adapteris pievienots (Zema jauda)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Maiņstrāvas adapteris atvienots</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Kamera izslēgta</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Kamera ieslēgta</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Burtslēgs izslēgts</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Burtslēgs ieslēgts</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Bloķēšana izslēgts</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Bloķēšana ieslēgts</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Mikrofons izslēgts</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Mikrofons ieslēgts</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Bloķēšana izslēgta</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Bloķēšana ieslēgta</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Izgaismojums {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Spilgtums {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profils {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Skārienpanelis izslēgts</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Skārienpanelis ieslēgts</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Izgaismojums {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Maiņstrāvas Adapteris</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Kamera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Burtslēgs un Num Bloķēšana</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Nerādīt paziņojumus</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Bloķēšana</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Tastatūras Izgaismojums</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Mikrofons</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Pozīcija</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Barošanas Režīms</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Atsvaidzināšanas Ātrums</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart Taustiņš</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Paziņojumi</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Skārienpaneļa Bloķēšana</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Atvērt</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Uzlabojiet iebūvētā ekrāna reakcijas laiku.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Uzlabojiet iebūvētā ekrāna reakcijas laiku.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} Lejupielādēts!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Lejupielāde pabeigta</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Kaut kas nogāja greizi</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Serveris atgrieza 404 kodu.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Fails, iespējams, ir pazudis</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Pārbaudiet, vai interneta savienojums ir ieslēgts un darbojas.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Kaut kas nogāja greizi</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Pieejams atjauninājums!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Pakotne ir vairāk nekā gadu veca.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Versija</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Tālāk ir saraksts ar programmatūras pakotnēm, kas atzīmētas kā saderīgas ar klēpjdatoru.\nVienmēr pārliecinieties, vai instalējat pareizas pakotnes.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Pārbaudiet, vai Iekārtas Tips un OS ir iestatīti pareizi.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Kaut kas nogāja greizi</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Kārtošanas maiņa, rezultātu filtrēšana, pakotņu paslēpšana vai saraksta atsvaidzināšana apturēs lejupielādi. Vai vēlaties turpināt?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Notiek Lejupielāde</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtrs...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Iekārtas Tips</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Operētājsistēma</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primārais (Ieteicamais)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Tas pats, kas Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Sekundārais</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Tas pats, kas Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Kategorija</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Datums</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Nosaukums</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Avots</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Lejupielādes</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Ielīmēt</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Izvēlēties veiktspējas režīmu.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Barošanas Režīms</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Izvēlēties veiktspējas režīmu.\nJūs varat režīmus mainīt ar Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Iestatījumi</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Barošanas Režīms</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Izvēlētais barošanas režīms var nedarboties pareizi, ja nav pievienots maiņstrāvas adapteris.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pielāgojiet tastatūras fona apgaismojuma iestatījumu.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tastatūras Izgaismojums</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Spilgtums</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Priekšiestatījums 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Priekšiestatījums 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Priekšiestatījums 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Priekšiestatījums 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>1. zona</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>2. zona</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>3. zona</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>4. zona</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efekts</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Ātrums</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>LasiMani</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Atsvaidzināt</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Mainiet iebūvētā ekrāna atsvaidzināšanas ātrumu.\n\nBRĪDINĀJUMS. Ja iebūvētais ekrāns ir izslēgts, šī darbība nedarbosies pareizi.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Atsvaidzināšanas ātrums</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Mainiet iebūvētā ekrāna atsvaidzināšanas ātrumu.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Atsvaidzināšanas ātrums</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Pārdēvēt</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Es pats restartēšu vēlāk</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Restartēt tagad</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Atgriezt</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumenti</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Izpildāmā Ceļš</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Palaidiet skriptu vai programmu.\nVispirms pārliecinieties, vai skripts darbojas pareizi.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Palaist</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Saglabāt</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Saglabā...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Izvēlieties vienu vai vairākas ātrās darbības, pa kurām pārvietoties</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Nav definēta neviena Ātrā Darbība.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Parādīt šo aplikāciju</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Nomainīt akcentu krāsu šai aplikācijai.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Akcentu krāsa</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Piesakoties sistēmā Windows, sāciet minimizētu teknē.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Autopalaišana</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Iespējams, Legion Zone nav pareizi atspējots</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nevarēja atspējot Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Atspējojiet Legion Zone un tās pakalpojumu, neatinstalējot to.\nPēc šīs opcijas maiņas ieteicams restartēt datoru.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Atspējot Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Iespējams, Legion Hotkeys nav pareizi atspējots</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nevarēja atspējot Legion Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Atspējojiet Lenovo Hotkeys un to pakalpojumus, neatinstalējot tos.\nJa šī programma ir atspējota, Lenovo Legion Toolkit apstrādās Fn saīsnes.\nPēc šīs opcijas maiņas ieteicams restartēt datoru.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Atspējot Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Iespējams, Lenovo Vantage un/vai ImController nav pareizi atspējots</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Nevarēja atspējot Lenovo Vantage un/vai ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Atspējojiet Lenovo Vantage un ImController, neatinstalējot tos.\nPēc šīs opcijas maiņas ieteicams restartēt datoru.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Atspējot Lenovo Vantage un ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Iespējams, Legion Zone nav pareizi iespējots</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nevarēja iespējot Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Iespējams, Legion Hotkeys nav pareizi iespējots</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nevarēja iespējot Legion Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Iespējams, Vantage un/vai ImController nav pareizi iespējots</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Nevarēja iespējot Lenovo Vantage un/vai ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Varat izslēgt atsvaidzināšanas ātrumus, lai padarītu Fn+R saīsni noderīgāku.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Izlaist Atsvaidzināšanas Ātrumus</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Atlasīt valodu.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Valoda</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Vienmēr minimizējiet līdz teknei. Aizveriet, ar peles labo klikšķi uz teknes ikonas.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimizēt pēc aizvēršanas</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Uzstādīt kuri paziņojumi tiek parādīti.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Paziņojumi</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Barošanas Plāni</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Piešķiriet Ātro Darbību fn + F9 dubultai nospiešanai.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Taustiņa Sekundārā Darbība</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Piešķiriet Ātro Darbību fn + F9 vienreizējai nospiešanai.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Taustiņa Darbība</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Iestatīt gaišo motīvu, tumšo motīvu vai sekot sistēmas iestatījumiem.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Motīvs</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Iestatījumi</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pielāgojiet tastatūras izgaismojuma spožumu.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Atspējots</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tastatūras izgaismojuma spožums</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Pievienot efektu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Neizdevās piemērot profilu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Neizdevās pielāgot izgaismojuma profilu.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Spilgtums</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Noņemt visu zonu atlasi</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Efekti</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profilu nav iespējams eksportēt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Neizdevās eksportēt profilu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profilu nav iespējams importēt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Neizdevās importēt profilu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Netika pievienots neviens efekts.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Atgriezt uz noklusējumu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Izvēlēties visas zonas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Mainīt tastatūras izkārtojumu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Virziens</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Krāsa</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Krāsas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Virziens</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Efekts</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Šis efekts tiks lietots visai tastatūrai un aizstās visus pārējos efektus.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Ātrums</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Pievienot efektu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Rediģēt efektu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pielāgojiet tastatūras apgaismojuma profilu.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tastatūras izgaismojuma profils</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Visi taustiņi</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zonas</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Saullēkts</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Saulriets</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Laiks</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Atļaut pārslēgties starp integrētu un atsevišķu GPU.\nNepieciešama restartēšana.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Lai pārslēgtos uz Hibrīda Režīmu, nepieciešama restartēšana. Vai vēlaties restartēt datoru tagad?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Nepieciešama restartēšana</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Hibrīda Režīms</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Atspējot skārienpaliktni.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Skārienpaliktņa Bloķēšana</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Atspējot skārienpaliktni.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Skārienpaliktņa Bloķēšana</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Mēģiniet vēlreiz</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Bez nosaukuma</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Varat izvēlēties turpināt darbu uz jūsu pašu atbildību, taču ņemiet vērā, ka daži līdzekļi var nebūt pieejami un/vai nedarboties pareizi.\n\nJa izvēlaties turpināt, reģistrēšana tiks iespējota automātiski.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Papildinformāciju skatiet GitHub projekta lapā.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Žurnālfailu mape</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Iekārtas Tips</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit nav pārbaudīts ar jūsu ierīci.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Modelis</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Neatbalstīta ierīce</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Tirgotājs</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Atjaunināt</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Pieejams atjauninājums</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Kas jauns?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pielāgojiet tastatūras izgaismojuma spožumu.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tastatūras izgaismojums</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Spilgtumu var mainīt ar Fn+Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Tastatūras izgaismojums</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Strādā tikai ar iebūvēto taustatūru.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Windows Taustiņa Bloķēšana</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Jā</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofons</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Kamēr atspējots, mikrofoni tiks apklusināti.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofons</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kamēr atspējots, mikrofoni tiks apklusināti.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Izšķirtspēja</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Mainiet iebūvētā ekrāna izšķirtspēju.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Izšķirtspēja</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Mainiet iebūvētā ekrāna izšķirtspēju.\n\nBRĪDINĀJUMS. Ja iebūvētais ekrāns ir izslēgts, šī darbība nedarbosies pareizi.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Mainiet iebūvētā ekrāna mērogu.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Mainiet iebūvētā ekrāna mērogošanu.\n\nBRĪDINĀJUMS. Ja iebūvētais ekrāns ir izslēgts, šī darbība nedarbosies pareizi.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Ekrāns</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Tastatūras izgaismojums</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Izgaismojumu var ieslēgt vai izslēgt ar Fn+Space.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tastatūras izgaismojums</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ieslēgt vai izslēgt izgaismojumu.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Nav atrastas atbilstošas lejupielādes</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Rādīt tikai atjauninājumus</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Rediģēt Informācijas Paneli</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Ielādēt</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Izveidot grupu</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Nosaukums</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Dažas funkcijas informācijas panelī var neparādīties atkarībā no ierīces stāvokļa un konfigurācijas.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Pielāgot</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Izslēgt ekrānus</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Izslēdziet visus pieejamos ekrānus.\nPeles pārvietošana vai tastatūras nospiešana pamodinās ekrānus.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Izslēgt</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Izslēgt ekrānus</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Izslēgt visus pieejamos ekrānus.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Rediģēt grupas nosaukumu</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Nosaukums</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Legion logotips ieslēgts</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Legion logotips izslēgts</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Portu izgaismojums ieslēgts</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Portu izgaismojums izslēgts</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Nepieciešama restartēšana</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Nepieciešama izslēgšana</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Ieteicama restartēšana</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Saglabāt &amp; Aizvērt</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Pielāgotā režīma priekšiestatījums</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aktivizējiet Pielāgotā Režīma priekšiestatījumu.\nŠie iestatījumi stājas spēkā tikai tad, ja ir iespējots pielāgotais režīms.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Pirmsiestatītais nosaukums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Nosaukums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Aktīvais priekšiestatījums</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Aplikāciju Folderi</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Dati</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Īslaicīgs</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Viena Ekrāna Spilgtums</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Kad iespējots, visiem Windows Barošanas Plāniem tiks lietots vienāds spilgtuma līmenis ikreiz, kad to mainīsit.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Pieejams atjauninājums {0}!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Maksimālā Jaudas Robeža</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU sPPT Jaudas Ierobežojums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Nepārtrauktais enerģijas patēriņš, ko var sasniegt CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Maksimālais jaudas patēriņš, ko CPU var sasniegt īsā laikā.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Maksimālais momentānais enerģijas patēriņš, ko var sasniegt CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Maksimālais jaudas patēriņš, ko var sasniegt centrālais procesors, pilnībā izmantojot gan CPU, gan GPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Maksimālais jaudas patēriņš, ko CPU var sasniegt ar nelielu aizkavi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Maksimālā temperatūra, ko centrālais procesors var sasniegt pirms frekvences un jaudas samazināšanas.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Papildu maksimālā jauda, ko var piešķirt GPU, pamatojoties uz CPU enerģijas patēriņu.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Papildu jaudas apjoms, ko var piešķirt GPU papildus pamata jaudas patēriņam.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Maksimālā temperatūra, ko GPU var sasniegt pirms frekvences un jaudas samazināšanas.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Noklusējums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Īstermiņa Jaudas Ierobežojums</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Laiks, cik ilgi CPU ir atļauts palielināt un izmantot Īstermiņa Jaudas Ierobežojumu. Kad beidzas Tau, tiek izmantots Ilgtermiņa Jaudas Ierobežojums.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Kopējais Procesora Jaudas Mērķis Maiņstrāvā</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Punkts, kurā CPU izraisa dinamisku jaudas patēriņa korekciju priekš GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Izveidot</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Pievienot soli</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Izveidot Darbību</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Jaudas režīms</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Priekšiestatījums</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Diskrētais GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Jaudas Stāvoklis</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Akumulators</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Režīms</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Izlādes ātrums</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Pieejams atjauninājums!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Atlasīt ikonu</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Mainīt ikonu</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Zems akumulatora uzlādes līmenis</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Konfigurēt</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Konstatēts S0 Mazjaudas Modelis</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows ziņo, ka šī ierīce atbalsta Moderno Gaidstāvi. Enerģijas plānu izmantošana, kas nav Līdzsvarots, var izraisīt negaidītu rīcību.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Atlasiet Windows Barošanas Plānus, kas jālieto, mainot Barošanas Režīmu.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Jauda</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Barošanas Plāna opcijas Windows Vadības Panelī</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Izslēgts</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Importēt tastatūras izgaismojuma profilu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Importējiet un lietojiet fona izgaismojuma konfigurāciju pašreizējam profilam.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Ceļš</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Pēc {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Vairāki trigeri...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Virstaktēšana GPU Iestatījumi</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Kodola Frekvences Nobīde</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Atmiņas Frekvences Nobīde</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Virstaktēt GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Palieliniet veiktspēju, virstaktējot diskrēto GPU.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Virstaktēt GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Palieliniet veiktspēju, virstaktējot diskrēto GPU.\n\nBRĪDINĀJUMS. Ja nav pieejams atsevišķs GPU, šī darbība nedarbosies pareizi.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Portu izgaismojums</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Ieslēdziet vai izslēdziet klēpjdatora aizmugurē esošo portu izgaismojumu.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Portu izgaismojums</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ieslēdziet vai izslēdziet klēpjdatora aizmugurē esošo portu izgaismojumu.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Paneļa logotipa izgaismojums</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Ieslēgt vai izslēgt klēpjdatora vāka izgaismojumu.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Paneļa logotipa izgaismojums</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ieslēgt vai izslēgt klēpjdatora vāka izgaismojumu.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Maksimums: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Lietojums</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Kodola Takts Ātrums</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatūra</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Ventilators</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Atmiņas Takts Ātrums</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Atjaunošanas intervāls</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Tūlītēja Sāknēšana</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Ieslēgt portatīvo datoru kad tiek pievienots lādētājs.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tūlītēja Sāknēšana</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ieslēgt portatīvo datoru kad tiek pievienots lādētājs.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Nevarēja nomainīt Jaudas Režīmu</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>{0} jaudas režīms nav pieejams bez maiņstrāvas pieslēguma.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensori</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Nevarēja nomainīt GPU Darbošanās režīmu</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU šobrīd tiek izmantots</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU automātiski pats atvienosies kad tas netiks izmantots.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>dGPU šobrīd tiek izmantots vai arī portatīvais dators neizmanto akumulatoru</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>dGPU tiks atvienots automātiski kad tas netiek izmantots vai portatīvais dators izmanto akumulatoru.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Pielāgotā Režīma iestatījumi netiks pielietoti pareizi kamēr Lenovo Vantage un tā servisi ir ieslēgti.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Pielāgotā Režīma iestatījumi netiks pielietoti pareizi kamēr Legion Zone un tā servisi ir ieslēgti.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Darbošanās režīms</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Atlasiet GPU darbības režīmu atkarībā no datora lietojuma un barošanas apstākļiem.\nPārslēdzot režīmus dators iespējams būs jārestartē.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hibrīda Režīms</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Atļaut pārslēgšanos starp integrēto un diskrēto GPU.\nNepieciešama restartēšana.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Ilgums</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Atjauninājumi</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Sāknēšanās Logo</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Rediģēt Sāknēšanās Logo attēlu, kurš redzams ieslēdzot sistēmu.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Sāknēšanās Logo</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Noklusējuma Sāknēšanās Logo ir iestatīts</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Pielāgots Sāknēšanās Logo ir iestatīts</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Statuss</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Atgriezt uz noklusējumu</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Pielāgot</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Darbības</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Paziņojuma Teksts</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rādīt paziņojumu</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Priekšiestatījums</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.nl-nl.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Laatste release op GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Links</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Project website op GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Bibliotheken van derden</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Over</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Vertalingen geleverd door Melm.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Versie</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Toevoegen</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Toevoegen</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Laad USB-apparaten op wanneer de computer is uitgeschakeld of in de slaap- of sluimerstand staat.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>USB Altijd Aan</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Laad USB-apparaten op wanneer de computer is uitgeschakeld of in de slaap- of sluimerstand staat.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>USB Altijd Aan</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Toepassen</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Opslaan &amp; sluiten</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit moet actief zijn om automatische acties te laten werken.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Inschakelen</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Geen acties gedefinieerd. Klik op \"Nieuwe toevoegen\" om een nieuwe actie te maken.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Indien ingeschakeld, wordt deze actie automatisch uitgevoerd. Wanneer de status verandert, worden alle acties van boven naar beneden geëvalueerd.\nAlleen acties die overeenkomen met de huidige status worden uitgevoerd.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Acties</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Naam...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Nieuw toevoegen</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Geen snelle acties gedefinieerd. Klik op \"Nieuw toevoegen\" om een nieuwe snelle actie te maken.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Snelle acties zijn beschikbaar in het rechtsklikmenu van het systeemvakpictogram.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Snelle acties</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Naam...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Hernoemen</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Alle wijzigingen teruggedraaid!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Teruggedraaid</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Wijzigingen zijn succesvol opgeslagen!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Opgeslagen</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatisering</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Stap toevoegen</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Configureren</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exclusief</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Voer geen verdere acties uit wanneer deze actie wordt uitgevoerd.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Nu uitvoeren</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Voltooid met fouten.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Nu uitvoeren</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Succesvol afgerond!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Nu uitvoeren</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Wordt uitgevoerd...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} stap</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} stappen</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Applicaties</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Bij zonsopgang</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Bij zonsondergang</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>Om {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Energiemodus</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>naamloos</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Detecteert automatisch wanneer bepaalde games worden uitgevoerd en past de CPU- en GPU-prestaties aan. Temperaturen en ventilatorgeluid kunnen toenemen.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>AI Engine inschakelen</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Instellingen voor balansmodus</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kies hoe de batterij wordt opgeladen.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Batterij modus</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Kies hoe de batterij wordt opgeladen.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Batterij modus</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Aangesloten, opladen...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Verbonden, laadt niet op</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Huidige temperatuur van de batterij.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Batterij temperatuur</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Huidige batterijcapaciteit</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Huidige capaciteit</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Aantal laad-/ontlaadcyclus.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Telling van cyclus</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Batterijcapaciteit zoals ontworpen.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Ontwerpcapaciteit</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Snelheid waarmee de batterij wordt opgeladen (+) of ontladen (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Ontlading snelheid</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Geschatte resterende tijd: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Tijdschatting...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Eerste gebruiksdatum</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Wanneer is de batterij voor het eerst gebruikt.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Batterijcapaciteit wanneer volledig opgeladen.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Volledige laadcapaciteit</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Lader met laag wattage aangesloten</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Wanneer is de batterij gemaakt.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Productiedatum</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Tijd sinds de laptop voor het laatst is aangesloten op de netvoeding.\nDeze tijd is mogelijk niet nauwkeurig als de laptop is opgeladen tijdens het slapen of uit.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Op batterij sinds</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Batterij</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Annuleren</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Sluiten</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Blauw</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Groen</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Rood</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Selecteer de GPU-bedieningsmodus op basis van het gebruik en de stroomvoorziening van uw computer.\nVoor het wisselen van modi is mogelijk opnieuw opstarten vereist.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Als u wilt wijzigen naar {0}, moet u opnieuw opstarten. Wil je nu opnieuw opstarten?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Opnieuw opstarten vereist</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>GPU Bedieningsmodus</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Snelle Acties</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Doorgaan</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Alles kopiëren</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafisch</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Ander</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Stroom</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Startscherm</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schakel discrete GPU uit als deze onnodig actief is.\n\nWAARSCHUWING: Deze actie wordt niet correct uitgevoerd als het interne display is uitgeschakeld of de hybride modus niet actief is.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Deactiveren</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Vertraging toevoegen voordat de volgende stap wordt uitgevoerd.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Stel uit</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Verwijderen</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS versie</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Tekst gekopieerd naar klembord.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>{0} gekopieerd naar klembord.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Gekopieerd!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Apparaat</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Support</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Machine Type</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Fabrikant</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Serienummer</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Over je apparaat</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Einddatum</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Startdatum</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garantie</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Actief</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Deactiveren</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>inactief</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Apps stoppen</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Schakel discrete GPU uit als deze onnodig actief is.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Een scherm is connecteerd met de nVidia GPU.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Geen processen</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Prestatie statistieken</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Onbekend</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Processen</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>GPU Opnieuw Opstarten</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Discrete GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wijzig de helderheid van het ingebouwde display.\nEnergiemodi veranderen de helderheid op sommige apparaten. Zorg ervoor dat u deze stap als laatste zet, als iets niet goed werkt.\n\nWAARSCHUWING: Deze actie wordt niet correct uitgevoerd als het interne display is uitgeschakeld.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Schermhelderheid</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Doneren met</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>De ontwikkeling en het onderhoud van Lenovo Legion Toolkit kost veel tijd. Als u deze software graag gebruikt, kunt u de toekomst ervan steunen door een bedrag naar keuze te doneren.\n\nKlik op het PayPal-logo hieronder of scan de QR-code om te doneren met PayPal.\n\nBij voorbaat bedankt!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Doneer</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Wijzig</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Vink vernieuwingsfrequenties uit die u niet wilt gebruiken wanneer de snelkoppeling Fn+R wordt gebruikt.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Zorg ervoor dat het beeldscherm van de laptop is ingeschakeld. Lenovo Legion Toolkit kan geen verversingsfrequenties laden voor een beeldscherm dat niet is ingeschakeld.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Geen verversingsnelheiden gevonden</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Verversingsnelheid uitsluiten</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Sluiten</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Exporteer</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Gebruik alleen geïntegreerde GPU wanneer op batterij en zowel geïntegreerde als discrete GPU wanneer AC-adapter is aangesloten. Wanneer een niet-standaard adapter is aangesloten, schakelt het systeem over naar de modus Hybrid-iGPU Only.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Hybride-Auto Mode</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Voor het overschakelen van en naar deze modus is opnieuw opstarten vereist.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Gebruik alleen discrete GPU. Deze modus biedt de beste grafische prestaties, maar verhoogt het stroomverbruik.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>dGPU Modus</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Zowel geïntegreerde als discrete GPU zijn ingeschakeld. Het systeem schakelt automatisch tussen deze.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hybride modus</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Deze modus wordt alleen van kracht als de discrete GPU niet werkt.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Gebruik alleen geïntegreerde GPU. Deze modus minimaliseert het stroomverbruik en geluid.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Hybride-iGPU Only Modus</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Over GPU-werkstanden</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU Sensor</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Ventilatorsnelheid</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zet de laptop aan als je het deksel opent.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Starten door open te klappen</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Zet de laptop aan als je het deksel opent.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Starten door open te klappen</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Gebruik secundaire functies van F1-F12-toetsen zonder de Fn-toets ingedrukt te houden.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Gebruik secundaire functies van F1-F12-toetsen zonder de Fn-toets ingedrukt te houden.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>LET OP!\nSommige laptops accepteren lagere waarden dan aangegeven. Deze optie kan onvoorspelbaar gedrag veroorzaken. Als je niet zeker bent, laat deze waarde dan op 0 staan.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Minimale compensatie</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>LET OP!\nSommige laptops accepteren hogere waarden dan aangegeven. Deze optie kan onvoorspelbaar gedrag veroorzaken. Als je niet zeker bent, laat deze waarde dan op 0 staan.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maximale compensatie</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Wijzig deze instellingen alleen als u weet wat u doet.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Geavanceerd</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Vermogenslimiet op lange termijn (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Vermogenslimiet op lange termijn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Vermogenslimiet op korte termijn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPU Temperatuur Limiet</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Kon de instelling niet toepassen</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Kon de instelling niet toepassen.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Ventilatorsnelheid wordt niet strikt bepaald door één temperatuursensor. Het zal de snelheid verhogen of verlagen volgens de hoogste sensor tussen CPU, GPU en Heatsink-temperatuur. Exacte waarden verschijnen wanneer u de muisaanwijzer over elke stap beweegt.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Ventilatorcurve</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>WAARSCHUWING!\nLangdurig gebruik van deze optie zal de ventilators degraderen en hun levensduur verkorten.\nSerieus, wees voorzichtig met deze optie!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Maximale ventilatorsnelheid</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventilatoren</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Configureerbare TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamische boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>GPU Temperatuur Limiet</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Instellingen aangepaste modus</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>De hoog dynamisch bereik (HDR) van het ingebouwde beeldscherm inschakelen.\n\nWAARSCHUWING: Deze actie wordt niet correct uitgevoerd als het interne display is uitgeschakeld.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>De hoog dynamisch bereik (HDR) van het ingebouwde beeldscherm inschakelen.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>HDR-gebruik wordt geblokkeerd door Windows-instellingen.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importeer</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Dit apparaat is niet compatibel met Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Geen compatibele toetsenborden gevonden</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Toetsenbordverlichting</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Toetsenbordverlichting kan hier niet worden beheerd wanneer Lenovo Vantage of zijn services actief zijn.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage of zijn services zijn actief</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Over</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Acties</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Batterij</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Dashboard</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Doneer</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Toetsenbord</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Pakketten</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Instellingen</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Updates beschikbaar!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Update {0} is beschikbaar!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Omlaag verplaatsen</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Verplaats naar boven</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nee</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>AC-adapter aangesloten</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>AC-adapter aangesloten (laag wattage)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>AC-adapter losgekoppeld</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Camera uit</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Camera aan</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock uit</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock aan</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock uit</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock aan</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Microfoon uit</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Microfoon aan</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock uit</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock aan</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Helderheid {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profiel {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad uit</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad aan</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>AC Adapter</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Camera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock en Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Schakelt meldingen uit voor acties die uitgevoerd worden met de Fn toetsen (zoals het dempen van de microfoon).\nZet deze optie aan als u problemen ondervindt met applicaties in de volledige scherm modus.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Geen meldingen weergeven</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Toetsenbord Achtergrondverlichting</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Microfoon</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Positie</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Energiemodus</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Verversingssnelheid</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart Key</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Notificaties</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Touchpadvergrendeling</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Open</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Verbeter de responstijd van het ingebouwde display.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Verbeter de responstijd van het ingebouwde display.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} gedownload!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Download voltooid</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Er is iets misgegaan</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Server heeft code 404 geretourneerd.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Dit bestand is mogelijk corrupt of verwijdert.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Controleer of uw internetverbinding actief is.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Er is iets misgegaan</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Update beschikbaar!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Dit pakket is meer dan een jaar oud.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Versie</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Hieronder vindt u een lijst met softwarepakketten die zijn gemarkeerd als compatibel met uw laptop.\nZorg er altijd voor dat u de juiste pakketten installeert.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Controleer of Machine Type en OS correct zijn ingesteld.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Er is iets misgegaan</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Het wijzigen van sortering, het filteren van resultaten, het verbergen van pakketten of het vernieuwen van de lijst zal het downloaden stoppen. Wil je doorgaan?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Bezig met downloaden</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filteren...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Machine Type</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Besturingssysteem</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primair (aanbevolen)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Gelijk aan Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Secundair</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Gelijk aan Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Categorie</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Datum</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Naam</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Bron</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Downloads</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Plakken</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Selecteer prestatiemodus.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Energiemodus</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Selecteer prestatiemodus.\nU kunt van modus wisselen met Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Instellingen</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Energiemodus</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>De geselecteerde energiemodus werkt mogelijk niet correct als de netadapter niet is aangesloten.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Standaard</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Windows Energiebeheerschema's</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pas de voorinstelling van de achtergrondverlichting van het toetsenbord aan.\n</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Toetsenbordverlichting</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Helderheid</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Voorinstelling 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Voorinstelling 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Voorinstelling 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Voorinstelling 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zone 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zone 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zone 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zone 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Effect</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Snelheid</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Leesmij</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Vernieuw</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wijzig de verversingssnelheid van het ingebouwde beeldscherm.\n\nWAARSCHUWING: Deze actie wordt niet correct uitgevoerd als het interne display is uitgeschakeld.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Verversingssnelheid</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Wijzig de verversingssnelheid van het ingebouwde beeldscherm.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Verversingssnelheid</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Hernoemen</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Ik zal later opnieuw opstarten</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Nu opnieuw opstarten</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Terug draaien</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumenten</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Uitvoerbaar Pad</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Voer een script of een programma uit.\nZorg ervoor dat uw script eerst correct wordt uitgevoerd.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Uitvoeren</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Opslaan</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Opslaan...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Kies een of meer snelle acties om doorheen te bladeren</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Geen snelle acties gedefinieerd.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Deze app weergeven</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Pas het thema en de kleuren van de app aan</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Accentkleur</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Start geminimaliseerd naar lade wanneer u zich aanmeldt bij Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Automatisch uitvoeren</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone is mogelijk niet correct uitgeschakeld</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Kan Legion Zone niet uitschakelen</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Schakel Legion Zone en zijn service uit zonder deze te verwijderen. \nEen herstart wordt aanbevolen na het wijzigen van deze optie.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Schakel Legion Zone Uit</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone is mogelijk niet correct uitgeschakeld</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Kan Legion Zone niet uitschakelen</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Schakel Legion Hotkeys en zijn service uit zonder deze te verwijderen.\nAls het is uitgeschakeld, zal deze app de Fn-snelkoppelingen beheren.\nEen herstart wordt aanbevolen na het wijzigen van deze optie.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Schakel Lenovo Hotkeys uit</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage en/of ImController zijn niet correct uitgeschakeld</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Kon Lenovo Vantage en/of ImController niet uitschakelen</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Schakel Legion Vantage en ImController uit zonder deze te verwijderen. \nEen herstart wordt aanbevolen na het wijzigen van deze optie.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage en ImController uitschakelen</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone is mogelijk niet correct ingeschakeld</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Kan Legion Zone niet uitschakelen</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Hotkeys is mogelijk niet correct uitgeschakeld</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Kan Lenovo Hotkeys niet uitschakelen</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage en/of ImController zijn niet correct ingeschakeld</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Kon Lenovo Vantage en/of ImController niet inschakelen</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>U kunt verversingssnelheid uitsluiten om de Fn+R-snelkoppeling nuttiger te maken.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Verversingsnelheid uitsluiten</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Selecteer taal.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Taal</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Minimaliseer altijd tot tray. Sluit met de rechtermuisknop op het systeemvakpictogram.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimaliseer Bij Sluiten</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Configureer welke notificaties getoond worden.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Notificaties</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Energieschema's</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Voeg Snelle Actie toe aan Fn+F9 dubbel drukken.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key Secundaire Actie</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Wijs Snelle actie toe aan Fn+F9 met één druk op de knop.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key Actie</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Stel een licht thema, een donker thema in of volg de systeeminstellingen.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Thema</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Instellingen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pas de helderheid van de toetsenbordverlichting aan.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Helderheid van de achtergrondverlichting van het toetsenbord</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Voeg effect toe</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Kan profiel niet toepassen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Verlichtingsprofiel kan niet worden toegepast.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Helderheid</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Deselecteer alle zones</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Effecten</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profiel kon niet worden geëxporteerd</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Kan profiel niet exporteren</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profiel kon niet worden geïmporteerd</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Kan profiel niet importeren</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Geen effect toegevoegd</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Standaardinstellingen herstellen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Selecteer alle zones</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>de toetsenbordindeling wijzigen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Richting</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Kleur</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Kleuren</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Richting</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Effect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Dit effect wordt op het hele toetsenbord toegepast en vervangt alle andere effecten.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Snelheid</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Voeg effect toe</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Bewerk effect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pas het achtergrondverlichtingsprofiel van het toetsenbord aan.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Achtergrondverlichtingsprofiel toetsenbord</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Alle toetsen</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zones</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Zonsopgang</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Zonsondergang</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Tijd</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Schakelen tussen geïntegreerde en discrete GPU mogelijk.\nVereist opnieuw opstarten.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Het wijzigen van de hybride modus vereist opnieuw opstarten. Wil je nu opnieuw opstarten?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Opnieuw opstarten vereist</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Hybride modus</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Touchpad uitschakelen.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Touchpadvergrendeling</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Touchpad uitschakelen.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Touchpadvergrendeling</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Probeer het opnieuw</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Er is een onverwachte fout opgetreden:\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>naamloos</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>U kunt ervoor kiezen om op eigen risico door te gaan, maar houd er rekening mee dat sommige functies mogelijk niet beschikbaar zijn en/of niet goed werken.\n\nLogboekregistratie wordt automatisch ingeschakeld als u ervoor kiest om door te gaan.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Bekijk de projectpagina op GitHub voor meer informatie.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Map met logboeken</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Machine Type</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit is niet getest met uw apparaat.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Apparaat wordt niet ondersteund</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Leverancier</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Bijwerken</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Update beschikbaar</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Wat is er nieuw?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pas de voorinstelling van de achtergrondverlichting van het toetsenbord aan.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Toetsenbordverlichting</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>U kunt de helderheid wijzigen met Fn+Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Toetsenbordverlichting</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schakel de Windows toets op het ingebouwd toetsenbord uit.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Windows-toetsvergrendeling</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Werkt alleen op ingebouwd toetsenbord.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Windows-toetsvergrendeling</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Ja</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Microfoon</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Als hij uit staat, worden de microfoons gedempt.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Microfoon</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Als deze uit staat, worden de microfoons gedempt.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Resolutie</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Wijzig de resolutie van het ingebouwde display.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Resolutie</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wijzig de resolutie van het ingebouwde display.\n\nWAARSCHUWING: Deze actie wordt niet correct uitgevoerd als het interne beeldscherm is uitgeschakeld.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Verander de schaal van het ingebouwde display.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Verander de schaal van het ingebouwde display.\n\nWAARSCHUWING: Deze actie wordt niet correct uitgevoerd als het interne beeldscherm is uitgeschakeld.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Beeldscherm</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting toetsenbord</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>U kunt de achtergrondverlichting in- of uitschakelen met Fn+Spatiebalk.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting toetsenbord</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zet de achtergrondverlichting aan of uit.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Geen overeenkomende downloads gevonden</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Alleen updates tonen</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Dashboard aanpassen</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Reset</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Groep aanmaken</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Naam</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Sommige functies verschijnen mogelijk niet op het dashboard, afhankelijk van de status en configuratie van uw apparaat.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Aanpassen</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Beeldschermen uitschakelen</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Schakel alle beschikbare beeldschermen uit.\nAls u de muis beweegt of op het toetsenbord drukt, worden de schermen gewekt.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Uitzetten</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Beeldschermen uitschakelen</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schakel alle beschikbare beeldschermen uit.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Groepsnaam bewerken</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Naam</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Legion logo aan</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Legion logo uit</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting van poorten aan</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting van poorten uit</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Herstart vereist</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Uitschakeling vereist</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Herstart aanbevolen</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Opslaan &amp; sluiten</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Aangepaste modus voorinstelling</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activeer de Aangepaste Voorinstelling modus.\nDeze instelling is alleen van kracht wanneer de Aangepaste modus ingeschakeld is.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Naam voorinstelling</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Naam</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Actieve voorinstelling</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Applicatiemappen</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Gegevens</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temperatuur</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Enkele Schermhelderheid</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Wanneer deze instelling is ingeschakeld, zal dezelfde helderheid worden toegepast op alle Windows Energiebeheerschema's wanneer je deze aanpast.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Update {0} is beschikbaar!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Piekvermogen Limiet</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU sPPT Vermogenlimiet</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Het continue stroomverbruik dat door de CPU kan worden bereikt.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Het continue stroomverbruik dat door de CPU kan worden bereikt in een korte periode.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Het maximale directe stroomverbruik dat door de CPU kan worden bereikt.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Het maximale stroomverbruik dat door de CPU kan worden bereikt wanneer zowel de CPU als GPU volledig belast worden.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>De continue stroomverbruik dat door de CPU met een korte vertraging bereikt kan worden.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>De maximale temperatuur die door de CPU bereikt kan worden voordat de frequentie en het vermogen verminderd worden.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Het aanvullend maximum wattage dat naar de videokaart toegewezen kan worden, gebaseerd op het verbruik van de CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Het aanvullend wattage dat naar de videokaart toegewezen kan worden.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>De maximale temperatuur die door de CPU bereikt kan worden voordat de frequentie en het vermogen verminderd worden.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Standaard</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Vermogenslimiet op korte termijn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>De hoeveelheid tijd die de CPU mag boosten en de Korte Termijn Vermogenslimiet mag gebruiken. Als Tau verloopt, wordt Lange Termijn Vermogenslimiet gebruikt.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Totaal streefvermogen processor in AC</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Het punt waarbij de CPU de dynamische stroom consumptie wijziging triggered voor de GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Maak Aan</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Stap toevoegen</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Nieuwe actie aanmaken</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Energiemodus</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Voorinstelling</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Discrete GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Energiemodus</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Batterij</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Modus</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Ontlading snelheid</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Update beschikbaar!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Selecteer icoon</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Verander icoon</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Batterij bijna leeg</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Configureren</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Laagvermogenmodus (S0) gedetecteerd</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows meldt dat deze laptop Modern Standby ondersteunt. Het gebruik van andere energiebeheerschema's kan onverwacht gedrag veroorzaken.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Laat Windows energiebeheerschema's toepassen wanneer de energiemodus verandert.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Stroom</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Energiebeheerschema instellingen in het Windows Configuratiescherm</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Uitgeschakeld</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Importeer een achtergrondverlichtingsprofiel van het toetsenbord.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Importeer en pas een achtergrondverlichtingsconfiguratie toe aan het huidige profiel.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Pad</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Na {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Meerdere triggers...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Videokaart overklok instellingen</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Kernfrequentie afwijking</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Geheugenfrequentie afwijking</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Videokaart overklokken</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Verbeter prestaties door de discrete videokaart te overklokken.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Overklokken</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Verbeter prestaties door de discrete videokaart te overklokken.\n\nWAARSCHUWING: Deze actie zal niet correct uitgevoerd worden als de externe videokaart niet beschikbaar is.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting van de poorten</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Zet de achtergrondverlichting van de poorten aan, of uit.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting van de poorten</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zet de achtergrondverlichting van de poorten aan, of uit.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting van het deksellogo</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Zet de achtergrondverlichting van het deksellogo aan of uit.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Achtergrondverlichting van het deksellogo</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zet de achtergrondverlichting van het deksellogo aan of uit.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>Ghz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>Mhz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Maximum: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Gebruik</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Kernfrequentie</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatuur</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Ventilatie</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Geheugenfrequentie</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Vernieuwingsfrequentie</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Snel Opstarten</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Start de laptop op wanneer een oplader wordt aangesloten.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Snel Opstarten</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Start de laptop op wanneer een oplader wordt aangesloten.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Kan de energiemodus niet wijzigen</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>{0} energiemodus is niet beschikbaar zonder een oplader.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensoren</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Kon modus van de videokaart niet wijzigen</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Probeer de modus opnieuw te veranderen over een paar seconden, als je het verwachte resultaat niet ziet. Als de videokaart helemaal niet reageert, herstart dan je laptop.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU momenteel in gebruik</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU zal automatisch ontkoppelen wanneer niet in gebruik.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>dGPU is momenteel in gebruik, of de laptop is niet op batterijstroom</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>dGPU zal automatisch ontkoppelen wanneer deze niet in gebruik is en wanneer de laptop op batterijstroom werkt.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>De instellingen van de aangepaste modus wordt niet correct toegepast als Lenovo Vantage of diens services actief zijn.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>De instellingen van de aangepaste modus wordt niet correct toegepast als Legion Zone of diens services actief zijn.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU verbonden</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>Verbinding met dGPU verbroken</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Modus</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Selecteer de GPU-bedieningsmodus op basis van het gebruik en de stroomvoorziening van uw computer.\nVoor het wisselen van modi is mogelijk opnieuw opstarten vereist.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hybride modus</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Sta het schakelen tussen de geïntegreerde en de discrete videokaart toe. \nDit vereist een herstart.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Duur</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Updates</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Dynamische boost van GPU naar de CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Dit is het maximale extra vermogen dat kan worden toegewezen aan de CPU vanuit de GPU, gebaseerd op het CPU-gebruik. Hoe hoger de waarde, hoe beter de prestaties van applicaties die de CPU gebruiken.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Opstartlogo</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Pas het opstartlogo aan, dat zichtbaar is als het systeem opstart.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Opstartlogo</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Standaard opstartlogo is ingesteld</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Aangepaste opstartlogo is ingesteld</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Standaardinstellingen herstellen</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Aanpassen</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Acties</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Melding tekst</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Meldingen weergeven</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Voorinstelling</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Fn knop slim vergrendelen</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>De functieknop wordt slim vergrendeld wanneer Alt, Ctrl of Shift is ingedrukt.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Uit</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Aangepaste opstartlogo moet precies {0} pixels groot zijn.\nOndersteunde formaten zijn: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>'S Nachts opladen van de batterij</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Wanneer deze optie is ingeschakeld, zal de batterij 's nachts tot 80% worden opgeladen en tegen de tijd dat je het apparaat 's ochtends wilt gebruiken, tot 100%.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>'S Nachts opladen van de batterij</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wanneer deze optie is ingeschakeld, zal de batterij 's nachts tot 80% worden opgeladen en tegen de tijd dat je het apparaat 's ochtends wilt gebruiken, tot 100%.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Ongeldige afbeeldingsformaat.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Ongeldige afbeeldingstype.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Kan EFI partitie niet koppelen.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Kan UEFI privilege niet instellen.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Er is niet voldoende vrije ruimte op de EFI partitie.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Aangepaste logo kon niet ingesteld worden: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Standaard logo kon niet ingesteld worden: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Standaard opstartlogo is ingesteld.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Aangepaste logo is ingesteld.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Netwerknaam (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Kopieer hudig netwerknaam</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Leeg laten voor elk Wi-Fi-netwerk.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Deel ventilatorsnelheid, batterijtemperatuur, etc. met HWiNFO64. De laptop moet mogelijk opnieuw opgestart worden na het wijzigen van deze optie.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Integraties</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Instellingen</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Informatie</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Downloads-map</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Downloads map openen</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Download</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Open README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Voorinstelling</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Ververs</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Verwijder</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Periode (in minuten)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Stel de teller voor 'Op batterij sinds' opnieuw in wanneer het systeem opnieuw opstart.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Stel de teller voor 'Op batterij sinds' opnieuw in wanneer het systeem opstart</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Wifi inschakelen</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Wifi inschakelen</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Stil uitvoeren</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Wacht totdat het voltooid is</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Voer console applicaties uit zonder een hiervoor een scherm te openen.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Wacht totdat programma of script is uitgevoerd</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wanneer gedempt, zullen alle actieve audio-uitvoerapparaten worden gedempt.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luidspreker</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Minimaliseer naar systeemvak</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Altijd minimaliseren naar het systeemvak in plaats van de taakbalk.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Windows Energiemodus</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Schakel naar aangepaste modus met Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Sta het snel schakelen naar aangepaste modus toe met Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Energiemodus synchronisatie</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Pas de Windows-energiemodus of het energiebeheerschema automatisch aan wanneer de energiemodus wordt gewijzigd.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Windows Energiemodus</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Laat de windows energiemodus toepassen wanneer de energiemodus verandert.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Fout opgetreden bij het lezen van de apparaat-informatie.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Herhalen</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Negeer vertragingen</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Wissen</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Opnemen</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Opnemen stoppen</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Niet herhalen</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit moet actief zijn om macro's uit te voeren.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Schakel in</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Je kunt reeksen toetsaanslagen opnemen en ze afspelen met het numerieke toetsenblok op je toetsenbord.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schakel macro's in of uit.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Onderbreek als een andere toets in wordt gedrukt</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Verberg</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Verberg alles</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Apparaten</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Selectie ongedaan maken</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Alles selecteren</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Alleen toetsenbord</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Toetsenbord en muis knoppen</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Alle invoer</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Opnameopties</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Opname zal in 3 seconden beginnen...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Opnemen...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Druk op ESC om te stoppen.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Laat alleen geselecteerde apparaten zien</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Laat alleen verwijderbare apparaten zien</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Laat alleen geselecteerde apparaten zien</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>CLI</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Schakel de opdrachtregelinterface in die controle vanaf de opdrachtregel mogelijk maakt.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Voeg CLI toe aan PATH</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>CLI toevoegen aan omgevingsvariabelen van de gebruiker.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatuur</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Eenheden selecteren voor tempratuur sensoren.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys wordt op de achtergrond uitgevoerd.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Lenovo Zone wordt op de achtergrond uitgevoerd.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage en/of ImController wordt op de achtergrond uitgevoerd.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Laat een melding zien op alle schermen die verbonden zijn aan uw apparaat.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Melding op alle schermen</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Check</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Controleren op updates...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Controleer op updates</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Update</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>API limiet bereikt, probeer het later opnieuw.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Controleren op updates is mislukt</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Er is iets fout gegaan. Probeer het later opnieuw.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Geen updates gevonden</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Automatisch controleren op updates</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Update catalogus is niet gevonden</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Probeer updates op te halen van een ander bron.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Er is iets misgegaan</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Controleer of uw internetverbinding actief is.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Geluid afspelen</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bestandsformaten zoals. .wav en.mp3 zijn ondersteund.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Snelle actie</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Voer een opgeslagen snelle actie uit.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.pl.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Ostatnia wersja na GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Linki</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Strona projektu na GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Biblioteki firm trzecich</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>O programie</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Tłumaczenia tworzone są przez społeczność.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Wersja</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Dodaj</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Zasilaj urządzenia USB, gdy laptop jest wyłączony, uśpiony lub zahibernowany.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>USB zawsze włączone</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ładuj urządzenia USB gdy komputer jest wyłączony, uśpiony lub zahibernowany.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>USB zawsze włączone</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Zastosuj</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Zastosuj i zamknij</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Akcje będą działać, tylko gdy Lenovo Legion Toolkit jest uruchomiony.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Włącz</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Nie zdefiniowano żadnych akcji. Kliknij \"dodaj nową\", aby utworzyć nową akcję.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Jeśli włączone, te akcje będą uruchamiane automatycznie. Za każdym razem, gdy stan się zmieni, wszystkie akcje zostaną przetworzone od góry do dołu.\nUruchomione zostaną tylko te akcje, które odpowiadają aktualnemu stanowi.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Akcje</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nazwa...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Dodaj nową</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Nie zdefiniowano żadnych szybkich akcji. Kliknij \"dodaj nową\", aby utworzyć nową szybką akcję.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Szybkie akcje są dostępne po kliknięciu prawym przyciskiem myszy na ikonie w zasobniku.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Szybkie akcje</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nazwa...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Zmień nazwę</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Wszystkie zmiany wycofane!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Przywrócono</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Zmiany zapisane poprawnie!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Zapisano</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatyzacja</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Dodaj krok</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Konfiguruj</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Wyłączność</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Nie wykonuj dalszych akcji, gdy ta akcja startuje.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Uruchom teraz</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Ukończono z błędami.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Uruchom teraz</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Ukończono pomyślnie!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Uruchom teraz</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Uruchomiono...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>Kroków: {0}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>Kroków: {0}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Aplikacje</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>O wschodzie słońca</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>O zachodzie słońca</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>O godz. {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Tryb wydajności</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Bez nazwy</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Automatycznie wykrywa działanie niektórych gier i dostosowuje wydajność procesora i karty graficznej. Może to skutkować wzrostem temperatur oraz głośności pracy chłodzenia.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Włącz silnik AI</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ustawienia trybu zrównoważonego</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wybierz sposób ładowania baterii.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tryb ładowania</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Wybierz sposób ładowania baterii.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Tryb ładowania</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Podłączono, ładuje...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Podłączono, nie ładuje</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Bieżąca temperatura baterii.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura baterii</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Aktualna pojemność naładowania akumulatora.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Bieżące naładowanie</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Liczba cykli ładowania/rozładowania akumulatora.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Ilość cykli</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Pojemność baterii zadeklarowana przez producenta.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Zadeklarowana pojemność</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Aktualna chwilowa średnia moc ładowania (+) lub rozładowywania (-) baterii.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Bieżący pobór mocy baterii</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Szacowany pozostały czas: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Estymowanie czasu...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Data pierwszego użycia</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Kiedy bateria została użyta po raz pierwszy.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Pojemność akumulatora przy pełnym naładowaniu.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Pojemność całkowita</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Słaba ładowarka</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Kiedy bateria została wyprodukowana.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Data produkcji</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Czas, który upłynął od ostatniego odłączenia laptopa od zasilania.\nTa wartość może być niedokładna, jeżeli komputer był wtedy uśpiony lub wyłączony.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Czas na baterii</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Bateria</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Anuluj</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Zamknij</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Niebieski</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Zielony</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Czerwony</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Wybierz sposób pracy GPU na podstawie użytkowania komputera i warunków zasilania.\nZmiana trybu może wymagać ponownego uruchomienia.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Zmiana na {0} wymaga ponownego uruchomienia. Czy chcesz uruchomić ponownie teraz?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Wymagane ponowne uruchomienie</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Tryb pracy GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Szybkie akcje</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Kontynuuj</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Kopiuj wszystkie</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafika</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Inne</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Zasilanie</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Ekran główny</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Odłącz dedykowaną kartę graficzną, jeśli jest aktywna bez potrzeby.\n\nUWAGA: Ta akcja nie zadziała właściwie, jeżeli wbudowany ekran jest wyłączony, lub gdy tryb hybrydowy nie jest aktywny.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Deaktywuj GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Dodaj opóźnienie przed wykonaniem następnego kroku.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Opóźnienie</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Usuń</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Wersja BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Tekst skopiowano do schowka.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" skopiowano do schowka.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Skopiowano!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Urządzenie</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Wsparcie Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Typ maszyny</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Producent</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Modal</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Numer seryjny</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>O urządzeniu</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Data zakończenia</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Data rozpoczęcia</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Gwarancja</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Aktywna</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Zdezaktywuj</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Nieaktywna</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Zatrzymaj aplikacje</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Odłącz dedykowaną kartę graficzną, jeśli jest aktywna bez potrzeby.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Monitor jest podłączony do karty NVIDIA.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Brak procesów</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Tryb wydajnościowy</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Nieznany</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Procesy</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Zrestartuj GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Dedykowany GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zmień jasność wbudowanego wyświetlacza.\n\nUWAGA: Ta akcja nie zadziała właściwie, jeśli wbudowany ekran jest wyłączony.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Jasność ekranu</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Przekaż darowiznę używając</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Tworzenie i utrzymywanie Lenovo Legion Toolkit zajmuje bardzo dużo czasu. Jeżeli lubisz używać tego programu, możesz wesprzeć jego rozwój przekazują darowiznę.\n\nKliknij logo poniżej lub zeskanuj kod QR, żeby przekazać darowiznę poprzez PayPal.\n\nZ góry dziękuję!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Przekaż darowiznę</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Edytuj</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Odznaczone częstotliwości odświeżania nie będą mogły być zmieniane skrótem klawiszowym Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Upewnij się, że ekran laptopa jest włączony. Lenovo Legion Toolkit nie może załadować częstotliwości odświeżania dla ekranu, który jest wyłączony.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Nie znaleziono żadnych częstotliwości odświeżania</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Wyklucz częstotliwości odświeżania</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Zamknij</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Eksportuj</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Używaj wyłącznie zintegrowanej karty graficznej podczas pracy na baterii, oraz zintegrowanej i dedykowanej przy podłączonym zasilaniu.\nPo podłączeniu niestandardowej ładowarki system przełącza się w tryb hybrydowy-tylko iGPU.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Tryb hybrydowy-auto</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Przełączenie tego trybu wymaga ponownego uruchomienia.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Używaj tylko dedykowanej karty graficznej. Ten tryb oferuje najwyższą wydajność grafiki, ale zwiększa pobór mocy.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Tryb dedykowanej karty graficznej</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Zarówno karta zintegrowana, jak i dedykowana, są włączone. System będzie automatycznie przełączał się między nimi w zależności od potrzeb.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Tryb hybrydowy</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Ten tryb zadziała tylko wtedy, gdy dedykowana karta graficzna nie pracuje.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Używaj tylko zintegrowanej karty graficznej. Ten tryb zmniejsza pobór mocy i głośność pracy chłodzenia.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Tryb hybrydowy-tylko iGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>O trybach pracy GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Sensor CPU</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Prędkość wentylatora</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Włącz laptopa przy otwarciu pokrywy.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Funkcja Flip to Start</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Włącz laptopa przy otwarciu pokrywy.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Funkcja Flip to Start</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Użyj drugorzędnych funkcji klawiszy F1-F12 bez trzymania klawisza Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Użyj drugorzędnych funkcji klawiszy F1-F12 bez trzymania klawisza Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>UWAGA!\nNiektóre laptopy mogą pozwolić na wartości niższe niż wskazują, ale zachowaj ostrożność. Ta opcja może prowadzić do nieprzewidzianego zachowania. Jeśli nie jesteś pewien, co robisz, pozostaw tę wartość na 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Minimalny offset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>UWAGA!\nNiektóre laptopy mogą pozwolić na wartości wyższe, niż wskazują, ale zachowaj ostrożność. Ta opcja może prowadzić do nieprzewidzianego zachowania. Jeśli nie jesteś pewien, co robisz, pozostaw tę wartość na 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maksymalny offset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Nie zmieniaj poniższych ustawień, chyba że naprawdę wiesz, co robisz.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Zaawansowane</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Długotrwały limit mocy (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Długotrwały limit mocy</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Podwyższony limit mocy</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limit temperatury CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Nie można było zastosować ustawień</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Nie można było wczytać ustawienia.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Prędkość wentylatora nie jest ściśle określona przez jeden czujnik temperatury. Zwiększy lub zmniejszy on prędkość zgodnie z najwyższym odczytem spośród czujników temperatury CPU, GPU i radiatora. Dokładne wartości pojawią się po najechaniu myszką na każdy z kroków.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Krzywa chłodzenia</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>OSTRZEŻENIE!\nDługotrwałe korzystanie z tej opcji spowoduje nadmierne zużycie wentylatorów i skróci ich żywotność. \nNaprawdę, zachowaj ostrożność z tą opcją!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Maksymalna prędkość wentylatora</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Wentylatory</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Konfigurowalny TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limit temperatury GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ustawienia trybu własnego</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Włącz funkcję High-dynamic-range (HDR) dla ekranu wbudowanego.\n\nUWAGA: Ta akcja nie zadziała właściwie, jeśli wbudowany ekran jest wyłączony.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Włącz funkcję High-dynamic-range (HDR) dla ekranu wbudowanego.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Użycie HDR jest zablokowane przez ustawienia Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Import</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>To urządzenie nie jest kompatybilne z Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Nie znaleziono kompatybilnych klawiatur</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie klawiatury</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Nie można stąd sterować podświetleniem klawiatury, jeśli Lenovo Vantage lub jego usługi pracują w tle.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage lub jego usługi pracują w tle</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>O programie</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Akcje</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Bateria</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Kokpit</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Wspomóż</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Klawiatura</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Pobieranie</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Ustawienia</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Dostępna aktualizacja!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Aktualizacja {0} jest dostępna!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Przesuń niżej</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Przesuń wyżej</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nie</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Zasilacz podłączony</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Zasilacz podłączony (niska moc)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Zasilacz odłączony</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Kamera wyłączona</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Kamera włączona</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock wyłączony</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock włączony</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock wyłączony</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock włączony</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Mikrofon wyłączony</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Mikrofon włączony</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock wyłączony</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock włączony</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Podświetlenie {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Jasność {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad wyłączony</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad włączony</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Podświetlenie {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Zasilacz</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Kamera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock i Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Wyłącza powiadomienia dla skrótów Fn np. wyciszenie mikrofonu.\nWłącz tę opcję, jeżeli powiadomienia utrudniają korzystanie z aplikacji pełnoekranowych.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Nie pokazuj powiadomień</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Podświetlenie klawiatury</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Położenie</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Tryb wydajności</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Częstotliwość odświeżania</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Klawisz Smart</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Powiadomienia</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Blokada touchpada</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Otwórz</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zwiększ czas reakcji wbudowanego ekranu.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Funkcja OverDrive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Zwiększ czas reakcji wbudowanego ekranu.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Funkcja OverDrive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>Pobrano {0}!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Pobieranie zakończone</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Coś poszło nie tak</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Serwer zwrócił błąd 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Plik nie istnieje</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Sprawdź połączenie z Internetem.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Coś poszło nie tak</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Dostępna aktualizacja!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Ten pakiet jest starszy niż rok.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Wersja</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Poniżej jest lista pakietów oprogramowania oznaczonych jako kompatybilne z twoim laptopem.\nZawsze sprawdzaj, czy instalujesz właściwe pakiety.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Sprawdź, czy typ maszyny i system operacyjny jest właściwy.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Coś poszło nie tak</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Zmiana sortowania lub filtru, ukrycie pakietu lub odświeżenie listy zatrzyma pobieranie. Czy kontynuować mimo to?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Trwa pobieranie</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtruj...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Typ maszyny</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>System operacyjny</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Główne (zalecane)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Tak jak z Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Drugorzędne</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Tak jak ze strony Lenovo</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Kategoria</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Data</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Nazwa</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Źródło</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Pobieranie</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Wklej</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zmień tryb wydajności.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tryb wydajności</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Zmień tryb wydajności.\nMożesz też zmienić tryb wydajności klawiszami Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Ustawienia</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Tryb wydajności</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Wybrany tryb wydajności może nie działać właściwie bez podłączonego zasilania.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Domyślny</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Plany zasilania systemu Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Dostosuj ustawienie predefiniowane podświetlenia klawiatury.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie klawiatury</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Jasność</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Ustawienie 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Ustawienie 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Ustawienie 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Ustawienie 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Wyłączony</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Strefa 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Strefa 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Strefa 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Strefa 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efekt</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Prędkość</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Plik Readme</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Odśwież</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zmień częstotliwość odświeżania wbudowanego ekranu.\n\nUWAGA: Ta akcja nie zadziała właściwie, jeśli wbudowany ekran jest wyłączony.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Częstotliwość odświeżania</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Zmień częstotliwość odświeżania wbudowanego ekranu.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Częstotliwość odświeżania</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Zmień nazwę</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Uruchomię ponownie później</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Uruchom ponownie teraz</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Przywróć</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Parametry</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Ścieżka do pliku wykonywalnego</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Uruchamia skrypt lub program.\nUprzednio sprawdź, czy twój skrypt działa prawidłowo.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Uruchom</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Zachowaj</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Zapisywanie...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Wybierz co najmniej jedną szybką akcję do przełączania się</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Nie zdefiniowano żadnych szybkich akcji.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Pokaż tę aplikację</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Zmień kolor wiodący elementów interfejsu aplikacji.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Kolor wiodący</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Uruchom jako zminimalizowany do zasobnika przy zalogowaniu do Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Automatyczne uruchamianie</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone mógł nie zostać wyłączony prawidłowo</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nie można było wyłączyć Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Wyłącz Legion Zone i jego usługę bez jego odinstalowywania.\nPo zmianie tego ustawienia zalecane jest ponowne uruchomienie.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Wyłącz Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Hotkeys mógł nie zostać wyłączony prawidłowo</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nie można było wyłączyć Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Wyłącz Lenovo Hotkeys i jego usługę bez jego odinstalowywania.\nJeśli zostanie wyłączony, skróty klawiszowe Fn będą obsługiwane przez ten program.\nPo zmianie tego ustawienia zalecane jest ponowne uruchomienie.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Wyłącz Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage i/lub ImController mógł nie zostać wyłączony prawidłowo</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Nie można było wyłączyć Lenovo Vantage i/lub ImControllera</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Wyłącz Lenovo Vantage and ImController bez ich odinstalowywania.\nPo zmianie tego ustawienia zalecane jest ponowne uruchomienie.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Wyłącz Lenovo Vantage i ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone mógł nie zostać włączony prawidłowo</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nie można było włączyć Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Hotkeys mógł nie zostać włączony prawidłowo</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nie można było włączyć Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage i/lub ImController mógł nie zostać włączony prawidłowo</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Nie można było włączyć Lenovo Vantage i/lub ImControllera</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Możesz wykluczyć częstotliwości odświeżania ze skrótu Fn+R.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Wyklucz częstotliwości odświeżania</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Wybierz język.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Język</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Zawsze minimalizuj do zasobnika. Zamknij prawym przyciskiem na ikonie zasobnika.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimalizuj przy zamknięciu</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Wybierz wyświetlane powiadomienia.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Powiadomienia</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Plany zasilania systemu Windows</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Przydziel szybką akcję dla pojedynczego wciśnięcia Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Druga akcja dla klawisza Smart</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Przydziel szybką akcję dla podwójnego wciśnięcia Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Akcja dla klawisza Smart</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Wybierz motyw jasny, ciemny, albo ustaw zgodnie z motywem systemu.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Motyw</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Ustawienia</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Dostosuj jasność podświetlenia klawiatury.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Jasność podświetlenia klawiatury</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Dodaj efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Nie można było zastosować profilu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Profil oświetlenia nie może zostać zastosowany.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Jasność</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Odznacz wszystkie strefy</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Efekty</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Nie można było wyeksportować profilu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nie można było wyeksportować profilu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Nie można było zaimportować profilu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nie można było zaimportować profilu</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Nie dodano żadnych efektów.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Przywróć domyślne</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Zaznacz wszystkie strefy</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Przełącz układ klawiatury</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Kierunek</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Kolor</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Kolory</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Kierunek</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Ten efekt zostanie zastosowany do całej klawiatury i zastąpi wszystkie inne efekty.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Prędkość</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Dodaj efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Edytuj efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Dostosuj profil podświetlenia klawiatury.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Profil podświetlenia klawiatury</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Wszystkie klawisze</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>Stref: {0}</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Wschód słońca</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Zachód słońca</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Czas</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Zezwól na przełączanie pomiędzy zintegrowaną i dedykowaną kartą graficzną.\nWymaga ponownego uruchomienia.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Zmiana trybu hybrydowego wymaga ponownego uruchomienia. Czy chcesz uruchomić ponownie teraz?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Wymagane ponowne uruchomienie</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Tryb hybrydowy</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wyłącz touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Blokada touchpada</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Wyłącz touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Blokada touchpada</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Spróbuj ponownie</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Bez nazwy</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Możesz kontynuować na własne ryzyko, ale miej na uwadze, że niektóre funkcje mogą być niedostępne i/lub nie działać poprawnie.\n\nJeśli zdecydujesz się kontynuować, logowanie zostanie włączone automatycznie.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Odwiedź stronę projektu w serwisie GitHub, aby uzyskać więcej informacji.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Folder z logami</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Typ maszyny</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit nie został sprawdzony dla tego urządzenia.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Nieobsługiwane urządzenie</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Producent</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Aktualizacja</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Dostępna aktualizacja</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Co nowego?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Dostosuj jasność podświetlenia klawiatury.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie klawiatury</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Możesz zmieniać jasność podświetlenia klawiszami Fn+Spacja</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie klawiatury</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wyłącz klawisz Windows w klawiaturze laptopa.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Blokada klawisza Windows</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Działa wyłącznie z wbudowaną klawiaturą.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Blokada klawisza Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Tak</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Gdy wyłączone, mikrofony zostaną wyciszone.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Gdy wyłączone, mikrofony zostaną wyciszone.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Rozdzielczość</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Zmień rozdzielczość wbudowanego ekranu.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rozdzielczość</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zmień rozdzielczość wbudowanego ekranu.\n\nUWAGA: Ta akcja nie zadziała właściwie, jeśli wbudowany ekran jest wyłączony.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Zmień skalę (DPI) wbudowanego ekranu.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zmień skalę (DPI) wbudowanego ekranu.\n\nUWAGA: Ta akcja nie zadziała właściwie, jeśli wbudowany ekran jest wyłączony.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Wyświetlacz</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie klawiatury</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Możesz sterować podświetleniem klawiatury za pomocą klawiszy Fn+Spacja.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie klawiatury</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Włącz lub wyłącz podświetlenie klawiatury.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Nie znaleziono pasujących plików do pobrania</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Pokaż tylko aktualizacje</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Dostosuj kokpit</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Wczytaj</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Utwórz grupę</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Nazwa</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Pewne funkcje kokpitu mogą nie być dostępne, w zależności od stanu i konfiguracji laptopa.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Dostosuj</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Wyłącz ekrany</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Wyłącz wszystkie dostępne ekrany.\nWciśnięcie klawisza lub poruszenie myszą wybudzi ekrany.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Wyłącz</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Wyłącz ekrany</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wyłącz wszystkie dostępne ekrany.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Zmień nazwę grupy</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Nazwa</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Logo Legion włączone</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Logo Legion wyłączone</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Podświetlenie portów włączone</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Podświetlenie portów wyłączone</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Wymagane ponowne uruchomienie</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Wymagane zamknięcie</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Zalecane ponowne uruchomienie</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Zapisz i zamknij</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Predefiniowane ustawienie trybu własnego</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aktywuj predefiniowane ustawienie trybu własnego.\nTo ustawienie zadziała, jeśli tryb własny jest włączony.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Nazwa ustawienia</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Nazwa</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Aktywne ustawienie predefiniowane</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Foldery aplikacji</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Dane</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Tymczasowe</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Jednolity poziom jasności ekranu</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Po włączeniu tego ustawienia ten sam poziom jasności zostanie zastosowany do wszystkich planów zasilania systemu Windows po każdej jego zmianie.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Aktualizacja {0} jest dostępna!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Limit mocy maksymalnej</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Limit mocy APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Ciągłe zużycie mocy, które może osiągnąć CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Maksymalne zużycie mocy, które może osiągnąć CPU w krótkotrwałym okresie.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Maksymalne chwilowe zużycie mocy, które może osiągnąć CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Maksymalne zużycie mocy, które może osiągnąć CPU, gdy CPU i GPU są w pełnym użytku.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Szczytowe zużycie energii, które może być osiągnięte przez procesor z niewielkim opóźnieniem.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Maksymalna temperatura, która może zostać osiągnięta przez CPU, zanim nastąpi redukcja częstotliwości i mocy.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Maksymalna dodatkowa moc, która może być przydzielona do GPU na podstawie konsumpcji mocy CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Dodatkowa ilość mocy, która może być przydzielona do GPU ponad podstawowe użycie.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Maksymalna temperatura, która może zostać osiągnięta przez GPU, zanim nastąpi redukcja częstotliwości i mocy.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Domyślny</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Czas trwania podwyższonego limitu mocy (Short Term Power Limit)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Czas, przez który CPU może korzystać z podwyższonego limitu mocy (Short Term Power Limit). Gdy czas Tau upłynie, zacznie obowiązywać długotrwały limit mocy (Long Term Power Limit).</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Całkowity limit mocy procesora przy zasilaniu sieciowym</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Punkt, w którym CPU wyzwala dynamiczną regulację zużycia energii dla GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Utwórz</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Dodaj krok</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Utwórz akcję</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Tryb wydajności</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Ustawienie</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Dedykowana grafika</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Stan zasilania</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Bateria</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Tryb</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Pobór mocy</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Dostępna aktualizacja!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Wybierz ikonę</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Zmień ikonę</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Niski poziom naładowania baterii</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Skonfiguruj</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Wykryto model z S0 Low Power Idle</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>System Windows wykrył, że ten laptop wspiera tzw. nowoczesny tryb gotowości (Modern Standby). Użycie planów zasilania innych niż zrównoważony może skutkować nieoczekiwanym zachowaniem.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Wybierz plany zasilania systemu Windows do ustawienia przy zmianie trybu wydajności.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Zasilanie i wydajność</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Opcje planu zasilania w panelu sterowania systemu Windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Odłączony</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Importuj profil konfiguracji podświetlenia</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Importuj i zastosuj konfigurację podświetlenia do bieżącego profilu.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Ścieżka</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Po {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Wiele warunków...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Ustawienia overclockingu GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Offset częstotliwości pracy zegara rdzenia</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Offset częstotliwości zegara pamięci</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Podkręć GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Zwiększ wydajność grafiki, overclockując dedykowaną kartę graficzną.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podkręć GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zwiększ wydajność grafiki, overclockując dedykowaną kartę graficzną.\n\nUWAGA: Ta akcja nie zadziała właściwie, jeśli dedykowana karta graficzna nie jest dostępna.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie portów</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Włącz lub wyłącz podświetlenie portów z tyłu laptopa.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie portów</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Włącz lub wyłącz podświetlenie portów z tyłu laptopa.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie logo pokrywy laptopa</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Włącz lub wyłącz podświetlenie logo na pokrywie laptopa.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podświetlenie logo pokrywy laptopa</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Włącz lub wyłącz podświetlenie logo na pokrywie laptopa.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Maksymalnie: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Wykorzystanie</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Częstotliwość pracy zegara rdzenia</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Wentylator</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Zegar pamięci</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Szybkość odświeżania</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Natychmiastowy rozruch</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Włącz laptopa, gdy jest podłączany pod zasilanie.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Natychmiastowy rozruch</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Włącz laptopa, gdy jest podłączany pod zasilanie.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Nie można zmienić trybu wydajności</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>{0} tryb wydajności nie jest dostępny bez podłączonego zasilania.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensory</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Nie można zmienić trybu pracy GPU</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Spróbuj zmienić tryb ponownie za kilka sekund, jeśli nie widzisz oczekiwanego rezultatu.\nJeśli dedykowana karta graficzna nie odpowiada, uruchom laptop ponownie.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>Dedykowana karta graficzna jest obecnie w użyciu</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>Dedykowana karta graficzna odłączy się automatycznie, jeśli nie będzie używana.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>Dedykowana karta graficzna jest obecnie w użytku, albo laptop nie jest na zasilaniu bateryjnym</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>Dedykowana karta graficzna odłączy się automatycznie, jeśli nie będzie używana oraz gdy laptop jest na zasilaniu bateryjnym.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Ustawienia trybu własnego mogą nie zostać zastosowane prawidłowo, jeśli Lenovo Vantage lub jego usługi pracują w tle.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Ustawienia trybu własnego mogą nie zostać zastosowane prawidłowo, jeśli Legion Zone lub jego usługi pracują w tle.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>Dedykowana karta graficzna podłączona</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>Dedykowana karta graficzna odłączona</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tryb pracy GPU</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wybierz sposób pracy GPU na podstawie użytkowania komputera i warunków zasilania.\nZmiana trybu może wymagać ponownego uruchomienia.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tryb hybrydowy</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zezwól na przełączanie pomiędzy zintegrowaną i dedykowaną kartą graficzną.\nWymaga ponownego uruchomienia.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Czas trwania</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Aktualizacje</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Dynamic Boost GPU do CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>To jest maksymalna dodatkowa moc, która może być przydzielona do CPU z GPU na podstawie wykorzystania CPU. Im ta wartość jest wyższa, tym większa wydajność aplikacji korzystających z CPU.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Logo rozruchowe</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Dostosuj logo, które jest widoczne przy uruchamianiu systemu.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Logo rozruchowe</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Jest ustawione domyślne logo rozruchowe</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Jest ustawione logo rozruchowe użytkownika</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Stan</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Przywróć domyślne</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Dostosuj</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Akcje</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Treść powiadomienia</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Pokaż powiadomienie</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Ustawienie predefiniowane</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Inteligentna blokada przycisku Fn</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Fn Lock zostanie tymczasowo wyłaczony, gdy wciśnięty jest klawisz Alt, Ctrl lub Shift.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Wyłączone</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Własne logo musi być w rozmiarze {0} pikseli.\nObsługiwane formaty obrazka: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Ładowanie baterii w nocy</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Jeśli włączone, urządzenie naładuje się do 80% w ciągu nocy, a następnie naładuje się do 100% przed użyciem komputera z rana.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ładowanie baterii w nocy</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Jeśli włączone, urządzenie naładuje się do 80% w ciągu nocy, a następnie naładuje się do 100% przed użyciem komputera z rana.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Nieprawidłowy rozmiar obrazka.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Nieprawidłowy format obrazka.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Nie można zamontować partycji EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Nie można ustawić uprawnienia UEFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Nie ma wystarczającej ilości przestrzeni na partycji EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Logo użytkownika nie mogło zostać ustawione: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Domyślne logo nie mogło zostać ustawione: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Ustawiono domyślne logo rozruchowe.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Ustawiono logo rozruchowe użytkownika.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Nazwa sieci (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Skopiuj nazwę bieżącej sieci</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Pozostaw puste dla dowolnej sieci Wi-Fi.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Udostępnij prędkość wentylatora, temperaturę baterii itp. z HWiNFO64. Po zmianie tej opcji może być wymagane ponowne uruchomienie programu HWiNFO64.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Integracje</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Ustawienia</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Informacja</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Folder pobierania</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Otwórz folder pobierania</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Pobierz</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Otwórz plik README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Ustawienie predefiniowane</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Odśwież</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Usuń</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Okres (w minutach)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Start systemu wyzeruje licznik dla wskaźnika \"Czas na baterii\" w sekcji Bateria.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Resetuj \"Czas na baterii\" przy starcie systemu</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Wyłącz Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Włącz Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Uruchom po cichu</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Czekaj na ukończenie</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Uruchom aplikacje wiersza poleceń, bez pokazywania okna wiersza poleceń.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Poczekaj, aż program lub skrypt ukończy pracę</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Przy wyciszeniu, wszystkie urządzenia wyjścia audio zostaną wyciszone.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Głośnik</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Minimalizuj do zasobnika</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Zawsze minimalizuj do zasobnika, zamiast do paska zadań.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Tryby zasilania systemu Windows</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Zmień na tryb własny za pomocą Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Zezwól na zmianę na tryb własny za pomocą Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Synchronizacja trybu wydajności</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Automatycznie zmieniaj plan zasilania lub tryb zasilania systemu Windows przy zmianie trybu wydajności.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Tryby zasilania systemu Windows</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Wybierz tryb zasilania systemu Windows do ustawienia przy zmianie trybu wydajności.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Napotkano błąd podczas próby odczytu informacji o urządzeniu.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Makro</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Makro</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Powtarzanie</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Zignoruj opóźnienia</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Wyczyść</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Nagraj</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Zatrzymaj nagrywanie</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Nie powtarzaj</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Aby makra działały, Lenovo Legion Toolkit musi być włączony w tle.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Włącz</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Możesz nagrać sekwencję naciśnięć klawiszy i wywołać ją, używając klawisza na klawiaturze numerycznej.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Makro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Włącz lub wyłącz makra.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Przerwij przy wciśnięciu innego klawisza</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Ukryj</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Ukryj wszystkie</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Urządzenia</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Odznacz wszystko</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Zaznacz wszystko</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Tylko klawiatura</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Klawisze oraz przyciski myszy</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Wszystkie wejścia</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Opcje nagrywania</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Nagrywanie rozpocznie się za 3 sekundy...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Nagrywanie...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Wciśnij ESC, aby zatrzymać.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Pokaż tylko zaznaczone urządzenia</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Pokaż tylko wymienne urządzenia</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Pokaż tylko podłączone urządzenia</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>Interfejs wiersza poleceń (CLI)</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Włącz interfejs pozwalający na sterowanie za pomocą wiersza poleceń.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Dodaj CLI do PATH</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Dodaj CLI do zmiennej środowiskowej PATH użytkownika.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Wybierz jednostkę temperatury dla sensorów.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys pracuje w tle.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone pracuje w tle.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage i/lub ImController pracuje w tle.</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Sprawdź</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Sprawdzanie aktualizacji...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Sprawdź aktualizacje</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Aktualizacja</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>Przekroczono limit żądań API, spróbuj ponownie później.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Nie udało się sprawdzić aktualizacji</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Coś poszło nie tak, spróbuj ponownie później.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Nie znaleziono żadnych aktualizacji</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Automatycznie sprawdzaj aktualizacje</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Nie znaleziono katalogu aktualizacji</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Spróbuj pobrać aktualizacje z innego źródła.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Coś poszło nie tak</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Sprawdź połączenie z Internetem.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Odtwórz dźwięk</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wspierane są popularne formaty takie jak wav lub mp3.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Szybkie akcje</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wykonaj szybką akcję.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.pt-br.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Compilação</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Última versão no GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Links</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Site do projeto no GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Bibliotecas de Terceiros</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Sobre</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Traduzido para o Português (Brasil) por Vernnon!.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Versão</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Adicionar</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Adicionar um nova</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Carregar dispositivos USB mesmo quando o computador estiver desligado, em modo de suspensão ou hibernando.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>USB Sempre ativa</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Carregar dispositivos USB mesmo quando o computador estiver desligado, em modo de suspensão ou hibernando.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>USB Sempre ativa</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Aplicar</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Aplicar e Fechar</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>O Lenovo Legion Toolkit deve estar sendo executado para rodar tarefas automatizadas.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Habilitar</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Sem ações definidas. Clique em \"Adicionar nova\" para criar uma ação.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Se habilitado, essas ações serão executadas automaticamente. Independente do estado, todas as ações serão validadas de cima para baixo.\nSomente ações que correspondem com o estado atual serão executadas.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Ações</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nome...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Adicionar nova</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Sem ações definidas. Clique em \"Adicionar nova\" para criar uma ação.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>As ações rápidas estão disponíveis no menu do botão direito no ícone da bandeja.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Ações Rápidas</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nome...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Renomear</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Todas as ações foram descartadas!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Reverter</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>As alterações foram salvas com sucesso!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Salvo</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automação</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Adicionar passo</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Configurar</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exclusivo</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Não executar ações futuras quando essa ação rodar.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Executar agora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Concluído com erros.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Executa agora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Concluído com sucesso!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Executar agora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Executando...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} Etapa</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} Etapa</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Aplicativos</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Ao nascer do sol</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Ao por do sol</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>As {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Plano de Energia</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Sem nome</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Detecta automaticamente quando certos jogos estão sendo executados e configura o desempenho da CPU e GPU. As temperaturas e os níveis de ruído dos coolers podem aumentar.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Ativar mecanismo de IA</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Configuração do modo Balanceado</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Definir o modo de carregamento da bateria.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo de bateria</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Definir o modo de carregamento da bateria.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo de bateria</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Conectado, carregando...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Conectado, não carregando</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Temperatura atual da bateria.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacidade de carga atual.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacidade atual</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Números de ciclos de carga/descarga.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Ciclos de carga</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacidade nominal.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacidade original</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Taxa de carregamento (+) ou descarregamento (-) da bateria.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Taxa de descarga</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Tempo restante estimado: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Tempo restante...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Data do primeiro uso</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Quando a bateria foi utilizada pela primeira vez.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacidade total de carga da bateria.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacidade de carga total</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Carregador de baixa potência conectado</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Data de fabricação da bateria.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Data de fabricação</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Tempo desde que o notebook foi desconectado do carregador.\nEste tempo pode não ser exato caso o equipamento for carregado em estado de suspensão ou desligado.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Em bateria desde</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Bateria</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>ºC</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Fechar</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Azul</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Vermelho</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Selecionar o modo de funcionamento da GPU, seguindo o uso e as condições de energia de seu equipamento.\nUma reinicialização pode ser necessária.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Mudar o {0} requer uma reinicialização. Deseja reiniciar o computador agora?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Reinicialização necessária</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo de trabalho da GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Ações Rápidas</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Avançar</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Copiar tudo</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Gráficos</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Outros</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Energia</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Início</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desativar a GPU dedicada se estiver ativa sem necessidade.\n\nAVISO: Esta ação não será executada corretamente se o display interno estiver desligado ou o modo híbrido não estiver ativo.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Desativar GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Adicionar atraso antes de executar esse passo.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Atraso</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Excluir</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Versão da BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Texto copiado para a área de transferência.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>{0} copiado para a área de transferência.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Copiado!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Dispositivo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Suporte Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Tipo de máquina</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Fabricante</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Modelo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Número de série</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Sobre seu dispositivo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Data de Término</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Data de Início</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garantia</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Ativa</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Desativar</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Inativa</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Encerrar Aplicativos</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Desativar a GPU dedicada se estiver ativa desnecessariamente.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Um monitor está conectado a GPU nVidia.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Nenhum processo</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Estado do desempenho</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Desconhecido</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Processos</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Reiniciar GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU dedicada</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Alterar o brilho da tela integrada.\n\nAVISO: Esta ação não será executada corretamente se a tela integrada estiver desligada.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Brilho da tela</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Doar com</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>O desenvolvimento e a manutenção do Lenovo Legion Toolkit leva muito tempo. Se você gosta de usar este software pode apoiar seu futuro doando uma quantia de sua escolha.\n\nClique no logotipo do PayPal abaixo ou digitalize o QR code para doar com o PayPal.\n\nDesde já, obrigado!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Doar</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Editar</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Desmarque as atualizações de tela que você não deseja utilizar ao pressionar o atalho Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Verifique se a tela do notebook está ligada. O Lenovo Legion Toolkit não pode carregar taxas de atualização para uma tela que não está ligada.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Taxas de atualizações não encontradas</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Taxas de atualizações excluídas</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Sair</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Exportar</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Usa somente a GPU integrada quando em modo de bateria e ambas (integrada e dedicada) quando o carregador estiver conectado. Quando um carregador não padrão estiver conectado, o sistema será colocado em modo Hibrido.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Modo Hibrido Automático</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Mudar de e para este modo requer reinicialização.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Usar somente a GPU dedicada. Este modo fornece o melhor desempenho gráfico, mas aumenta o consumo de energia.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Modo dGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Tanto a GPU integrada quanto a dedicada estão habilitadas. O sistema alternará automaticamente entre eles com base em suas necessidades.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Modo Hibrido</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Este modo somente entrará em vigor quando a GPU dedicada não estiver sendo executada.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Usar somente a GPU integrada. Este modo diminui o consumo de energia e os níveis de barulho dos coolers.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Modo hibrido iGPU somente</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Sobre o modo de funcionamento das GPU's</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Sensor da CPU</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Velocidade dos Coolers</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ligar o notebook ao abrir a tampa da tela.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Abrir para iniciar</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Ligar o notebook ao abrir a tampa da tela.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Abrir para iniciar</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Usar as funções das teclas secundárias de F1 a F12 sem segurar o botão Fn do teclado.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueio da tecla Fn</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Usar as funções das teclas secundárias de F1 a F12 sem segurar o botão Fn do teclado.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueio da tecla Fn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>AVISO!\nAlguns notebooks podem aceitar limites de energia menores do que indicado, mas tenha cuidado! Esta opção pode resultar em comportamentos imprevisíveis, então caso não tenha certeza do que está fazendo, deixe em 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Deslocamento mínimo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>AVISO!\nAlguns notebooks podem aceitar limites de energia maiores do que indicado, mas tenha cuidado! Esta opção pode resultar em comportamentos imprevisíveis, então caso não tenha certeza do que está fazendo, deixe em 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Deslocamento máximo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Não mude as opções abaixo caso você não saiba o que está fazendo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Avançado</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Power Limit de Longo Prazo (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Power Limit de Longo Prazo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Power Limit de Curto Prazo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limite de temperatura da CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Não foi possível aplicar as configurações</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Não foi possível carregar as configurações.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>A velocidade dos coolers não é estritamente determinada por um sensor de temperatura. Ele aumentará ou diminuirá a velocidade pelo sensor mais alto entre a temperatura da CPU, GPU e dissipador de calor. Os valores exatos aparecerão quando você passar o mouse sobre cada etapa.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Curva dos Coolers</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>AVISO!\nO uso prolongado dessa opção aumentará o desgaste e a longevidade.\nSério, cuidado com essa opção!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Velocidade máxima dos coolers</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Coolers</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>TGP Configurável</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Boost Dinâmico</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Temperatura limite da GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Configurações do modo personalizado</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ative a alta faixa dinâmica (HDR) na tela integrada.\n\nAVISO: Esta ação não será executada corretamente se o display interno estiver desligado.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Ativar a alta faixa dinâmica (HDR) na tela integrada.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>O uso do HDR é bloqueado pelas configurações do Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importar</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Este equipamento não é compatível com o Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Nenhum teclado compatível encontrado</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Iluminação do teclado</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>A luz de fundo do teclado não pode ser controlada aqui quando o Lenovo Vantage ou seus serviços estão em execução.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage ou seus serviços estão em execução</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Sobre</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Ações</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Bateria</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Dashboard</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Doar</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Teclado</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Downloads</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Configs</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Atualização disponível!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Atualização {0} disponível!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Mover para baixo</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Mover para cima</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Não</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Carregador conectado</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Carregador conectado (Baixa potência)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Carregador desconectado</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Câmera desligada</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Câmera ligada</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock desligado</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock ligado</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Trava tecla Fn desligada</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Trava tecla Fn ligada</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Microfone desligado</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Microfone ligado</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock desligado</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock ligado</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Iluminação do teclado {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Brilho {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Perfil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad desligado</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad ligado</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Iluminação do teclado {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Carregador</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Câmera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock e Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Desativar as notificações para ações das teclas Fn como silenciar o microfone.\nAtive esta opção se você tiver conflitos com aplicativos de tela inteira.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Não exibir notificações</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Trava tecla Fn</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Iluminação do Teclado</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Microfone</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Posição</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Plano de Energia</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Taxa de atualização</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Acesso Rápido</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Notificações</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Travar touchpad</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Aceitar</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Abrir</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Melhora o tempo de resposta da tela integrada.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Melhora o tempo de resposta da tela integrada.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} baixados!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Download concluído</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Alguma coisa deu errado</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>O servidor retornou o código de erro 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Este arquivo parece estar corrompido</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Verifique se sua internet está conectada e funcionando.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Alguma coisa deu errado</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Atualização disponível!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Este pacote tem mais de um ano.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Versão</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Abaixo está uma lista de pacotes de software marcados como compatíveis com seu notebook.\nSempre certifique-se de estar instalando os pacotes corretos.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Verifique se o Tipo de Máquina e o sistema operacional estão configurados corretamente.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Alguma coisa deu errado</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Alterar a classificação, filtrar resultados, ocultar pacotes ou atualizar a lista interromperá o download. Deseja continuar?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Download em andamento</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtro...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Tipo de máquina</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Sistema operacional</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primário (Recomendado)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>O mesmo que o Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Secundário</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>O mesmo que Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Categoria</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Data</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Origem</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Downloads</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Colar</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Alterar o modo de desempenho.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Plano de Energia</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Alterar o modo de desempenho.\nVocê pode alternar entre os modos pressionando Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Configurações</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Plano de Energia</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>O modo de energia selecionado pode não funcionar corretamente sem o carregador conectado.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Padrão</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Planos de Energia do Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar a predefinição da luz de fundo do teclado.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação do teclado</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Brilho</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Predefinição 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Predefinição 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Predefinição 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Perfil 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zona 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zona 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zona 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zona 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efeito</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Velocidade</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Leia-me</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Atualizar</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Alterar a taxa de atualização da tela integrada.\n\nAVISO: Esta ação não será executada corretamente se a tela integrada estiver desligada.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Taxa de atualização</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Alterar a taxa de atualização da tela integrada.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Taxa de atualização</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Renomear</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Reiniciar mais tarde</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Reiniciar agora</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Desfazer</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumentos</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Caminho do executável</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Execute um script ou um programa.\nCertifique-se de que seu script seja executado corretamente primeiro.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Executar</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Salvar</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Salvando...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Escolha uma ou mais ações rápidas para percorrer</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Sem Ações Rápidas definidas.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Exibir este aplicativo</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Alterar o tema e as cores do aplicativo.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Cor de destaque</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Iniciar minizado na bandeja de notificações quando logar no Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Execução automática</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>O Legion Zone pode não ter sido desabilitado corretamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível desativar o Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Desativar o Legion Zone e seu serviço sem desinstalá-lo.\nA reinicialização é recomendada após alterar esta opção.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Desativar o Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>O Legion Zone pode não ter sido desativado corretamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível desativar o Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Desativar o Lenovo Hotkeys e seu serviço sem desinstalá-lo.\nSe desativado, este aplicativo lidará com atalhos Fn\nA reinicialização é recomendada após alterar esta opção.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Desativar o Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage e/ou ImController podem não ter sido desabilitados corretamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível desativar o Lenovo Vantage e/ou ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Desative o Lenovo Vantage e o ImController sem desinstalá-los.\nUma reinicialização é recomendada após alterar esta opção.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Desativar Lenovo Vantage e ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>O Legion Zone pode não ter sido ativado corretamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível ativar o Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>O Lenovo Hotkeys pode não ter sido ativado corretamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível ativar o Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage e/ou ImController podem não ter sido ativados corretamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível habilitar o Lenovo Vantage e/ou ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Você pode excluir taxas de atualização para tornar o atalho Fn+R mais útil.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Taxas de atualizações excluídas</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Selecionar idioma.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Idioma</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Sempre minimizar para a bandeja. Feche com o botão direito do mouse no ícone da bandeja.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimizar ao Fechar</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Configure como as notificações são exibidas.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Notificações</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Planos de Energia do Windows</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Atribuir Função Rápida ao pressionar a tecla Fn+F9 duas vezes.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Função Secundária da Tecla de Acesso Rápido</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Atribuir Função Rápida ao pressionar a tecla Fn+F9 uma única vez.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Ação da Tecla de Acesso Rápido</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Defina o tema claro, escuro ou siga as configurações do sistema.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Configurações</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar a iluminação do teclado.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação do teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Adicionar Efeito</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Não foi possível aplicar o perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>O perfil de iluminação não pode ser aplicado.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Brilho</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Remover seleção de todas zonas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Efeitos</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>O perfil não pode ser exportado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Não foi possível exportar o perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>O perfil não pode ser importado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Não foi possível importar o perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Nenhum efeito adicionado.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Redefinir para o padrão</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Selecionar todas zonas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Alterar layout do teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Direção</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Cor</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Cores</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Direção</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Efeito</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Este efeito será aplicado a todo teclado e substituirá todos os outros efeitos.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Velocidade</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Adicionar Efeito</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Editar efeito</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar o perfil de iluminação do teclado.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Perfil de iluminação do teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Todas teclas</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zonas</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Nascer do Sol</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Pôr do sol</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Hora</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Permite alternar entre as GPU's integrada e dedicada.\nRequer reinicialização.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Alterar o modo híbrido requer reinicialização. Deseja reiniciar agora?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Reinicialização necessária</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo Hibrido</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desativar touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Travar touchpad</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Desativar touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Travar touchpad</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Tente Novamente</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Ocorreu uma exceção inesperada:\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Sem nome</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Você pode optar por continuar por sua conta e risco, mas lembre-se de que alguns recursos podem não estar disponíveis e/ou não funcionar corretamente.\n\nO registro será ativado automaticamente, se você optar por continuar.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Confira a página do projeto no GitHub para obter mais informações.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Pasta de logs</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Tipo de máquina</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>O Lenovo Legion Toolkit não foi testado com seu dispositivo.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Modelo</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Dispositivo não suportado</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Fornecedor</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Atualização</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Atualização Disponível</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>O que há de novo?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar a predefinição da luz de fundo do teclado.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação do teclado</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Você pode alterar os níveis de brilho com a tecla Fn+Espaço</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação do teclado</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desativar a tecla Windows no teclado embutido.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueio da tecla Windows</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Somente funciona no teclado padrão do Notebook.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueio da tecla Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Sim</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Microfone</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Desligar todos os microfones disponíveis.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Desligar</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desligar todos os microfones disponíveis.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Resolução</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Alterar a resolução da tela integrada.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Resolução</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Alterar a resolução da tela integrada.\n\nAVISO: Esta ação não será executada corretamente se a tela integrada estiver desligada.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Alterar a escala de resolução da tela integrada.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Altera a escala de resolução da tela integrada, afetando o tamanho dos textos, aplicativos e outros itens.\n\nAVISO: Esta ação não será executada corretamente se a tela integrada estiver desligada.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Tela</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação do teclado</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Você pode desligar as luzes de fundo do teclado pressionando as teclas Fn+espaço.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação do teclado</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desligar ou ligar as luzes de fundo.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Nenhum download correspondente encontrado</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Exibir somente atualizações</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Personalizar painel</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Redefinir</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Criar grupo</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Alguns recursos podem não serem exibidos no Painel dependendo do estado e das configurações de seu dispositivo.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Personalizar</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Desligar telas</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Desligar todas as telas disponíveis.\nMover o mouse ou pressionar o teclado reativará as telas.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Desligar</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Desligar telas</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desligar todas as telas disponíveis.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Editar o nome do grupo</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Logo Legion da tampa ligado</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Logo Legion da tampa desligado</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Iluminação das portas traseiras ligadas</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Iluminação das portas traseiras desligadas</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Reinicialização necessária</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Desligamento necessário</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Reinicialização recomendada </value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Salvar e Fechar</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Predefinição do modo personalizado</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ativar predefinição Modo Personalizado.\nEsta configuração somente terá efeito se o Modo Personalizado estiver ativo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Nome da predefinição</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Ativar Predefinição</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Pasta de aplicativos</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Dados</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Brilho único de tela</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Quando ativo, o mesmo nível de brilho da tela será aplicado a todos os planos de energia do Windows.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Atualização {0} disponível!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Limite de Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU sPPT Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>O consumo contínuo de energia que pode ser alcançado pela CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>O pico de consumo de energia que pode ser alcançado pela CPU em um curto período de tempo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>O consumo instantâneo máximo de energia que pode ser alcançado pela CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>O consumo máximo de energia que pode ser alcançado pela CPU quando a CPU e a GPU são totalmente utilizadas.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>O pico de consumo de energia que pode ser alcançado pela CPU com um pequeno atraso.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>A temperatura máxima que pode ser alcançada pela CPU antes que a frequência e a potência sejam reduzidas.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>A potência máxima adicional que pode ser alocada para a GPU com base no consumo de energia da CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>A potência máxima adicional que pode ser alocada para a GPU com base no consumo de energia.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>A temperatura máxima que pode ser alcançada pela GPU antes que a frequência e a potência sejam reduzidas.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Padrão</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Power Limit de Curto Prazo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>A quantidade de tempo que a CPU pode aumentar e usar o limite de energia de curto prazo. Quando Tau expira, o limite de potência de longo prazo é usado.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Alvo de energia total do processador em CA</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>O ponto em que a CPU aciona o ajuste dinâmico de consumo de energia para a GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Criar</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Adicionar passo</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Criar Ação</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Plano de Energia</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Predefinição</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>GPU dedicada</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Estado da Energia</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Bateria</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Modo</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Taxa de descarga</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Atualização disponível!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Selecionar ícone</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Alterar ícone</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Nível de bateria baixo</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Configurar</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Modelo de Baixa Energia S0 detectado</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Esta versão do Windows suporta o modo de espera moderno. Usar planos de energia diferentes do Balanceado pode causar comportamentos inesperados.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Selecione Planos de energia do Windows a serem aplicados quando o Modo de energia for alterado.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Energia</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Opções do plano de energia no painel de controle do Windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Importar perfil de iluminação do teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Importar e aplicar iluminação do teclado no perfil atual.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Caminho</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Após {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Gatilhos múltiplos...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Configurações de Overclock da GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Compensação de Frequência de Core</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Compensação de Frequência de Memória</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Overclock da GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Aumentar performance overclocando a GPU dedicada.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Overclock da GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aumentar performance overclocando a GPU dedicada.\n\nAVISO: Esta ação não será executada corretamente caso a GPU dedicada não esteja disponível.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação das portas traseiras</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Liga ou desliga a luz de fundo das portas na parte de trás do laptop.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação das portas traseiras</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Liga ou desliga a luz de fundo das portas na parte de trás do laptop.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação do logo da tampa</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Liga ou desliga a luz de fundo do logo da tampa do notebook.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Iluminação do logo da tampa</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Liga ou desliga a luz de fundo do lolo da tampa do laptop.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Máximo:{0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Utilização</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Core Clock</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Cooler</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Clock da Memória</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Intervalo de atualização</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Inicialização instantânea</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Ligar o notebook quando um carregador estiver conectado.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Inicialização instantânea</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ligar o notebook quando um carregador for conectado.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Não foi possível alterar o plano de energia</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>{0} o modo de energia não está disponível sem alimentação AC.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensores</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Não foi possível alterar o modo de trabalho da GPU</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Tente alterar o modo novamente em alguns segundos, se você não tiver o resultado esperado. Se a GPU dedicada não responder, reinicie o notebook.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>A GPU dedicada está em uso</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>A GPU dedicada se desconectará automaticamente quando não estiver em uso.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>A GPU dedicada está em uso no momento ou o notebook não está com bateria</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>A GPU dedicada será desconectada automaticamente quando não estiver em uso e o notebook estiver funcionando na bateria.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>As configurações do modo personalizado não serão aplicadas corretamente quando o Lenovo Vantage ou seus serviços estiverem em execução.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>As configurações do modo personalizado não serão aplicadas corretamente quando o Legion Zone ou seus serviços estiverem em execução.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>GPU dedicada conectada</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>GPU dedicada desconectada</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo de trabalho da GPU</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Selecionar o modo de funcionamento da GPU, seguindo o uso e as condições de energia de seu equipamento.\nUma reinicialização pode ser necessária.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo híbrido</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Permite alternar entre as GPU's integrada e dedicada.\nRequer reinicialização.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Duração</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Atualizações</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Impulso dinâmico da CPU para GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Esta é a potência adicional máxima que pode ser alocada à GPU pela CPU com base no uso da CPU.  Quanto maior o valor, melhor será o desempenho dos aplicativos que utilizam a GPU.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Logo de Inicialização</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Personalizar o Logo de Boot visível na inicialização do sistema.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Logo de Inicialização</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>A imagem de inicialização padrão está definida</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>A imagem de inicialização padrão está definida</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Redefinir para o padrão</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Personalizar</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Ações</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Texto da notificação</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Exibir notificação</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Predefinição</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Bloqueio da tecla Fn Inteligente</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>O Fn Lock será temporariamente desativado quando a tecla Shift, Ctrl ou Alt for pressionada.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>O logotipo de inicialização personalizado deve ter exatamente {0} pixels de tamanho.\n Os formatos suportados são: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Carregamento noturno da bateria</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Quando ativado, este dispositivo carregará até 80% quando conectado durante a noite e terminará de carregar até 100% no momento em que você usar este dispositivo pela manhã.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Carregamento noturno da bateria</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Quando ativado, este dispositivo carregará até 80% quando conectado durante a noite e terminará de carregar até 100% no momento em que você usar este dispositivo pela manhã.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Tamanho de imagem inválido.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Formato de imagem inválido.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Não foi possível montar a partição EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Não foi possível definir o privilégio UEFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Espaço insuficiente na partição EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>O logo personalizado não pôde ser definido: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>O logo padrão não pôde ser definido: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Definição da imagem de boot padrão.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Definição da imagem de boot padrão.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Nome da rede (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Copiar o nome da rede atual</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Deixe em branco para qualquer rede WI-FI.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Compartilhe a velocidade dos coolers, a temperatura da bateria, etc. com HWiNFO64.  Pode ser necessário reiniciar o HWiNFO64 após alterar esta opção.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Integrações</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Configurações</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Informações</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Pasta de downloads</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Abrir a pasta de downloads</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Download</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Abrir README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Predefinição</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Atualizar</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Deletar</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Período (minutos)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Redefine o contador para \"Em bateria desde\" na seção de bateria quando o sistema é reinicializado.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Redefinir \"Na bateria desde\" na inicialização</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Desativar o Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ligar o Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Executar silenciosamente</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Aguardar até terminar</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Execute aplicativos de console sem criar uma janela de console.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Aguarde até que o programa ou script termine de ser executado</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Quando mutado, todos os dispositivos de saída de áudio ativos serão silenciados.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Alto-falante</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Minimizar para a Bandeja do Sistema</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Sempre minimizar para a bandeja do sistema (ignorar barra de tarefas)</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Planos de Energia do Windows</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Alterne para o modo Custom pressionando as teclas Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Permitir a troca rápida para o modo Custom pressionando as teclas Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Sincronização do modo de potência</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Altere automaticamente os Planos de Energia do Windows ou o Modo de Energia do Windows ao alterar os Modos de Energia.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Modos de Desempenho do Windows</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Selecione o Plano de Desempenho do Windows que será aplicado quando um Modo de Desempenho mudar.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Ocorreu um erro ao ler as informações do dispositivo.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Macros</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Repetir</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Ignorar atrasos</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Apagar</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Gravar</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Parar a gravação</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Não repetir</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>O Lenovo Legion Toolkit deve estar sendo executado para rodar tarefas automatizadas.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Habilitar</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Você pode gravar uma série de pressionamentos de teclas e invocá-los usando o bloco de números no seu teclado.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ativar ou desativar macros.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Interrompa se outra tecla foi pressionada</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Ocultar</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Ocultar todos</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Dispositivos</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Desmarcar todos</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Selecionar todos</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Apenas Teclado</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Tecladas de teclado e botões do mouse.</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Todas entradas</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Opções de gravação</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>A gravação começará em 3 segundos...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Gravando...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Pressione ESC para parar.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Exibir somente os dispositivos selecionados</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Exibir somente os dispositivos removíveis</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Exibir somente os dispositivos conectados</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>Linha de comandos</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Habilite a interface de linha de comando que permite o controle da linha de comando.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Adicionar a linha de comando ao PATH</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Adicione a linha de comando à variável de ambiente PATH do sistema.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Selecione unidades para sensores de temperatura.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>O Lenovo Hotkeys está sendo executado em segundo plano.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>O Legion Zone está sendo executado em segundo plano.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>O Lenovo Vantage e/ou o ImController estão sendo executados em segundo plano.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Mostre a notificação em todas as telas conectadas ao seu dispositivo.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Notificação em todas as telas</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Verificar</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Verificando atualizações...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Checar atualizações</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Atualizar</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>Limite de taxa de API atingido, por favor, tente novamente mais tarde.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível verificar se há atualizações</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Algo deu errado, tente novamente mais tarde.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Nenhuma atualização encontrada</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Verificar atualizações automaticamente</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Catálogo de atualizações não encontrado</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Tente obter atualizações da outra fonte.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Alguma coisa deu errado</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Verifique se sua conexão com a internet está em ok.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Reproduzir som</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Formatos de música comuns como WAV ou MP3 são suportados.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ação Rápida</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Rodar e salvar ação rápida.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.pt.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Última versão no GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Links</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Site do projeto no GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Bibliotecas de terceiros</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Sobre</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Tradução para português de Portugal feita por dcsilva.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Versão</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Adicionar</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Adicionar novo</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Carregar dispositivos USB, quando o computador está suspenso ou em modo de hibernação.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>USB sempre ligado</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Carregar dispositivos USB, quando o computador está suspenso ou em modo de hibernação.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>USB sempre ligado</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Aplicar</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Aplicar e fechar</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>O Lenovo Legion Toolkit tem que estar a rodar para as ações automáticas funcionarem.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Ativar</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Nenhuma Ação definida. Clica em \"Adicionar nova\" para criar uma nova ação.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Se ativado, estas ações irão ser executadas automaticamente.\nQuando o estado mudar, todas as ações serão avaliadas de cima para baixo.\nApenas as ações que corresponderem ao estado atual irão ser executadas.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Ações</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nome...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Adicionar nova</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Nenhuma Ação Rápida definida. Clica em \"Adicionar nova\" para criar uma nova Ação Rápida.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>As ações rápidas estão disponíveis no menu do clique direito do ícone da área de notificações.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Ações Rápidas</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nome...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Renomear</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Todas as modificações foram revertidas!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Revertido</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Alterações guardadas com êxito!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Guardado</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automação</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Adicionar etapa</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Configurar</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exclusivo</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Não executar mais ações quando esta ação for executada.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Executar agora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Finalizado com erros.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Executar agora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Terminado com sucesso!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Executar agora</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Executando...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} passo</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} passos</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Apps</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Ao nascer do Sol</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Ao pôr do sol</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>A {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Esquema de energia</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Sem nome</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Deteta automaticamente quando certos jogos estão a rodar e altera a performance da CPU e da GPU. A temperatura e o barulho das ventoinhas poderá aumentar.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Ativar AI Engine</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Configurações do modo de equilíbrio</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Escolhe como a bateria é carregada.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo de bateria</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Escolhe como a bateria é carregada.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo de bateria</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Conectado, a carregar...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Conectado, não está a carregar</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Temperatura atual da bateria.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura da bateria</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacidade atual da bateria.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacidade atual</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Número de ciclos de carregamento/descarregamento.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Número de ciclos</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacidade da bateria conforme projetado.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacidade conforme o design</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Taxa à qual a bateria é carregada (+) ou descarregada (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Taxa de descarregamento</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Tempo restante estimado: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>A calcular a estimativa de tempo...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Data de primeira utilização</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Quando a bateria foi usada pela primeira vez.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacidade da bateria quando está completamente carregada.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacidade de carregamento completo</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Carregador de baixa potência ligado</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Quando a bateria foi fabricada.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Data de fabrico</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Tempo desde que o dispositivo foi desconectado do carregador.\nEste tempo pode não estar correto se o dispositivo foi carregado quando estava suspenso ou desligado.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Em bateria desde</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Bateria</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Cancelar</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Fechar</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Azul</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Vermelho</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Seleciona o modo de funcionamento da GPU baseado na utilização do computador e condições de energia.\nPoderá ser necessário reiniciar para mudar de modo.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Mudar para {0} requer que o computador seja reiniciado. Queres reiniciar o computador agora?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>É necessário reiniciar</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo de funcionamento da GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Ações Rápidas</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Continuar</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Copiar tudo</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Gráficos</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Outros</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Energia</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Home</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desativar GPU se estiver ligada desnecessariamente.\n\nATENÇÃO: Esta ação não irá correr corretamente se o ecrã interno estiver desligado ou se o modo Híbrido não estiver ativo.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Desativar GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Adicionar atraso antes de executar o passo seguinte.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Atraso</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Apagar</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Versão da BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Texto copiado para a área de transferência.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>{0} copiado para a área de transferência.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Copiado!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Dispositivo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Suporte da Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Tipo de Dispositivo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Fabricante</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Modelo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Número de série</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Sobre o dispositivo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Data de fim</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Data de início</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garantia</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Ativo</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Desativado</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Inativa</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Fechar apps</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Desativar a GPU discreta se estiver ativada desnecessariamente.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Está um monitor ligado à GPU da nVidia.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Sem processos</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Estado de performance</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Desconhecido</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Processos</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Reiniciar GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU discreta</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Altera o brilho do ecrã interno.\nOs modos de desempenho podem alterar o brilho nalguns dispositivos.\nCertifica-te de que colocas este passo em último, se algo não funcionar corretamente \n\nATENÇÃO: Está ação não irá funcionar corretamente se o ecrã interno estiver desligado.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Brilho do ecrã</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Doar através de</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>O desenvolvimento e manutenção do Lenovo Legion Toolkit demora bastante tempo. Se gostas deste software podes suportar o seu futuro ao doar uma quantia da tua escolha.\n\nClica no logo do PayPal abaixo ou faz scan do QR code para doar através do PayPal.\n\nObrigado desde já!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Doar</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Editar</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Desmarca as taxas de atualização que não quiseres usar quando o atalho Fn+R é usado.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Certifica-te de que o ecrã do portátil está ligado. O Lenovo Legion Toolkit não consegue carregar taxas de atualização de um ecrã que não está ligado.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Não foram encontradas taxas de atualização</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Excluir taxas de atualização</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Sair</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Exportar</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Usa apenas a GPU integrada quando em bateria e ambas quando o carregador está ligado. Quando um carregador não standard está ligado, o sistema muda para modo Híbrido-iGPU Apenas.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Modo Híbrido-Auto</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Mudar de e para este modo requer que o computador seja reiniciado.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Usar apenas a GPU discreta. Este modo proporciona a melhor performance gráfica, mas aumenta o consumo de energia.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Modo dGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Tanto a GPU integrada como a discreta estão ativadas. O sistema irá alterar entre elas consoante as necessidades.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Modo Híbrido</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Este modo apenas será usado quando a GPU discreta não estiver a funcionar.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Usar apenas a GPU integrada. Este modo minimiza o consumo de energia e o barulho.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Modo Híbrido-iGPU apenas</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Sbre modos de funcionamento da GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Sensor do CPU</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Velocidade da ventoinha</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Liga o portátil ao abrir a tampa.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Abrir para ligar</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Liga o portátil ao abrir a tampa.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Abrir para ligar</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Usa funções secundárias do F1-F12 sem segurar a tecla FN.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Usa funções secundárias do F1-F12 sem segurar a tecla FN.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>ATENÇÃO!\nAlguns portáteis podem aceitar valores menores do que indicam, mas tem cuidado. Esta opção pode resultar num comportamento desconhecido, portanto se não tiveres a certeza do que estás a fazer, deixa isto em 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Offset mínimo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>ATENÇÃO!\nAlguns portáteis podem aceitar valores maiores do que indicam, mas tem cuidado. Esta opção pode resultar num comportamento desconhecido, portanto se não tiveres a certeza do que estás a fazer, deixa isto em 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Offset máximo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Não alteres as opções abaixo a menos que saibas mesmo o que estás a fazer.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Avançado</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Limite de energia a longo prazo (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Limite de energia a longo prazo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Limite de energia a curto prazo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limite de temperatura do CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Não foi possível aplicar as definições</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Não foi possível carregar as aplicações.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>A velocidade da ventoinha não é estritamente determinada por um sensor de temperatura. Irá aumentar o diminuir a velocidade de acordo com o sensor com a temperatura mais elevada entre o CPU, a GPU e o Heatsink. Os valores exatos irão aparecer quando passares com o rato em cima de cada passo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Curva da ventoinha</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>ATENÇÃO!\nUso prolongado desta opção vai degradar as ventoinhas e diminuir a dia longevidade.\nA sério! Tem cuidado com esta opção!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Valocidade máxima da ventoinha</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventoinhas</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>TGP configurável</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limite da temperatura da GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Definições do modo customizado</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ativar HDR no ecrã interno.\n\nATENÇÃO: Está ação não irá executar corretamente se o ecrã interno estiver desligado.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Ativar HDR no ecrã interno.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>A utilização de HDR está bloqueada pelas definições do Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importar</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Este dispositivo não é compatível com o Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Não foram encontrados teclados compatíveis</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Luz do teclado</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Não podes controlar a luz do teclado aqui enquanto os serviços do Lenovo Vantage estão ativos.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>O Lenovo Vantage ou os seus serviços estão ativos</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Sobre</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Ações</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Bateria</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Dashboard</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Doar</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Teclado</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Pacotes</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Definições</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Atualização disponível!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Atualização {0} disponível!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Mover para baixo</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Mover para cima</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Não</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Carregador ligado</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Carregador de baixa potência ligado</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Carregador desligado</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Câmara desligada</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Câmara ligada</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock desligado</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock ligado</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock desligado</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock ligado</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Microfone desligado</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Microphone ligado</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock desligado</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock Ligado</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Luz de fundo {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Luminosidade {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Perfil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad desligado</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad ligado</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Luz de fundo {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Carregador</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Câmara</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock e Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Não mostrar notificações</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Luz do teclado</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Microfone</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Posição</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Esquema de energia</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Taxa de atualização</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Tecla Inteligente</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Notificações</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Bloqueio do Touchpad</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Abrir</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Melhora o tempo de resposta do ecrã interno.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Melhora o tempo de resposta do ecrã interno.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} transferidos!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Download concluído</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Algo deu errado</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>O servidor devolveu o erro 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Parece que o ficheiro desapareceu</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Verifica que a tua ligação à internet está a funcionar.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Algo deu errado</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Atualização disponível!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Este pacote tem mais que um ano.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Versão</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Abaixo está uma lista de software que foi marcado como compatível com o teu portátil.\nConfirma sempre que estás a instalar o pacotes corretos.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Confirma que o tipo de máquina e sistema operativo estão definidos corretamente.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Algo deu errado</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Mudar a ordem, filtrar resultados, esconder pacotes ou atualizar a lista irá parar o download. Queres continuar?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Download em progresso</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtro...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Tipo de Dispositivo</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Sistema Operativo</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primário (Recomendo)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>O mesmo que o Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Secundário</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>O mesmo que o Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Categoria</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Data</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Fonte</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Downloads</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Colar</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Selecionar modo de desempenho.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo de energia</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Seleciona o esquema de energia.\nPodes mudar com Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Definições</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Esquema de energia</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>O esquema de energia selecionado pode não funcionar corretamente sem o carregador conectado.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Padrão</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Esquemas de Energia do Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar o brilho da luz de fundo do teclado.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luz do teclado</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Luminosidade</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Predefinição 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Predefinição 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Predefinição 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Predefinição 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zona 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zona 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zona 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zona 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efeito</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Velocidade</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Lê-me</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Atualizar</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Altera a taxa de atualização do ecrã interno.\n\nATENÇÃO: Está ação não irá executar corretamente se o ecrã interno estiver desligado.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Taxa de atualização</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Alterar taxa de atualização do ecrã interno.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Taxa de atualização</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Renomear</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Irei reiniciar mais tarde</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Reiniciar agora</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Reverter</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumentos</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Caminho do executável</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Executar um script ou programa.\nCertifica-te que o script executa corretamente primeiro.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Executar</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Guardar</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>A guardar...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Escolhe uma ou mais ações rápidas para percorrer</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Sem Ações Rápidas definidas.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Mostrar esta aplicação</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Alterar a cor de destaque da app.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Cor de destaque</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Iniciar minimizado na área de notificações quando fazes login no Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Iniciar automaticamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>O Legion Zone pode não ter sido desabilitado corretamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível desativar o Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Desativa o Legion Zone e os seus serviços sem o desinstalar.\nÉ recomendado reiniciar depois de alterar estas opções.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Desativar o Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>O Lenovo Hotkeys pode não ter sido desativado corretamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível desativar o Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Desativa o Lenovo Hotkeys e os seus serviços sem o desinstalar.\nSe desativado, esta app irá executar os atalhos Fn.\nÉ recomendado reiniciar depois de alterar esta opção.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Desativar Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>O Lenovo Vantage e/ou o ImController podem são ter sido desativados corretamente</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível desativar o Lenovo Vantage e/ou o ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Desativa o Lenovo Vantage e o ImController sem os desinstalar.\nÉ recomendado reiniciar após alterar estas opções.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Desativa o Lenovo Vantage e o ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>O Legion Zone pode não ter sido ativado corretamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível ativar o Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>O Lenovo Hotkeys pode não ter sido ativado corretamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível ativar o Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>O Lenovo Vantage e/ou o ImController podem são ter sido ativados corretamente</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Não foi possível ativar o Lenovo Vantage e/ou o ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Podes excluir taxas de atualização para tornar o atalho Fn+R mais útil.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Excluir taxas de atualização</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Selecionar idioma.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Língua</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Minimizar sempre para a área de notificações. Fecha com o clique direito na área de notificações.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimizar ao fechar</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Configurar quais notificações são mostradas.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Notificações</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Esquemas de energia</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Atribuir Ações Rápidas a dois cliques das teclas Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Ação secundária da Tecla Inteligente</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Atribuir Ações Rápidas a um clique das teclas Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Ação da Tecla Inteligente</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Definir modo claro, escuro, ou seguir definições do sistema.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Definições</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar o brilho da luz de fundo do teclado.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Brilho da luz de fundo do teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Adicionar efeito</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Não foi possível aplicar o perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Não foi possível aplicar o perfil de iluminação.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Luminosidade</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Desselecionar todas as zonas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Efeitos</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Não foi possível exportar o perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Não foi possível exportar o perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Não foi possível importar o perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Não foi possível importar o perfil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Nenhum efeito adicionado.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Repor predefinições</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Selecionar todas as zonas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Alterar esquema de teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Direção</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Cor</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Cores</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Direção</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Efeito</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Este efeito será aplicado a todo o teclado e substituirá todos os outros efeitos.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Velocidade</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Adicionar efeito</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Editar efeito</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar o perfil da luminosidade da luz de fundo do teclado.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Perfil da luminosidade da luz de fundo do teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Todas as teclas</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zonas</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Nascer do Sol</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Pôr do Sol</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Hora</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Permite trocar entre a GPU discreta e integrada. Reinício necessário.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Mudar para o modo Híbrido requer que o computador seja reiniciado. Queres reiniciar o computador agora?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>É necessário reiniciar</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Modo Híbrido</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desativar touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueio do Touchpad</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Desativar touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueio do Touchpad</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Tentar novamente</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Sem nome</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Podes continuar ao teu próprio risco, mas tem em atenção que algumas funções podem não estar disponíveis e/ou funcionar corretamente.\nLogs serão guardados automaticamente, se escolheres continuar.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Vê a página do projeto no GitHub para mais informações.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Pasta dos logs</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Tipo de Dispositivo</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>O Lenovo Legion Toolkit não foi testado no teu dispositivo.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Modelo</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Dispositivo não suportado</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Fornecedor</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Atualizar</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Atualização disponível</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Novidades</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ajustar o brilho da luz de fundo do teclado.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luz do teclado</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Podes alterar a luminosidade com Fn+Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Luz do teclado</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desativar tecla Windows no teclado integrado.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueio da tecla Windows</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Só funciona no teclado interno.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Bloqueio da tecla Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Sim</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Microfone</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Tirar o som de todos os microfones disponíveis.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Microfone sem som</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Tirar o som de todos os microfones disponíveis.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Resolução</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Alterar resolução do ecrã interno.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Resolução</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Alterar resolução do ecrã interno.\n\nATENÇÃO: Esta ação não irá executar corretamente se o ecrã interno estiver desligado.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Alterar escala do ecrã interno.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Alterar escala do ecrã interno.\n\nATENÇÃO: Esta ação não irá executar corretamente se o ecrã interno estiver desligado.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Ecrã</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Luz do teclado</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Podes ligar ou desligar a luz de fundo com Fn+Espaço.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luz do teclado</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Liga ou desliga a luz de fundo.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Não foram encontradas transferências correspondentes</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Mostrar só atualizações</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Personalizar Dashboard</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Reiniciar</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Criar grupo</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Algumas funções podem não aparecer na Dashboard dependendo do estado e da configuração do teu dispositivo.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Personalizar</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Desligar ecrãs</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Desligar todos os ecrãs disponíveis.\nMover o rato ou clicar no teclado vai ligar os ecrãs.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Desligar</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ligar</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Desligar todos os ecrãs disponíveis.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Editar o nome do grupo</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Logótipo Legion ligado</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Logótipo Legion desligado</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Luz das portas ligada</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Luz das portas desligada</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>É necessário reiniciar</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>É necessário encerrar</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>É recomendado reiniciar</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Guardar &amp; Sair</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Predefinição do Modo Customizado</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ativar predefinição do Modo Customizado.\nEsta definição apenas tem efeito quando o mesmo está ativo.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Nome da predefinição</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Nome</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Predefinição ativa</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Pastas da Aplicação</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Dados</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Ficheiros temporários</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Luminosidade de Ecrã Única</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Quando ligado, a mesma luminosidade será aplicada a todos os esquemas de energia do Windows sempre que a mudares.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Atualização {0} disponível!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Limite de Energia Máximo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Limite de Energia APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>O consumo de energia contínuo que o CPU pode alcançar.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>O consumo de energia máximo que o CPU pode alcançar num período de tempo pequeno.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>O consumo de energia máximo instantâneo que o CPU pode alcançar.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>O consumo de energia máximo que o CPU pode alcançar quando tanto o CPU como a GPU estão em utilização máxima.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>O consumo de energia máximo que o CPU pode alcançar com um pequeno atraso.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>A temperatura máxima que o CPU pode atingir antes de a sua frequência e potência serem reduzidas.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>A quantidade de energia adicional que pode ser alocada para a GPU baseado no consumo de energia do CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>A quantidade de energia adicional que pode ser alocada para a GPU para além do consumo de energia base.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>A temperatura máxima que a GPU pode atingir antes de a sua frequência e potência serem reduzidas.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Padrão</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Duração do limite de energia a curto prazo</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>A quantidade de tempo que o CPU pode dar boost e usar o Limite de Energia a Curto Prazo. Quando expira, o Limite de Energia a Longo Prazo é utilizado.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Alvo de energia total do processador quando ligado ao carregador</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>O ponto em que o CPU ativa o consumo de energia dinâmico para a GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Criar</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Adicionar etapa</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Criar Ação</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Esquema de energia</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Predefinição</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>GPU discreta</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Estado de Energia</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Bateria</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Modo</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Taxa de descarregamento</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Atualização disponível!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Selecionar ícone</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Mudar Ícone</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Nível de bateria baixo</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Configurar</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Modelo de Baixa Energia S0 detetado</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>O Windows reporta que este dispositivo suporta Modern Standy. Usar Esquemas de Energia para além de Equilibrado pode causar comportamentos inesperados.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Selecionar os Esquemas de Energia do Windows a aplicar quando o Modo de Energia muda.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Energia</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Opções dos Esquemas de Energia no Painel de Controlo do Windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Desligada</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Importar perfil da luz de fundo do teclado</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Importar e aplicar configuração da luz de fundo no perfil atual.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Caminho</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Depois de {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Vários gatilhos...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Definições de Overclock da GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Offset da Frequência do Núcleo</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Offset da Frequência de Memória</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Overclock da GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Aumenta o desempenho ao fazer overclock da GPU discreta.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Overclock da GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aumenta o desempenho ao fazer overclock da GPU discreta.\n\nAtenção: Esta ação não irá correr corretamente se a GPU discreta estiver indisponível.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Luz das portas</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Liga ou desliga a luz das portas de trás do portátil.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luz das portas</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Liga ou desliga a luz das portas de trás do portátil.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Luz do logo da tampa</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Liga ou desliga a luz do logo da tampa do portátil.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luz do logo da tampa</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Liga ou desliga a luz do logo da tampa do portátil.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Máximo: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Utilização</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Frequência do Núcleo</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Ventoinha</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Frequência da Memória</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Intervalo de atualização</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Boot Instantâneo</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Ligar o dispositivo quando um carregador é conectado.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Boot Instantâneo</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ligar o dispositivo quando um carregador é conectado.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Não foi possível alterar o esquema de energia</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>O esquema de energia {0} não está disponível em bateria.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensores</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Não foi possível alterar Modo de Funcionamento da GPU</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Tente alterar o modo novamente em alguns segundos, se não obter o resultado esperado.\nSe dGPU não estiver a responder, reinicie o seu laptop.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU está em uso</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU irá desconectar automaticamente quando não estiver em uso.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>dGPU está em uso ou o laptop não está com bateria</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>dGPU desconectará automaticamente quando não estiver em uso e o laptop estiver com bateria.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Configurações de Modo Personalizado não serão aplicadas de modo correto quando o Lenovo Vantage ou os seus serviços estiverem a ser executados.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Configurações de Modo Personalizado não serão aplicados corretamente quando o Legion Zone ou os seus serviços estiverem a ser executados.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU conectado</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPU desconectado</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo de Funcionamento da GPU</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Selecione o modo de funcionamento da GPU baseado na utilização do computador e condições de energia.\nPoderá ser necessário reiniciar para aplicar mudança.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Modo Híbrido</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Permite alterar entre a GPU discreta e integrada. Reinício necessário.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Duração</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Atualizações</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Dynamic Boost da GPU para CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Esta é a quantidade máxima de energia que pode ser alocada para a CPU da GPU conforme o uso da CPU. Quanto maior o valor, melhor o desempenho de aplicações que utilizam a CPU.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Logo de Inicialização</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Personaliza a imagem da Logo de Inicialização, visível durante o início do sistema.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Logo de Inicialização</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Logo de Inicialização padrão está definido</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Logo de Inicialização customizado está definido</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Reverter para predefinição</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Personalizar</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Ações</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Texto de Notificação</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mostrar notificação</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Predefinição</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Bloqueio inteligente da tecla Fn</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Desligado</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Logo de inicialização personalizado deve possuir exatamente {0} pixeis de largura.\nFormatos suportados são: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Carregamento Noturno da Bateria</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Quando ativado, este dispositivo carregará até 80% quando conectado durante a noite e terminará de carregar até 100% no momento que for utilizado pela manhã.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Carregamento Noturno da Bateria</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Quando ativado, este dispositivo carregará até 80% quando conectado durante a noite e terminará de carregar até 100% no momento que for utilizado pela manhã.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Tamanho de imagem inválido.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Formato de imagem inválido.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Não há espaço suficiente na partição EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Logo personalizada não pôde ser definida: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Logo padrão não pôde ser definida: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Logo de inicialização padrão foi definida.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Logo de inicialização personalizada foi definida.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Compartilhar velocidade da ventoinha, temperatura da bateria, etc. com HWiNFO64. Talvez seja necessário reiniciar HWiNFO64 após alterar esta opção.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Integrações</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Configurações</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Informação</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Pasta de Download</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Abrir pasta de Download</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Download</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Predefinição</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Atualizar</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Apagar</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Período (minutos)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Reinicia o contador para \"Em bateria desde\" na secção de bateria quando o sistema é reiniciado.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Reinicia \"Em bateria desde\" ao iniciar</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Desligar o Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ligar o Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Esperar finalizar</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Executa aplicações de console, sem criar uma janela de console.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Quando silenciado, todos os dispositivos de saída de áudio conectados serão silenciados.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Altifalante</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Minimizar para a bandeja</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Sempre minimizar para a bandeja em vez da barra de tarefas.</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Altere para o Modo Personalizado com Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Permite a alteração rápida para o Modo Customizado com Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Modos de Energia do Windows</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Ocorreu um erro ao ler informações do dispositivo.</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Repetir</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Gravar</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Parar gravação</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Não repita</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Ativar</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ativar e desativar macros.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Interromper se outra tecla for pressionada</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Esconder</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Esconder todos</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Dispositivos</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Desselecionar todos</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Selecionar todos</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Apenas teclado</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Teclado e rato</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Opções de gravação</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Gravação iniciará em 3 segundos...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Gravando...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Pressione ESC para parar.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Mostrar apenas dispositivos selecionados</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Mostrar apenas dispositivos removíveis</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Mostrar apenas dispositivos conectados</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>CLI</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.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  <data name=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Latest release on GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Links</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Project website on GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Third-party libraries</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>About</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Translations provided by community.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Add</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Add new</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Charge USB devices, when the laptop is off, sleeping or hibernated.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Always on USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Charge USB devices, when the laptop is off, sleeping or hibernated.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Always on USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Apply</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Apply &amp; Close</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit must be running for automatic actions to work.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Enable</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>No Actions defined. Click \"Add new\" to create new Action.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>If enabled, these action will run automatically. Whenever state changes, all actions will be evaluated from top to bottom.\nOnly actions that match current state will run.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Actions</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Name...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Add new</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>No Quick Actions defined. Click \"Add new\" to create new Quick Action.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Quick actions are available in the right click menu of the tray icon.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Quick Actions</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Name...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Rename</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>All changes reverted!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Reverted</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Changes were saved successfully!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Saved</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automation</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Add step</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Configure</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exclusive</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Do not execute further actions when this action runs.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Run now</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Completed with errors.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Run now</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Completed successfully!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Run now</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Running...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} step</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} steps</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Apps</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>At sunrise</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>At sunset</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>At {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Power Mode</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Unnamed</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Automatically detects when certain games are running and tweaks CPU and GPU performance. Temperatures and fan noise might increase.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Enable AI Engine</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Balance Mode Settings</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Choose how the battery is charged.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Battery Mode</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Choose how the battery is charged.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Battery Mode</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Connected, charging...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Connected, not charging</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Current temperature of the battery.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Battery temperature</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Current battery capacity.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Current capacity</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Number of charge/discharge cycles.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Cycle count</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Battery capacity as designed.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Design capacity</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Rate at which battery is charged (+), or discharged (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Discharge rate</value>\n  </data>\n  <data name=\"BatteryPage_MinDischargeRate_Message\" xml:space=\"preserve\">\n    <value>Minimum rate at which battery is charged (+), or discharged (-).</value>\n  </data>\n  <data name=\"BatteryPage_MinDischargeRate_Title\" xml:space=\"preserve\">\n    <value>Minimum discharge rate</value>\n  </data>\n  <data name=\"BatteryPage_MaxDischargeRate_Message\" xml:space=\"preserve\">\n    <value>Maximum rate at which battery is charged (+), or discharged (-).</value>\n  </data>\n  <data name=\"BatteryPage_MaxDischargeRate_Title\" xml:space=\"preserve\">\n    <value>Maximum discharge rate</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Estimated time remaining: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Estimating time...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>First use date</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>When was the battery first used.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Battery capacity when fully charged.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Full charge capacity</value>\n  </data>\n  <data name=\"BatteryPage_BatteryHealth_Message\" xml:space=\"preserve\">\n    <value>Battery maximum charge capacity.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryHealth_Title\" xml:space=\"preserve\">\n    <value>Battery health</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Low wattage charger connected</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>When was the battery manufactured.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Manufacture date</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Time since laptop was last connected to AC power.\nThis time might not be accurate, if laptop was charged when sleeping or off.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>On battery since</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Battery</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Cancel</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Close</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Blue</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Green</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Red</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Select GPU operating mode based on your computer's usage and power conditions.\nSwitching modes may require restart.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Changing to {0} requires restart. Do you want to restart now?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Restart required</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>GPU Working Mode</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Quick Actions</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Continue</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Copy all</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Graphics</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Other</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Power</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Home</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Disable discrete GPU if it is active unnecessarily.\n\nWARNING: This action will not run correctly, if internal display is off or Hybrid mode is not active.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Deactivate GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Add delay before running next step.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Delay</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Delete</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS version</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Text copied to clipboard.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" copied to clipboard.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Copied!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Device</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Support</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Machine Type</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Manufacturer</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Serial number</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>About your device</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>End date</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Start date</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Warranty</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Active</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Deactivate</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Inactive</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Kill apps</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Disable discrete GPU, if it is active unnecessarily.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>A monitor is connected to nVidia GPU.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>No processes</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Performance state</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Unknown</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Processes</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Restart GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Discrete GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Change display brightness of the built-in display.\n\nWARNING: This action will not run correctly, if internal display is off.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Display brightness</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Donate with</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Development and maintenance of Lenovo Legion Toolkit takes a lot of time. If you like using this software you can support its future by donating an amount of your choice.\n\nClick the PayPal logo below or scan the QR code to donate with PayPal.\n\nThanks in advance!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Donate</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Edit</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Uncheck refresh rates that you do not want to use when Fn+R shortcut is used.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Make sure that laptop display is on. Lenovo Legion Toolkit can't load refresh rates for a display that is not on.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>No Refresh Rates found</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Exclude Refresh Rates</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Exit</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Export</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Use only integrated GPU when on battery and both integrated and discrete GPU when AC adapter is connected. When a non-standard adapter is connected, system switches to Hybrid-iGPU Only Mode.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Hybrid-Auto Mode</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Switching to and from this mode requires restart.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Use only discrete GPU. This mode provides best graphics performance, but increases power consumption.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>dGPU Mode</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Both integrated and discrete GPU are enabled. System will automatically switch between them based on its needs.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hybrid Mode</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>This mode only takes effect when discrete GPU is not working.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Only use integrated GPU. This mode minimizes power consumption and noise.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Hybrid-iGPU Only Mode</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>About GPU Working Modes</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU Sensor</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Fan Speed</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Turn on the laptop when you open the lid.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Turn on the laptop when you open the lid.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Use secondary functions of F1-F12 keys without holding Fn key.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Use secondary functions of F1-F12 keys without holding Fn key.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>WARNING!\nSome laptops may accept lower values than they indicate, but be careful. This option may result in unpredictable behavior. If you are not sure what are you doing, leave this at 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Minimum offset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>WARNING!\nSome laptops may accept higher values than they indicate, but be careful. This option may result in unpredictable behavior. If you are not sure what are you doing, leave this at 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maximum offset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Do not change options below unless you really know what you are doing.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Advanced</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Long Term Power Limit (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Long Term Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Short Term Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPU Temperature Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Couldn't apply settings</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Couldn't load setting.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Fan speed is not strictly determined by one temperature sensor. It will raise or lower speed per the highest sensor between CPU, GPU and Heatsink temperature. Exact values will appear when you hover mouse over each step.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Fan curve</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>WARNING!\nProlonged usage of this option will degrade fans decreasing their longevity.\nSeriously, be careful with this option!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Maximum fan speed</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Fans</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Configurable TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>GPU Temperature Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Custom Mode Settings</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Enable high dynamic range (HDR) on the built-in display.\n\nWARNING: This action will not run correctly if the internal display is off.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Enable high dynamic range (HDR) on the built-in display.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>HDR usage is blocked by Windows settings.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Import</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>This device is not compatible with Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>No compatible keyboards found</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Keyboard Backlight</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Keyboard backlight cannot be controlled in here when Lenovo Vantage or its services are running.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage or its services are running</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>About</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Actions</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Battery</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Dashboard</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Donate</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Keyboard</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Downloads</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Settings</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Update available!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Update {0} available!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Move down</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Move up</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>No</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>AC adapter connected</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>AC adapter connected (Low wattage)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>AC adapter disconnected</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Camera off</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Camera on</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock off</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock on</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock off</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock on</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Microphone off</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Microphone on</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock off</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock on</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Backlight {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Brightness {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profile {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad off</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad on</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Backlight {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>AC Adapter</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Camera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock and Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Disables notification for Fn keys actions like microphone mute.\nEnable this option if you have conflicts with full screen applications.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Don't show notifications</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Keyboard Backlight</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Microphone</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Position</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Power Mode</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Refresh Rate</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart Key</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Notifications</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Touchpad Lock</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Open</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Improve response time of the built-in display.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Improve response time of the built-in display.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} downloaded!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Download complete</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Something went wrong</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Server returned code 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>The file seems to be gone</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Check if your internet connection is up and running.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Something went wrong</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Update available!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>This package is more than a year old.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Version</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Below is a list of software packages that are marked as compatible with your laptop.\nAlways make sure that you are installing correct packages.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Check if Machine Type and OS are set correctly.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Something went wrong</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Changing sorting, filtering results, hiding packages or refreshing the list will stop the download. Do you want to continue?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Download in progress</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filter...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Machine Type</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Operating System</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primary (Recommended)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Same as Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Secondary</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Same as Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Category</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Date</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Source</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Downloads</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Paste</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Change performance mode.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Power Mode</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Change performance mode.\nPerformance mode can also be changed with Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Settings</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Power Mode</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Selected power mode may not work correctly without AC adapter connected.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Default</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Windows Power Plans</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Adjust keyboard backlight preset.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Keyboard backlight</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Brightness</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Preset 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Preset 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Preset 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Preset 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zone 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zone 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zone 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zone 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Effect</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Speed</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Readme</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Refresh</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Change refresh rate of the built-in display.\n\nWARNING: This action will not run correctly, if internal display is off.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Refresh rate</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Change refresh rate of the built-in display.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Refresh rate</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Rename</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>I will restart later</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Restart now</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Revert</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Arguments</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Executable Path</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Run a script or a program.\nMake sure that your script runs correctly first.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Run</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Save</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Saving...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Choose one or more quick actions to cycle through</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>No Quick Actions defined.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Show this app</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Change the accent color of the app.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Accent color</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Start minimized to tray when you log in to Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Autorun</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone may have not been disabled correctly</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Couldn't disable Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Disable Legion Zone and its service without uninstalling it.\nRestart is recommended after changing this option.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Disable Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys may have not been disabled correctly</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Couldn't disable Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Disable Lenovo Hotkeys and its service without uninstalling it.\nIf disabled, this app will handle Fn shortcuts.\nRestart is recommended after changing this option.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Disable Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage and/or ImController may have not been disabled correctly</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Couldn't disable Lenovo Vantage and/or ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Disable Lenovo Vantage and ImController without uninstalling them.\nRestart is recommended after changing this option.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Disable Lenovo Vantage and ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone may have not been enabled correctly</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Couldn't enable Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys may have not been enabled correctly</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Couldn't enable Lenovo Hotkeys Keys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage and/or ImController may have not been enabled correctly</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Couldn't enable Lenovo Vantage and/or ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>You can exclude refresh rates, to make Fn+R shortcut more useful.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Exclude Refresh Rates</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Select language.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Language</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Always minimize to tray. Close with right click on tray icon.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimize on close</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Configure which notifications are shown.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Notifications</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Windows Power Plans</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Assign Quick Action to Fn+F9 double press.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key Secondary Action</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Assign Quick Action to Fn+F9 single press.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key Action</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Set light theme, dark theme or follow system settings.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Theme</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Settings</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Adjust keyboard backlight brightness.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Keyboard backlight brightness</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Add effect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Couldn't apply profile</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Lighting profile couldn't be applied.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Brightness</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Deselect all zones</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Effects</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profile couldn't be exported</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Couldn't export profile</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profile couldn't be imported</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Couldn't import profile</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>No effects added.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Reset to default</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Select all zones</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Switch keyboard layout</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Direction</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Color</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Colors</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Direction</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Effect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>This effect will be applied to the whole keyboard and will replace all other effects.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Speed</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Add effect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Edit effect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Adjust keyboard backlight profile.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Keyboard backlight profile</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>All keys</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zones</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Sunrise</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Sunset</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Time</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Allow switching between integrated and discrete GPU.\nRequires restart.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Changing Hybrid Mode requires restart. Do you want to restart now?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Restart required</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Hybrid Mode</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Disable touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Touchpad Lock</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Disable touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Touchpad Lock</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Try again</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Unexpected exception occurred:\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Unnamed</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>You may choose to continue at your own risk, but keep in mind that some features may not be available and/or not work properly.\n\nLogging will be enabled automatically, if you choose to continue.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Check out project page on GitHub for more information.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Logs folder</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Machine Type</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit has not been tested with your device.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Unsupported device</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Vendor</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Update</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Update available</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>What's new?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Adjust keyboard backlight brightness.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Keyboard backlight</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>You can change brightness with Fn+Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Keyboard backlight</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Disable Windows key on built-in keyboard.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Windows Key Lock</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Only works on built-in keyboard.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Windows Key Lock</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Yes</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Microphone</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>When off, microphones will be muted.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Microphone</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>When off, microphones will be muted.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Resolution</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Change resolution of the built-in display.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Resolution</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Change resolution of the built-in display.\n\nWARNING: This action will not run correctly, if internal display is off.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Change scale of the built-in display.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Change scaling of the built-in display.\n\nWARNING: This action will not run correctly, if internal display is off.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Display</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Keyboard backlight</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>You can turn backlight on or off with Fn+Space.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Keyboard backlight</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Turn backlight on or off.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>No matching downloads found</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Show updates only</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Customize Dashboard</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Load</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Create group</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Some features may not appear on the Dashboard depending on state and configuration of your laptop.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Customize</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Turn off displays</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Turn off all available displays.\nMoving the mouse or pressing the keyboard will wake displays up.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Turn off</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Turn off displays</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Turn off all available displays.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Edit group name</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Legion logo on</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Legion logo off</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Ports backlight on</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Ports backlight off</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Restart required</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Shutdown required</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Restart recommended</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Save &amp; Close</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Custom Mode preset</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activate Custom Mode preset.\nThis settings takes effect only when Custom Mode is enabled.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Preset name</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Name</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Active preset</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Application Folders</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Data</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temp</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Single Display Brightness</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>When on, same brightness level will be applied to all Windows power plans whenever you change it.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Update {0} available!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Peak Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU sPPT Power Limit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>The continuous power consumption that can be reached by the CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>The peak power consumption that can be reached by the CPU within a short amount time.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>The maximum instantaneous power consumption that can be reached by the CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>The maximum power consumption that can be reached by the CPU when both CPU and GPU are fully utilized.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>The peak power consumption that can be reached by the CPU with a minor delay.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>The maximum temperature that can be reached by the CPU before frequency and power is reduced.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>The additional maximum power that can be allocated to the GPU based on the power consumption of the CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>The additional amount of power that can be allocated to the GPU on top of base power consumption.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>The maximum temperature that can be reached by the GPU before frequency and power is reduced.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Default</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Short Term Power Limit Duration</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>The amount of time the CPU is allowed to boost and use Short Term Power Limit for. When Tau expires, Long Term Power Limit is used.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Total Processor Power Target In AC</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>The point at which the CPU triggers dynamic power consumption adjustment for the GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Create</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Add step</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Create Action</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Power Mode</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Preset</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Discrete GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Power State</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Battery</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Mode</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Discharge rate</value>\n  </data>\n  <data name=\"StatusTrayPopup_MinDischargeRate\" xml:space=\"preserve\">\n    <value>Min discharge rate</value>\n  </data>\n  <data name=\"StatusTrayPopup_MaxDischargeRate\" xml:space=\"preserve\">\n    <value>Max discharge rate</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Update available!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Select icon</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Change icon</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Battery level low</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Configure</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>S0 Lower Power Model detected</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows reports that this laptop supports Modern Standby. Using power plans other than Balanced may cause unexpected behavior.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Select Windows Power Plans to apply when Power Mode changes.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Power</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Power Plan options in Windows Control Panel</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Powered Off</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Import keyboard backlight profile</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Import and apply backlight configuration to the current profile.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Path</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>After {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Multiple triggers...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Overclock GPU Settings</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Core Frequency Offset</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Memory Frequency Offset</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Overclock GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Increase performance by overclocking discrete GPU.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Overclock GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Increase performance by overclocking discrete GPU.\n\nWARNING: This action will not run correctly, if discrete GPU is not available.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Ports backlight</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Turn on or off backlight of the ports on the back of the laptop.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ports backlight</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Turn on or off the backlight of the ports on the back of the laptop.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Panel logo backlight</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Turn on or off the backlight on the lid of the laptop.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Panel logo backlight</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Turn on or off the backlight on the lid of the laptop.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Maximum: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Utilization</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Core Clock</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperature</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Fan</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Memory Clock</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Refresh interval</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Instant Boot</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Turn on the laptop when a charger is connected.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Instant Boot</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Turn on the laptop when a charger is connected.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Cannot change Power Mode</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>{0} power mode is not available without AC power.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensors</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Could not change GPU Working Mode</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Try changing the mode again in a couple of seconds, if you do not see expected result.\nIf dGPU does not respond at all, please restart your laptop.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU is currently in use</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU will disconnect automatically when not in use.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>dGPU is currently in use or laptop is not on battery power</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>dGPU will disconnect automatically when not in use and laptop is on battery power.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Custom Mode settings will not be applied correctly when Lenovo Vantage or its services are running.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Custom Mode settings will not be applied correctly when Legion Zone or its services are running.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU connected</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPU disconnected</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Working Mode</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Select GPU operating mode based on your computer's usage and power conditions.\nSwitching modes may require restart.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hybrid Mode</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Allow switching between integrated and discrete GPU.\nRequires restart.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Duration</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Updates</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>GPU to CPU Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>This is the maximum additional power that can be allocated to the CPU from the GPU based on CPU usage. The higher the value, the better the performance of applications that use the CPU.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Boot Logo</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Customize Boot Logo image, visible during system startup.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Boot Logo</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Default Boot Logo is set</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Custom Boot Logo is set</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Status</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Revert to default</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Customize</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Actions</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Notification Text</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Show notification</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Preset</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Smart Fn Lock</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Fn Lock will be temporarily disabled when Alt, Ctrl or Shift key is depressed.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Off</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Custom boot logo must be exactly {0} pixels large.\nSupported formats are: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Overnight Battery Charging</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>When enabled, this device will charge to 80% when plugged in overnight and finish charging to 100% by the time you use this device in the morning.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Overnight Battery Charging</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>When enabled, this device will charge to 80% when plugged in overnight and finish charging to 100% by the time you use this device in the morning.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Invalid image size.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Invalid image format.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Cannot mount EFI partition.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Cannot set UEFI privilege.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Not enough free space on EFI partition.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Custom logo could not be set: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Default logo could not be set: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Default boot logo set.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Custom boot logo set.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Network name (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Copy current network name</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Leave empty for any Wi-Fi network.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Share fan speed, battery temperature etc. with HWiNFO64. You may need to restart HWiNFO64 after changing this option.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Integrations</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Settings</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Information</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Download folder</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Open Download folder</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Download</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Open README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Preset</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Refresh</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Delete</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Period (minutes)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Resets the counter for \"On battery since\" in the battery section when the system reboots.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Reset \"On battery since\" at startup</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Turn off Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Turn on Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Run silently</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Wait until finished</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Execute console applications, without creating a console window.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Wait until program or script finishes executing</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>When mute, all active audio output devices will be muted.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Speaker</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Minimize to tray</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Always minimize to tray instead of taskbar.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Windows Power Modes</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Switch to Custom Mode with Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Allow quick switching to Custom Mode with Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Power Mode Synchronization</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Automatically change Windows Power Plan or Windows Power Mode when changing Power Modes.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Windows Power Modes</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Select Windows Power Mode to apply when Power Mode changes.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Error occured when reading device information.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Repeat</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Ignore delays</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Clear</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Record</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Stop recording</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Don't repeat</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit must be running for macros to work.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Enable</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>You can record series of key presses and invoke them using the number pad on your keyboard.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Enable or disable macros.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Interrupt if another key was pressed</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Hide</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Hide all</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Devices</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Deselect all</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Select all</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Keyboard only</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Keyboard keys and mouse buttons</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>All inputs</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Recording options</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Recording will start in 3 seconds...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Recording...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Press ESC to stop.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Show selected devices only</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Show removable devices only</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Show connected devices only</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>CLI</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Enable Command Line Interface that allows control from command line.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Add CLI to PATH</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Add CLI to user's PATH environment variable.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperature</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Select units for temperature sensors.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys is running in the background.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone is running in the background.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage and/or ImController is running in the background.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Show notification on all screens connected to your device.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Notification on all screens</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Check</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Checking for updates...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Check for updates</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Update</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>API rate limit reached, please try again later.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Failed to check for updates</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Something went wrong, please try again later.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>No updates found</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Automatically check for updates</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Update catalog not found</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Try getting updates from the other source.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Something went wrong</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Check if your internet connection is up and running.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Play sound</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Common music formats like wav or mp3 are supported.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Quick Action</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Run a saved quick action.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\" xml:space=\"preserve\">\n    <value>Notification always on top</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\" xml:space=\"preserve\">\n    <value>Always put notification at the top.\nIt won't affect other full screen windows, but you will not be able to click on the notifications.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.ro.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Compilare</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Ultima versiune pe GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Linkuri</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Website-ul proiectului pe GitHub</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Despre</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Traducere de Mario Bălănică</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Versiune</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Adăugați</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Adăugați nou</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Încărcați dispozitivele USB, când computerul este oprit sau în modul de repaus sau hibernare.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>USB mereu activ</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Încărcați dispozitivele USB, când computerul este oprit sau în modul de repaus sau hibernare.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>USB mereu activ</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Aplicare</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Aplicare &amp; închidere</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit trebuie să ruleze pentru ca acțiunile automate să funcționeze.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Activare</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Nicio Acțiune definită. Apăsați pe \"Adăugați nou\" pentru a crea o nouă Acțiune.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Dacă setarea este activată, aceste acțiuni vor rula automat. Ori de câte ori starea se schimbă, toate acțiunile vor fi evaluate de sus până jos.\nSe vor rula numai acțiunile care se potrivesc cu starea actuală.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Acțiuni</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nume...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Adăugați nou</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Nicio Acțiune Rapidă definită. Apăsați pe \"Adăugați nou\" pentru a crea o nouă Acțiune Rapidă.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Acțiunile rapide sunt disponibile în meniul clic dreapta al pictogramei din tray.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Acțiuni Rapide</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Nume...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Redenumiți</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Toate modificările au fost anulate!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Anulat</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Modificările au fost salvate cu succes!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Salvat</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatizare</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Adăugați pas</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Configurare</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Exclusiv</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Nu executa alte acțiuni când se execută această acțiune.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Rulați acum</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Completat cu erori.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Rulați acum</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Completat cu succes!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Rulați acum</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Rulează...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} pas</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} pași</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Aplicații</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>La răsărit</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>La apus</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>La {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Mod Putere</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Fără nume</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Detectează automat când rulează anumite jocuri și modifică performanța CPU și GPU. Temperaturile și zgomotul ventilatorului pot crește.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Activați AI Engine</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Setări mod Echilibrat</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Alegeți cum este încărcată bateria.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mod Baterie</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Alegeți cum este încărcată bateria.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Mod baterie</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Conectat, se încarcă...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Conectat, nu se încarcă</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Temperatura actuală a bateriei.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Temperatură baterie</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacitatea actuală a bateriei.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacitate actuală</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Numărul de cicluri încărcare/descărcare.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Număr de cicluri</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacitatea bateriei conform proiectării.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacitate originală</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Rata la care bateria este încărcată (+) sau descărcată (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Rată de descărcare</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Timp rămas estimat: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Se estimează timpul...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Data primei utilizări</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Când a fost folosită prima dată bateria.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Capacitatea bateriei când este complet încărcată.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Capacitate la încărcare completă</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Alimentator de putere redusă conectat</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Când a fost fabricată bateria.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Dată fabricare</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Timp scurs de când laptopul a fost conectat ultima dată la alimentator.\nEste posibil ca acest timp să nu fie precis dacă laptopul a fost încărcat în mod repaus sau oprit.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Pe baterie timp de</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Baterie</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Anulare</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Închidere</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Albastru</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Verde</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Roșu</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Selectați modul de operare GPU în funcție de utilizarea computerului și de condițiile de alimentare.\nSchimbarea modurilor poate necesita repornirea.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Schimbarea la {0} necesită repornirea. Doriți să reporniți acum?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Repornire necesară</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Mod de funcționare GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Acțiuni Rapide</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Continuare</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Copiere integrală</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafică</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Altele</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Putere</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Acasă</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Dezactivați GPU-ul dedicat dacă este activ inutil.\n\nATENȚIE: Această acțiune nu va rula corect dacă afișajul intern este oprit sau modul hibrid nu este activ.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Dezactivați GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Adăugați o întârziere înainte de a rula următorul pas.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Întârziere</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Ștergere</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Versiune BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Text copiat în clipboard.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" copiat în clipboard.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Copiat!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Dispozitiv</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Suport Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Tip sistem</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Producător</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Număr de serie</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Despre dispozitivul dvs.</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Dată încheiere</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Dată început</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garanție</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Activ</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Dezactivare</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Inactiv</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Închidere aplicații</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Dezactivați GPU-ul dedicat dacă este activ inutil.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Un monitor este conectat la GPU-ul nVidia.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Niciun proces</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Stare performanță</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Necunoscut</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Procese</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Repornire GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU dedicat</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schimbați luminozitatea afișajului încorporat.\nModurile de putere modifică luminozitatea pe unele dispozitive. Asigurați-vă că puneți acest pas pe ultimul loc dacă ceva nu funcționează corect.\n\nATENȚIE: Această acțiune nu va rula corect dacă afișajul intern este oprit.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luminozitate afișaj</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Donați cu</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Dezvoltarea și întreținerea Lenovo Legion Toolkit necesită mult timp. Dacă vă place acest software, îi puteți sprijini viitorul donând o sumă la alegere.\n\nFaceți clic pe sigla PayPal de mai jos sau scanați codul QR pentru a dona cu PayPal.\n\nMulțumesc anticipat!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Donație</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Editare</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Debifați ratele de reîmprospătare pe care nu doriți să le utilizați pentru comanda rapidă Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Asigurați-vă că afișajul laptopului este pornit. Lenovo Legion Toolkit nu poate încărca rate de reîmprospătare pentru un afișaj care nu este pornit.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Nicio rată de reîmprospătare găsită</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Excludere rată de reîmprospătare</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Ieșire</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Exportare</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Utilizează doar GPU-ul integrat pe baterie și ambele când alimentatorul este conectat. Când este conectat un alimentator non-standard, sistemul comută la modul Hibrid-iGPU.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Mod Hibrid-Auto</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Trecerea la și de la acest mod necesită repornirea.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Utilizează numai GPU-ul dedicat. Acest mod oferă cea mai bună performanță grafică, dar crește consumul de energie.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Mod dGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Sunt activate atât GPU-ul integrat, cât și cel dedicat. Sistemul va comuta automat între ele în funcție de nevoile sale.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Mod Hibrid</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Acest mod are efect numai atunci când GPU-ul dedicat nu este utilizat.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Utilizează numai GPU-ul integrat. Acest mod minimizează consumul de energie și zgomotul.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Mod Hibrid-iGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Despre modurile de funcționare GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Senzor CPU</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Viteză ventilator</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pornire automată a laptop-ului la deschiderea capacului.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Pornire automată a laptop-ului la deschiderea capacului.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Utilizați funcțiile secundare ale tastelor F1-F12 fără a ține apăsată tasta Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Blocare Fn</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Utilizați funcțiile secundare ale tastelor F1-F12 fără a ține apăsată tasta Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Blocare Fn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Nu modificați opțiunile de mai jos decât dacă știți cu adevărat ce faceți.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Avansat</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Limită de putere pe termen lung (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Limită de putere pe termen lung</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Limită de putere pe termen scurt</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limită temperatură CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Nu s-au putut aplica setările.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Nu s-au putut încărca setările.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Viteza ventilatorului nu este determinată strict de un singur senzor de temperatură. Va crește sau va scădea în funcție de senzorul care raportează cea mai mare temperatură dintre CPU, GPU și radiator. Valorile exacte vor apărea când treceți cu mouse-ul peste fiecare pas.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Curbă de viteză ventilator</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>ATENȚIE!\nUtilizarea prelungită a acestei opțiuni poate degrada ventilatoarele, scăzând longevitatea acestora. \nSerios, aveți grijă cu această opțiune!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Viteză maximă ventilator</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventilatoare</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>TGP configurabil</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Boost dinamic</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Limită temperatură GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Setări mod Personalizat</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activați intervalul dinamic ridicat (HDR) pe afișajul încorporat.\n\nATENȚIE: Această acțiune nu va rula corect dacă afișajul incorporat este oprit.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Activați intervalul dinamic ridicat (HDR) pe afișajul încorporat.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Utilizarea HDR este blocată de setările Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importare</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Acest dispozitiv nu este compatibil cu Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Nicio tastatură compatibilă găsită</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Iluminare tastatură</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Despre</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Acțiuni</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Baterie</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Bord</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Donație</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Tastatură</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Descărcări</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Setări</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Actualizare disponibilă!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Actualizarea {0} disponibilă!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Mutați jos</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Mutați sus</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nu</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Alimentator conectat</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Alimentator de putere redusă conectat</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Alimentator deconectat</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Cameră oprită</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Cameră pornită</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock dezactivat</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock activat</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Blocare Fn dezactivată</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Blocare Fn activată</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Microfon oprit</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Microfon pornit</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock dezactivat</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock activat</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Iluminare {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Luminozitate {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad oprit</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad pornit</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Iluminare {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Alimentator</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Cameră</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock și Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Dezactivează notificarea pentru acțiunile tastelor Fn, cum ar fi dezactivarea sunetului microfonului.\nActivați această opțiune dacă aveți conflicte cu aplicațiile pe ecran complet.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Nu afișa notificări</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Blocare Fn</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Iluminare tastatură</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Microfon</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Poziție</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Mod putere</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Rată de reîmprospătare</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Tastă inteligentă</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Notificări</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Blocare Touchpad</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Deschidere</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Îmbunătățirea timpului de răspuns al afișajului încorporat.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Îmbunătățirea timpului de răspuns al afișajului încorporat.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} descărcat!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Descărcare completă</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Ceva nu a mers bine</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Serverul a returnat codul 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Se pare că fișierul nu mai este disponibil</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Verificați dacă conexiunea dvs. la internet este funcțională.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Ceva nu a mers bine</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Actualizare disponibilă!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Acest pachet este vechi de mai mult de un an.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Versiune</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Mai jos este o listă de pachete software care sunt marcate ca fiind compatibile cu laptopul dvs.\nAsigurați-vă întotdeauna că instalați pachetele corecte.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Verificați dacă Tipul sistemului și Sistemul de operare sunt setate corect.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Ceva nu a mers bine</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Modificarea sortării, filtrarea rezultatelor, ascunderea pachetelor sau reîmprospătarea listei va opri descărcarea. Doriți să continuați?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Descărcare în curs</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtru...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Tip sistem</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Sistem de operare</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Principal (recomandat)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>La fel ca Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Secundar</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>La fel ca Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Categorie</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Dată</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Nume</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Sursă</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Descărcări</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Lipire</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Selectați modul de performanță.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mod putere</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Selectați modul de performanță.\nPuteți schimba modul apăsând Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Setări</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Mod putere</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Este posibil ca modul de putere selectat să nu funcționeze corect fără alimentator.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modificați profilul de iluminare al tastaturii.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Iluminare tastatură</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Luminozitate</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Profil 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Profil 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Profil 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Oprit</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zona 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zona 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zona 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zona 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efect</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Viteză</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Citiți-mă</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Reîmprospătare</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modificați rata de reîmprospătare a afișajului încorporat.\n\nATENȚIE: Această acțiune nu va rula corect dacă afișajul incorporat este oprit.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rată de reîmprospătare</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Modificați rata de reîmprospătare a afișajului încorporat.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Rată de reîmprospătare</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Redenumiți</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Voi reporni mai târziu</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Repornire acum</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Revenire</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumente</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Cale executabil</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Rulați un script sau un program.\nAsigurați-vă mai întâi că scriptul rulează corect.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rulare</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Salvare</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Se salvează...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Alegeți una sau mai multe acțiuni rapide de parcurs</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Nicio Acțiune Rapidă definită.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Arată această aplicație</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Schimbați culoarea de accent a aplicației.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Culoare de accent</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Pornire minimizată în tray atunci când vă conectați la Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Pornire automată</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Este posibil ca Legion Zone să nu fi fost dezactivat corect</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nu s-a putut dezactiva Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Dezactivați Legion Zone și serviciul său fără a-l dezinstala.\nSe recomandă repornirea după modificarea acestei opțiuni.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Dezactivare Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Este posibil ca Lenovo Hotkeys să nu fi fost dezactivat corect</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nu s-a putut dezactiva Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Dezactivați Lenovo Hotkeys și serviciul său fără a-l dezinstala.\nDaca este dezactivat, această aplicație va gestiona în schimb comenzile rapide cu tasta Fn.\nSe recomandă repornirea după modificarea acestei opțiuni.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Dezactivare Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Este posibil ca Legion Zone să nu fi fost activat corect</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nu s-a putut activa Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Este posibil ca Lenovo Hotkeys să nu fi fost activat corect</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nu s-a putut activa Lenovo Hotkeys Keys</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Puteți exclude rate de reîmprospătare pentru a face comanda rapidă Fn+R mai utilă.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Excludere rate de reîmprospătare</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Selectați limba</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Limbă</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Minimizare întotdeauna în tray. Închideți cu clic dreapta pe pictograma din tray.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimizare la închidere</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Configurați care notificări sunt afișate.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Notificări</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Setați o acțiune rapidă la dubla apăsare a tastelor Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Acțiune secundară pentru tasta inteligentă</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Setați o acțiune rapidă la apăsarea tastelor Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Acțiune tastă inteligentă</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Setați tema luminoasă, întunecată sau urmărirea preferinței de sistem.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Temă</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Setări</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Reglați luminozitatea iluminării tastaturii.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Oprit</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luminozitate iluminare tastatură</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Adăugare efect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Nu s-a putut aplica profilul</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Profilul de iluminare nu s-a putut aplica.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Luminozitate</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Deselectați toate zonele</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Efecte</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profilul nu a putut fi exportat</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nu s-a putut exporta profilul</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profilul nu a putut fi importat</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nu s-a putut importa profilul</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Niciun efect adăugat.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Resetare la valorile implicite</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Selectați toate zonele</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Comutați aranjamentul tastaturii</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Direcţie</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Culoare</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Culori</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Direcţie</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Efect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Acest efect va fi aplicat întregii tastaturi și va înlocui toate celelalte efecte.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Viteză</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Adăugare efect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Editare efect</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modificați profilul de iluminare al tastaturii.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Profil de iluminare al tastaturii</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Toate tastele</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zone</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Răsărit</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Apus</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Timp</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Permite comutarea între GPU integrat și cel dedicat.\nNecesită repornirea.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Schimbarea modului hibrid necesită repornirea. Doriți să reporniți acum?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Repornire necesară</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Mod Hibrid</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Dezactivați touchpadul.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Blocare Touchpad</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Dezactivați touchpadul.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Blocare Touchpad</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Încercați din nou</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Fără nume</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Puteți alege să continuați pe propriul risc, dar rețineți că unele funcții pot să nu fie disponibile și/sau să nu funcționeze corect.\n\nSalvarea logurilor va fi activată automat dacă alegeți să continuați.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Consultați pagina proiectului de pe GitHub pentru mai multe informații.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Dosarul logurilor</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Tip sistem</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit nu a fost testat cu dispozitivul dvs.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Dispozitiv neacceptat</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Furnizor</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Actualizare</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Actualizare disponibilă</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Ce-i nou?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Reglați luminozitatea iluminării tastaturii.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Iluminare tastatură</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Puteți schimba luminozitatea apăsând Fn+Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Iluminare tastatură</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Funcționează doar pe tastatura încorporată.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Blocare tastă Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Da</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Microfon</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Când setarea este dezactivată, microfonul va fi oprit.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Microfon</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Când setarea este dezactivată, microfonul va fi oprit.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Rezoluție</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Schimbați rezoluția afișajului încorporat.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rezoluție</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Schimbați rezoluția afișajului încorporat.\n\nATENȚIE: Această acțiune nu va rula corect dacă afișajul încorporat este oprit.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Modificați scalarea afișajului încorporat.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Modificați scalarea afișajului încorporat.\n\nATENȚIE: Această acțiune nu va rula corect dacă afișajul încorporat este oprit.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Afișaj</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Iluminare tastatură</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Puteți porni sau opri iluminarea apăsând Fn+Space.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Iluminare tastatură</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pornire sau oprire iluminare.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Nu s-au găsit descărcări care îndeplinesc criteriul</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Arată doar actualizările</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Personalizare bord</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Resetare</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Creați grupare</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Nume</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Este posibil ca unele funcții să nu apară în tabloul de bord, în funcție de starea și configurația dispozitivului dvs.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Personalizare</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Oprire afișaje</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Opriți toate afișajele disponibile.\nMișcarea mouse-ului sau apăsarea tastaturii va reporni afișajele.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Oprire</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Oprire afișaje</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Opriți toate afișajele disponibile.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Editare nume grup</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Nume</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Pornire logo Legion</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Oprire logo Legion</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Iluminare porturi pornită</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Iluminare porturi oprită</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Repornire necesară</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Oprire necesară</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Repornire recomandată</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Salvare &amp; închidere</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Profil Mod Personalizat</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Activați profil Mod Personalizat.\nAceste setări au efect doar atunci când modul Personalizat este activat.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Nume profil</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Nume</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Profil activ</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Folderele aplicației</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Date</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temporar</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Luminozitate universală afișaj</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Când este activată, același nivel de luminozitate va fi aplicat tuturor planurilor de alimentare Windows ori de câte ori îl schimbați.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Actualizarea {0} disponibilă!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Limită putere de vârf</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Limită putere APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Consumul de energie continuu care poate fi atins de CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Consumul maxim de energie care poate fi atins de CPU într-un timp scurt.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Consumul maxim instantaneu de energie care poate fi atins de CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Consumul maxim de energie care poate fi atins de CPU atunci când CPU și GPU sunt utilizate simultan la maxim.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Consumul maxim de energie care poate fi atins de procesor cu o întârziere minoră.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Temperatura maximă care poate fi atinsă de CPU înainte ca frecvența și puterea să fie reduse.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Puterea maximă suplimentară care poate fi alocată GPU-ului în funcție de consumul de energie al CPU-ului.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Cantitatea suplimentară de putere care poate fi alocată GPU-ului pe lângă consumul de energie de bază.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Temperatura maximă care poate fi atinsă de GPU înainte ca frecvența și puterea să fie reduse.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Implicit</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Durată limită de putere pe termen scurt</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Perioada de timp pentru care procesorului i se permite să facă boost și să utilizeze limita de putere pe termen scurt. Când Tau expiră, se utilizează Limita de putere pe termen lung.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Puterea totală a procesorului pe alimentator</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Punctul în care CPU declanșează ajustarea dinamică a consumului de energie pentru GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Creare</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Adăugați pas</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Creați o acțiune</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Mod putere</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Profil</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>GPU dedicat</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Stare putere</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Baterie</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Mod</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Rată de descărcare</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Actualizare disponibilă!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Selectare iconiță</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Schimbare iconiță</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Nivelul bateriei este scăzut</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Configurare</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Putere</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Oprit</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.ru.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Сборка</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Последняя версия на GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Ссылки</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Страница проекта на GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Сторонние библиотеки</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>О программе</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Переводы предоставлены сообществом.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Версия</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Добавить</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Добавить новое действие</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Зарядка устройств через USB, когда компьютер выключен или находится в режиме сна или гибернации.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Постоянное питание от USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Зарядка устройств через USB, когда компьютер выключен или находится в режиме сна или гибернации.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Постоянное питание от USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Применить</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Применить и закрыть</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit должен быть запущен для выполнения автоматических действий.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Активировать</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Действия не заданы. Нажмите \"Добавить новое действие\" для создания.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>При активации эти действия будут выполняться автоматически. При изменении состояния все действия будут обрабатываться сверху вниз.\nБудут выполняться только те действия, которые соответствуют текущему состоянию.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Действия</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Название...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Добавить новое</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Быстрые действия не заданы. Нажмите \"Добавить новое действие\" для создания.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Быстрые действия доступны в меню иконки в области уведомлений, вызываемом правой кнопкой мыши.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Быстрые действия</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Название...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Переименовать</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Все изменения отменены!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Сброшено</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Изменения успешно сохранены!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Сохранено</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Автоматизация</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Добавить шаг</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Настроить</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Исключение</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Не выполнять последующие операции при запуске этого действия.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Выполнить сейчас</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Завершено с ошибками.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Выполнение</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Успешно завершено!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Выполнение</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Выполнение...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} шаг</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} шагов</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Приложения</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>На рассвете</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>На закате</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>В {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Режим питания</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Без имени</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Автоматически определяет, когда запущены определенные игры, и настраивает производительность CPU и GPU. Возможно повышение температуры и шума вентиляторов.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Включить AI Engine</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Настройки режима баланса</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Выбрать способ зарядки батареи.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Режим батареи</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Выбрать способ зарядки батареи.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Режим батареи</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Подключен, заряжается...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Подключен, не заряжается</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Текущая температура батареи.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Температура батареи</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Текущая емкость батареи.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Текущая емкость</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Число циклов перезарядки.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Число циклов</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Первоначальная емкость аккумулятора.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Расчетная емкость</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Частота заряда (+) или разряда (-) батареи.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Мгновенная мощность при разрядке</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Оставшееся время: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Оценка времени...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Дата первого применения</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Когда впервые был использован аккумулятор.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Емкость батареи при полной зарядке.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Полная емкость заряда</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Подключено зарядное устройство низкой мощности</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Когда был изготовлен аккумулятор.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Дата изготовления</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Время с момента последнего подключения ноутбука к сети.\nЭто время может быть неточным, если ноутбук заряжался во время сна или был выключен.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>На аккумуляторе</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Батарея</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Отмена</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Закрыть</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Синий</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Зеленый</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Красный</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Выберите режим работы видеокарты в зависимости от особенностей использования компьютера и условий питания.\nДля переключения режимов может потребоваться перезагрузка.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Изменение на {0} требует перезагрузки. Вы хотите выполнить перезапуск сейчас?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Требуется перезапуск</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Режим работы видеокарты</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Быстрые действия</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Далее</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Скопировать все</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Графика</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Прочее</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Питание</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Домашняя страница</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Отключить дискретный графический процессор, если он активен без необходимости.\n\nВНИМАНИЕ: Это действие не будет выполняться корректно, если внутренний дисплей выключен или не активен Гибридный режим.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Деактивировать GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Добавить задержку перед выполнением следующего шага.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Задержка</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Удалить</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Версия BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Текст скопирован в буфер обмена.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" скопировано в буфер обмена.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Скопировано!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Устройство</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Поддержка Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Тип модели устройства</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Производитель</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Модель</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Серийный номер</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>О вашем устройстве</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Дата окончания гарантии</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Начало действия гарантии</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Гарантия</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Активен</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Деактивировать</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Неактивен</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Завершить процессы</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Отключить дискретный графический процессор, если он активен без необходимости.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Монитор подключен к графическому процессору nVidia.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Нет процессов</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Состояние производительности</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Неизвестно</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Процессы</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Перезапустить граф. процессор</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Дискретный граф. процессор</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изменить яркость встроенного дисплея.\nНа некоторых устройствах режимы питания изменяют яркость. Убедитесь, что этот шаг последний, если что-то работает не так, как нужно.\n\nВНИМАНИЕ: Это действие не будет выполняться корректно, если внутренний дисплей выключен.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Яркость дисплея</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Сделать пожертвование через</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>На разработку и обслуживание Lenovo Legion Toolkit уходит много времени. Если вам нравится пользоваться этим программным обеспечением, вы можете поддержать его будущее, пожертвовав любую сумму денег.\n\nНажмите на логотип PayPal ниже или отсканируйте QR-код, чтобы сделать пожертвование через PayPal.\n\nЗаранее спасибо!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Сделать пожертвование</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Редактировать</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Снимите галочки с частот обновления, которые вы не хотите учитывать при использовании сочетания клавиш Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Убедитесь, что дисплей ноутбука включен. Lenovo Legion Toolkit не может загрузить частоты обновления для не включенного дисплея.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Частота обновления не обнаружена</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Исключить частоту обновления</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Выход</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Экспортировать</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Использовать только интегрированную видеокарту при работе от батареи и одновременно встроенную и дискретную GPU при подключении блока питания. При подключении нестандартного блока питания система переключится в Гибридный режим с использованием интегрированной GPU (Hybrid-iGPU Only Mode).</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Режим Hybrid-Auto</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Переключение этого режима требует перезапуска.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Использовать исключительно дискретный графический процессор. Этот режим дает наилучшую производительность, но увеличивает энергопотребление.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Режим дискретной видеокарты</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Будут включены как встроенная, так и дискретная видеокарта. Система будет автоматически переключаться между ними в зависимости от потребностей.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Гибридный режим</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Этот режим действует только в том случае, если дискретная видеокарта не работает.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Использовать только встроенную видеокарту. Этот режим минимизирует энергопотребление и шум.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Гибридный режим с использованием интегрированной GPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>О режимах работы графического процессора</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>ЦП</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Датчик ЦП</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Скорость вентилятора</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>Граф. процессор</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>Граф. процессор #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>об/мин</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Включить ноутбук при открытии крышки.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Включить ноутбук при открытии крышки.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Использовать вторичные функции клавиш F1-F12, не удерживая клавишу Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Использовать вторичные функции клавиш F1-F12, не удерживая клавишу Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>ВНИМАНИЕ!\nНекоторые ноутбуки могут допускать более низкие пределы мощности, чем они указывают, однако будьте осторожны. Этот параметр может привести к непредсказуемому поведению, поэтому, если вы не уверены в своих действиях, оставьте значение 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Минимальное смещение</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>ВНИМАНИЕ!\nНекоторые ноутбуки могут допускать более высокие пределы мощности, чем они указывают, однако будьте осторожны. Этот параметр может привести к непредсказуемому поведению, поэтому, если вы не уверены в своих действиях, оставьте значение 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Максимальное смещение</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Не изменяйте указанные ниже параметры, если вы не знаете, что делаете.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Доп. настройки</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Долгосрочное ограничение мощности (перекрестная загрузка)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Долгосрочное ограничение мощности</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Краткосрочное ограничение мощности</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Ограничение температуры ЦП</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>ЦП</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Не удалось применить настройки</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Не удалось загрузить настройки.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Скорость вращения вентилятора не определяется одним температурным датчиком. Он будет увеличивать или уменьшать скорость в зависимости от наибольшего датчика между температурой CPU, GPU и кулера. Точные значения будут отображаться при наведении курсора мыши на каждый шаг.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Кривая вентилятора</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>ВНИМАНИЕ!\nДлительное использование этой опции приводит к деградации вентиляторов, снижая их срок службы.\nСерьезно, будьте осторожны с этой опцией!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Максимальная скорость вентилятора</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Вентиляторы</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Настраиваемый TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Ограничение температуры GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>Граф. процессор</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Настройки пользовательского режима</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Включить High Dynamic Range (HDR) на встроенном дисплее.\n\nВНИМАНИЕ: Это действие не будет выполняться корректно, если внутренний дисплей выключен.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Включить High Dynamic Range (HDR) на встроенном дисплее.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Использование HDR блокируется настройками Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Импортировать</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Это устройство не совместимо с Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Не найдено подходящих клавиатур</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Подсветка клавиатуры</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Подсветкой клавиатуры нельзя управлять здесь, когда работает Lenovo Vantage или его службы.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage или его службы запущены</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>О ПО</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Действия</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Батарея</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Обзор</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Донат</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Клавиатура</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Загрузки</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Настройки</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Доступно обновление!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Доступно обновление {0}!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Переместить вниз</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Переместить вверх</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Нет</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Блок питания подключен</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Блок питания подключен (низкая мощность)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Блок питания отключен</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Камера отключена</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Камера включена</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock отключен</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock включен</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock отключен</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock включен</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Микрофон отключен</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Микрофон включен</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock отключен</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock включен</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Подсветка {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Яркость {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Профиль {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Сенсорная панель отключена</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Сенсорная панель включена</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Подсветка {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Блок питания</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Камера</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock и Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Отключает уведомления о действиях клавиш Fn, таких как приглушение микрофона\nВключите эту опцию, если у вас возникают конфликты с полноэкранными приложениями.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Не показывать уведомления</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Подсветка клавиатуры</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Микрофон</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Положение</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Режим питания</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Частота обновления</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Умная клавиша</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Уведомления</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Блокировка сенсорной панели</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>ОК</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Открыть</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Улучшить время отклика встроенного дисплея.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Улучшить время отклика встроенного дисплея.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} загружен!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Скачивание завершено</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Что-то пошло не так</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Сервер вернул код ошибки 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Похоже, файл отсутствует</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Убедитесь, что ваше интернет-соединение работает.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Что-то пошло не так</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Доступно обновление!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Этому пакету ПО более года.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Версия</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Ниже приведен список пакетов программного обеспечения, отмеченные как совместимые с вашим ноутбуком.\nУбедитесь, что вы устанавливаете правильные пакеты.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Проверьте, верно ли заданы Тип модели устройства и ОС.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Что-то пошло не так</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>При изменении сортировки, фильтрации результатов, скрытии пакетов или обновлении списка процесс загрузки будет остановлен. Вы хотите продолжить?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Идет скачивание</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Фильтр...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Тип модели устройства</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Операционная система</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Основной (Рекомендуется)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Аналогичен Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Вторичный</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Аналогичен Поддержке ПК Lenovo</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Категория</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Дата</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Название</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Источник</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Загрузки</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Вставить</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Выбрать режим работы.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Режим питания</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Выберите режим работы.\nПереключение режима осуществляется с помощью Fn+Q. </value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Настройки</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Режим питания</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Выбранный режим питания может работать некорректно, если блок питания не подключен.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>По умолчанию</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Схемы питания Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Настройть пресет подсветки клавиатуры.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка клавиатуры</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Яркость</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Пресет 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Пресет 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Пресет 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Пресет 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Зона 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Зона 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Зона 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Зона 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Эффект</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Скорость</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Информация</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Обновить</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изменить частоту обновления встроенного дисплея.\n\nВНИМАНИЕ: Это действие не будет выполняться корректно, если внутренний дисплей выключен.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Частота обновления</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Изменить частоту обновления встроенного дисплея.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Частота обновления</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Переименовать</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Перезапущу позже</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Перезапустить сейчас</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Отменить</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Аргументы</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Путь к исполняемому файлу</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Запустите сценарий или программу.\nУбедитесь, что ваш сценарий выполняется правильно.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Выполнить</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Сохранить</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Сохранение...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Выбрать одно или несколько быстрых действий для последовательного выполнения</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Умная клавиша не определена.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Отобразить это приложение</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Изменить контрастный цвет приложения.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Контрастный цвет</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Запускать свернутым при входе в Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Автозагрузка</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Возможно, Legion Zone был неверно отключен</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Не удалось отключить Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Отключить Legion Zone и его службы, не удаляя его.\nПосле изменения этого параметра рекомендуется перезагрузка.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Отключить Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Возможно, Lenovo Hotkeys был неверно отключен</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Не удалось отключить Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Отключить Lenovo Hotkeys и его сервис без удаления.\nЕсли опция отключена, Lenovo Hotkeys будет обслуживать горячие клавиши Fn.\nПосле изменения этого параметра рекомендуется перезагрузка.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Отключить Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Возможно, Lenovo Vantage и/или ImController были отключены неправильно</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Не удалось отключить Lenovo Vantage и/или ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Отключить Lenovo Vantage и ImController, не удаляя их.\nПосле изменения этого параметра рекомендуется перезагрузка.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Отключить Lenovo Vantage и ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Возможно, Legion Zone был неверно запущен</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Не удалось включить Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Возможно, Lenovo Hotkeys был неверно запущен</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Не удалось включить клавиши горячих клавиш Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Возможно, Lenovo Vantage и/или ImController были включены неправильно</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Не удалось включить Lenovo Vantage и/или ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Вы можете исключить частоту обновления, чтобы сделать сочетание клавиш Fn+R более полезным.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Исключить частоту обновления</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Выбрать язык.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Язык</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Всегда сворачивать в область уведомлений. Закрывать правой кнопкой мыши на значке в области уведомлений.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Сворачивать при закрытии</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Настройте, какие уведомления будут отображаться</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Уведомления</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Схемы питания</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Назначить быстрое действие на двойное нажатие Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Вторичное действие умной клавиши</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Назначить быстрое действие на одиночное нажатие Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Действие умной клавиши</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Установить светлую тему, темную тему или следовать системным настройкам.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Тема оформления</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Настройки</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Настроить яркость подсветки клавиатуры.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Яркость подсветки клавиатуры</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Добавить эффект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Не удалось применить профиль</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Не удалось применить профиль подсветки.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Яркость</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Снять выделение всех зон</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Эффекты</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Не удалось экспортировать профиль</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Не удалось экспортировать профиль</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Не удалось импортировать профиль</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Не удалось импортировать профиль</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Эффекты не добавлены.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Сбросить по умолчанию</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Выделить все зоны</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Переключить раскладку клавиатуры</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Направление</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Цвет</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Цвета</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Направление</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Эффект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Этот эффект будет применен ко всей клавиатуре и заменит все иные эффекты.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Скорость</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Добавить эффект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Изменить эффект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Настроить профиль подсветки клавиатуры.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Профиль подсветки клавиатуры</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Все клавиши</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} зон(ы)</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Рассвет</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Закат</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Время</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Позволяет переключаться между встроенным и дискретным графическим процессором.\nТребуется перезагрузка.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Изменение Гибридного режима требует перезагрузки. Вы хотите выполнить перезапуск сейчас?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Требуется перезапуск</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Гибридный режим</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Выключить сенсорную панель.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Блокировка сенсорной панели</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Выключить сенсорную панель.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Блокировка сенсорной панели</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Повторите попытку</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Непредвиденная ошибка:\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Без имени</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Вы можете продолжить на свой страх и риск, но имейте в виду, что некоторые функции могут быть недоступны и/или работать некорректно.\n\nВедение журнала будет включено автоматически, если вы решите продолжить.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Для получения дополнительной информации посетите страницу проекта на GitHub.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Папка журнала</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Тип модели устройства</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit не был проверен на вашем устройстве.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Модель</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Устройство не поддерживается</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Поставщик</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Обновить</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Доступно обновление</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>﻿Что нового?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Настройть яркость подсветки клавиатуры.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка клавиатуры</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Вы можете изменить яркость с помощью Fn+Пробел</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка клавиатуры</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Отключить клавишу Windows на встроенной клавиатуре.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Блокировка клавиши Windows</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Действует только на встроенной клавиатуре.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Блокировка клавиши Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Да</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Микрофон</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Отключить все доступные микрофоны.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Отключить микрофон</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Отключить все доступные микрофоны.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Разрешение</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Изменить разрешение встроенного дисплея.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Разрешение</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изменить разрешение встроенного дисплея.\n\nВНИМАНИЕ: Это действие не будет выполняться корректно, если внутренний дисплей выключен.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Изменить масштаб встроенного дисплея.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Изменить масштаб встроенного дисплея.\n\nВНИМАНИЕ: Это действие не будет выполняться корректно, если внутренний дисплей выключен.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Дисплей</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка клавиатуры</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Включить или выключить подсветку можно с помощью Fn+Пробел.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка клавиатуры</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Включить или выключить подсветку.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Подходящих пакетов не найдено</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Показывать только обновления</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Настроить домашнюю страницу</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Сброс</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Создать группу</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Имя</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Некоторые функции могут не отображаться на вкладке \"Обзор\" в зависимости от состояния и конфигурации вашего устройства.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Настроить</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Выключить дисплеи</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Выключить все доступные дисплеи.\nДвижение мыши или нажатие клавиш клавиатуры приведет к пробуждению дисплеев.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Отключить</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Выключить дисплеи</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Выключить все доступные дисплеи.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Изменить имя группы</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Имя</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Логотип Legion включен</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Логотип Legion выключен</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Подсветка портов включена</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Подсветка портов отключена</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Требуется перезапуск</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Требуется выключение системы</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Рекомендуется перезапуск системы</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Сохранить и закрыть</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Пресет пользовательского режима</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Активирует пресет пользовательского режима.\nЭта настройка действует только при включенном пользовательском режиме.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Название пресета</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Имя</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Активный пресет</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Папки приложения</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Данные</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Временные файлы</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Яркость одного дисплея</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>При включении этого параметра один и тот же уровень яркости будет применяться ко всем схемам питания Windows при каждом его изменении.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Доступно обновление {0}!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Предельная пиковая мощность</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Предельная мощность APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Непрерывное потребление энергии, которое может быть достигнуто процессором.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Пиковая потребляемая мощность, которая может быть достигнута процессором за короткое время.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Максимальное значение потребляемой мощности, которое может быть достигнуто процессором.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Максимальное энергопотребление, которое может быть достигнуто CPU при полной загрузке CPU и GPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Пиковая потребляемая мощность, которая может быть достигнута процессором при незначительной задержке.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Максимальная температура, которая может быть достигнута процессором до снижения частоты и мощности.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Дополнительная максимальная мощность, которая может быть выделена GPU на основе энергопотребления CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Дополнительное количество энергии, которое может быть выделено на GPU сверх базового энергопотребления.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Максимальная температура, которая может быть достигнута графическим процессором до снижения частоты и мощности.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>По умолчанию</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Срок краткосрочного ограничения мощности</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Количество времени, в течение которого процессору разрешено увеличивать и использовать краткосрочное ограничение мощности. Когда Тау истекает, используется долгосрочное ограничение мощности.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Общая целевая мощность процессора в сети переменного тока</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Точка при которой процессор запускает динамическую регулировку энергопотребления для GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Создать</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Добавить шаг</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Создать действие</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Режим питания</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Пресет</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Дискретный граф. процессор</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Статус питания</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Батарея</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Режим</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Мгновенная мощность при разрядке</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Доступно обновление!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Выбрать значок</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Изменить значок</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Низкий уровень заряда батареи</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Настроить</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Обнаружена модель низкой мощности S0</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows сообщает, что это устройство поддерживает Modern Standby. Применение планов питания, отличных от сбалансированного, может привести к неожиданному поведению.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Выберите схемы питания Windows, которые будут применяться при изменении режима питания.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Питание</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Параметры схемы питания в панели управления Windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Отключен</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Импортировать профиль подсветки клавиатуры</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Импортировать и применить конфигурации подсветки к текущему профилю.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Путь</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Через {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Несколько триггеров...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Настройки разгона GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Смещение частоты ядра</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Смещение частоты памяти</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Разгон GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Повысить производительность путем разгона дискретного GPU.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Разгон GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Повысить производительность путем разгона дискретного GPU.\n\nВНИМАНИЕ: Это действие не будет выполняться корректно, если дискретный GPU недоступен.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка портов</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Включить или выключить подсветку портов на задней стороне ноутбука.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка портов</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Включить или выключить подсветку портов на задней стороне ноутбука.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка логотипа на панели</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Включить или выключить подсветку на крышке ноутбука.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Подсветка логотипа на панели</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Включить или выключить подсветку на крышке ноутбука.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>ГГц</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>МГц</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Максимум: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>ЦП</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Использование</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Тактовая частота ядра</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Температура</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Вентилятор</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>Граф. процессор</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Частота памяти</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Интервал обновления</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Мгновенное включение</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Включать ноутбук при подключении зарядного устройства.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Мгновенное включение</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Включать ноутбук при подключении зарядного устройства.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Не удалось изменить режим питания</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>Режим питания {0} недоступна без питания от сети.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Датчики</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Не удалось изменить режим работы GPU</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Если ожидаемый результат не наступил, попробуйте изменить режим еще раз через пару секунд.\nЕсли dGPU не отвечает вовсе, перезагрузите ноутбук.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>Дискретная видеокарта уже используется</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>Дискретная видеокарта будет автоматически отключаться, если она не используется.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>Дискретная видеокарта в настоящее время используется или ноутбук не работает от аккумулятора</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>Дискретная видеокарта будет автоматически отключаться, если ноутбук не используется и работает от акумулятора.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Параметры пользовательского режима будут неправильно применены, если запущен Lenovo Vantage или его службы.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Параметры пользовательского режима будут неправильно применены, если запущен Legion Zone или его службы.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>Графический процессор подключен</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>Графический процессор отключен</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Режим работы видеокарты</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Выберите режим работы видеокарты в зависимости от особенностей использования компьютера и условий питания.\nДля переключения режимов может потребоваться перезагрузка.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Гибридный режим</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Позволяет переключаться между встроенным и дискретным графическим процессором.\nТребуется перезагрузка.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Длительность</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Обновления</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Dynamic Boost GPU на CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Это максимальная дополнительная мощность, которая может быть выделена на GPU из CPU в зависимости от загрузки процессора. Чем выше это значение, тем выше производительность приложений, использующих GPU.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Логотип загрузки</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Настройка логотипа загрузки, отображаемого при запуске системы.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Логотип загрузки</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Установлен логотип загрузки по умолчанию</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Установлен пользовательский логотип загрузки</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Состояние</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Вернуть параметры по умолчанию</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Настроить</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Действия</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Текст уведомления</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Показывать уведомление</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Пресет</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Умная клавиша Fn Lock</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Функция Fn Lock будет временно отключена при нажатии клавиш Alt, Ctrl или Shift.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Откл.</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Пользовательский логотип загрузки должен быть размером ровно {0} пикселей.\nПоддерживаемые форматы: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Ночная зарядка аккумулятора</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Когда эта функция включена, устройство будет заряжаться на 80% при подключении к сети на ночь и завершать зарядку до 100% к тому времени, как вы воспользуетесь устройством утром.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ночная зарядка аккумулятора</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Когда эта функция включена, устройство будет заряжаться на 80% при подключении к сети на ночь и завершать зарядку до 100% к тому времени, как вы воспользуетесь устройством утром.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Недопустимый размер изображения.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Недопустимый формат изображения.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Не удается смонтировать раздел EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Не удается задать права доступа UEFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Недостаточно свободного места на разделе EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Не удается установить логотип загрузки: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Не удается установить логотип загрузки по умолчанию: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Установлен логотип загрузки по умолчанию.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Пользовательский логотип загрузки установлен.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Название сети (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Скопировать название текущей сети</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Оставить пустым для любой сети.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Делиться данными о скорости вращения вентилятора, температуре аккумулятора и т.д. с HWiNFO64. После изменения этого параметра может потребоваться перезапуск HWiNFO64.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Интеграции</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Настройки</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Информация</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Папка загрузки</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Открыть папку загрузки</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Загрузить</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Открыть README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Пресет</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Обновить</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Удалить</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Период (минуты)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Сбрасывать счет времени значения \"На аккумуляторе\" при перезагрузке системы.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Сбросить счетчик \"На аккумуляторе\" при запуске</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Выключить Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Включить Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Тихий запуск</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Ждать до завершения</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Выполнять консольные задачи, не открывая окно командной строки.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Ждать, пока задача или скрипт не завершат работу</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>При выключении звука все активные выходные аудиоустройства будут заглушены.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Динамик</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Свернуть в трей</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Всегда сворачивать в трей вместо панели задач.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Режимы питания Windows</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Переход в пользовательский режим с помощью Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Позволяет быстро переключаться в пользовательский режим с помощью Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Синхронизация режима питания</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Автоматическое изменение схемы питания Windows или режима питания Windows при смене режимов питания LLT.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Режимы питания Windows</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Укажите режим питания Windows, который будет применяться при изменении режима питания LLT.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Произошла ошибка при чтении информации об устройстве.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Макросы</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Макросы</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Повторение</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Игнорировать задержки</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Очистить</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Запись</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Остановить запись</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Не повторять</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit должен быть запущен для работы макросов.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Активировать</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Вы можете записать последовательность нажатий клавиш и вызвать их с помощью цифровой клавиатуры.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Макрос</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Включить или выключить работу макросов.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Прервать, если была нажата другая клавиша</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Скрыть</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Скрыть все</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Устройства</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Снять все</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Выбрать все</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Только клавиатура</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Клавиши клавиатуры и кнопки мыши</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Любое движение</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Параметры записи</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Запись начнется через 3 секунды...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Идет запись...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Нажмите Esc для остановки.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Показывать только выбранные устройства</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Показывать только съемные устройства</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Показывать только соединенные устройства</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>Интерфейс командной строки (CLI)</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Включить интерфейс для управления из командной строки.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Добавить CLI в PATH</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Добавить CLI в переменную окружения PATH пользователя.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Температура</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Выбрать единицы измерения сенсоров температуры.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys запущен в фоновом режиме.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone запущен в фоновом режиме.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage и/или ImController запущены в фоновом режиме.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Показывать уведомления на всех мониторах, подключенных к устройству.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Уведомления на всех мониторах</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Проверить</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Проверка наличия обновлений...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Проверить наличие обновлений</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Обновить</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>Достигнут лимит запросов API, попробуйте позже.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Не удалось проверить обновления</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Что-то пошло не так, повторите попытку позже.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Обновления не найдены</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Автоматически проверять наличие обновлений</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Каталога обновлений не найдено</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Попробуйте загрузить обновления из другого источника.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Что-то пошло не так</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Проверьте, что ваше интернет-соединение исправно.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Воспроизвести звук</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Поддерживаются такие форматы музыки, как wav или mp3.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Быстрое действие</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Выполнить сохраненное быстрое действие.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.sk.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Zostava</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Najnovšie vydanie na GitHube</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Linky</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Stránka projektu na GitHube</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>O projekte</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Preklad komunity.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Verzia</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Pridať</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Pridať novú</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Nabíjanie USB zariadení, aj keď je počítač vypnutý, v spánku alebo hibernuje.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Vždy napájané USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Nabíjanie USB zariadení, aj keď je počítač vypnutý, v spánku alebo hibernuje.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Vždy napájané USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Použiť</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Použiť a zavrieť</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit musí byť zapnutý na to, aby automatické akcie fungovali.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Zapnúť</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Žiadne akcie. Kliknite \"Pridať novú\" pre vytvorenie nových akcií.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Pri povolení budú tieto akcie spustené automaticky. Kedykoľvek sa zmení stav, všetky akcie budú vyhodnotené z hora dole. Len akcie zhodne s momentálnym stavom budú spustené.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Akcie</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Meno...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Pridať novú</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Žiadne rýchle akcie. Kliknite \"Pridať novú\" pre vytvorenie nových rýchlych akcií.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Rýchle akcie sú dostupné po pravom kliknutí na ikonu v panely úloh.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Rýchle akcie</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Meno...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Premenovať</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Všetky zmeny vrátené!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Vrátené</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Zmeny boli úspešne uložené!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Uložené</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Automatizácia</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Pridať krok</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Konfigurovať</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Výhradne</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Nevykonávať ďalšie akcie, pokiaľ beží táto akcia.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Spustiť teraz</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Dokončené s chybami.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Spustiť teraz</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Dokončené úspešne!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Spustiť teraz</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Beží...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} krok</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} krokov</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Aplikácie</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Na úsvite</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Na súmraku</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>O {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Nepomenovaná</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Automaticky zistí, keď sú spustené určité hry a vyladí výkon CPU a GPU. Hluk ventilátora a teploty sa môžu zvýšiť.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Zapnúť AI Engine</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Nastavenia vyváženého výkonu</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Vyberte ako sa bude nabíjať batéria.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Režim batérie</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Vyberte ako sa bude nabíjať batéria.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Režim batérie</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Pripojené, nabíja...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Pripojené, nenabíja</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Aktuálna teplota batérie.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Teplota batérie</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Aktuálna kapacita batérie.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Aktuálna kapacita</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Počet nabíjacích/vybíjacích cyklov.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Počet cyklov</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Konštrukčná kapacita batérie.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Konštrukčná kapacita</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Rýchlosť akou sa batéria nabíja (+) alebo vybíja (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Rýchlosť vybíjania</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Odhadovaný zostávajúci čas: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Odhaduje sa čas...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Dátum prvého použitia</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Kedy bola batéria prvýkrát použitá.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Kapacita batéria, keď je plne nabitá.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Kapacita pri plnom nabití</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Pripojená nízkovýkonová nabíjačka</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Kedy bola batéria vyrobená.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Dátum výroby</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Čas od posledného pripojenia notebooku k sieťovému napájaniu.\nTento čas nemusí byť presný, ak bol notebooku nabíjaný vypnutý alebo v spánku.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Na batérii od</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Batéria</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Zrušiť</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Zavrieť</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Modrá</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Zelená</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Červená</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Výber prevádzkového režimu GPU na základe použitia počítača a podmienok napájania.\nPrepínanie režimov môže vyžadovať reštart.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Zmena na {0} vyžaduje reštart. Chcete reštartovať teraz?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Vyžaduje sa reštart</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Prevádzkový režim GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Rýchle akcie</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Pokračovať</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Kopírovať všetko</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafika</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Ostatné</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Napájanie</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Domov</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Deaktivovať dedikovanú GPU, ak je aktívna zbytočne.\n\nVAROVANIE: Táto akcia neprebehne správne, ak je displej notebooku vypnutý, alebo nie je aktívny hybridní režim.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Deaktivovať GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pridať oneskorenie pred spustením ďalšieho kroku.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Oneskorenie</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Vymazať</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Verzia BIOSu</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Text skopírovaný do schránky.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" skopírované do schránky.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Skopírované!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Zariadenie</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Podpora</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Typ zariadenia</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Výrobca</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Sériové číslo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>O zariadení</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Dátum konca</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Dátum začiatku</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Záruka</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Aktívna</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Deaktivovať</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Neaktívna</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Ukončiť aplikácie</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Deaktivovať dedikovanú GPU, ak je aktívna zbytočne.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>K nVidia GPU je pripojený monitor.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Žiadne procesy</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Stav výkonu</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Neznámy</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Procesy</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Reštartovať GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Dedikovaná GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zmeniť jas zabudovaného displeja.\nNa niektorých zariadenia menia napájacie režimy jas. Uistite sa, že tento krok umiestnite ako posledný, ak niečo nefunguje správne.\n\nVAROVANIE: Táto akcia neprebehne správne, ak je zabudovaný displej vypnutý.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Jas displeja</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Prispieť pomocou</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Vývoj a údržba Lenovo Legion Toolkit zaberá veľa času. Ak sa vám páči tento softvér, môžete podporiť jeho budúcnosť prispením čiastky podľa vášho uváženia.\n\nPre prispenie cez PayPal kliknite na logo PayPal dole alebo naskenujte QR kód.\n\nVopred vďaka!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Prispieť</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Upraviť</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Zaškrtnite obnovovacie frekvencie, ktoré chcete použiť pri klávesovej skratke Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Uistite sa, že zabudovaný displej je zapnutý. Lenovo Legion Toolkit nemôže načítať obnovovacie frekvencie vypnutého displeja.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Žiadne nájdené obnovovacie frekvencie</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Vylúčiť obnovovacie frekvencie</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Ukončiť</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Export</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Pri napájaní z batérie použiť len integrovanú GPU a obe, integrovanú aj dedikovanú GPU, pri napájaní sieťovým adaptérom. Pri napájaní z neštandardného adaptéru systém prepne na režim len Hybrid-iGPU.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Režim Hybrid-Auto</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Prepínanie do a z tohto režimu vyžaduje reštart.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Použiť len dedikovanú GPU. Tento režim poskytuje najlepší grafický výkon, avšak so zvýšenou spotrebou.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Režim dGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Obe integrovaná aj dedikovaná GPU sú povolené. Systém bude automaticky prepínať medzi nimi podľa potreby.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hybridný režim</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Tento režim nadobudne účinnosť, len keď dedikovaná GPU nepracuje.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Použiť len integrovanú GPU. Tento režim minimalizuje spotrebu energie a hluk.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Režim len Hybrid-iGPU</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>O prevádzkových režimoch GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU senzor</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Rýchlosť ventilátora</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>Ot/min</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zapnúť notebook pri otvorení krytu.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Zapnúť otvorením</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Zapnúť notebook pri otvorení krytu.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Zapnúť otvorením</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Použivať sekundárnu funkciu kláves F1-F12 bez držania klávesy Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Zámok Fn klávesy</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Použivať sekundárnu funkciu kláves F1-F12 bez držania klávesy Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Zámok Fn klávesy</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>VAROVANIE!\nNiektoré notebooky môžu prijímať nižšie hodnoty ako uvádzajú, ale buďte opatrný. Táto možnosť môže mať za následok nepredvídateľné správanie, takže ak si nie ste istý čo robíte nechajte to na 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Minimálny posun</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>VAROVANIE!\nNiektoré notebooky môžu prijímať vyššie hodnoty ako uvádzajú, ale buďte opatrný. Táto možnosť môže mať za následok nepredvídateľné správanie, takže ak si nie ste istý čo robíte nechajte to na 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maximálny posun</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Nemeňte dole uvedené možnosti pokiaľ naozaj neviete čo robíte.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Pokročilé</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Dlhodobý limit výkonu (krížové zaťaženie)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Dlhodobý limit výkonu</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Krátkodobý limit výkonu</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Teplotný limit CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Nemožno uplatniť nastavenia</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Nemožno načítať nastavenia.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Otáčky ventilátora nie sú striktne určené jedným teplotným senzorom. Rýchlosť sa zvýši, alebo zníži podľa najvyššej teploty medzi CPU, GPU a chladičom. Presné hodnoty sa zobrazia, keď prejdete myšou nad jednotlivý krok.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Krivka ventilátora</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>VAROVANIE!\nDlhodobé používanie tejto možnosti kazí ventilátory a ich životnosť.\nVážne, buďte opatrný s touto možnosťou!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Maximálna rýchlosť ventilátorov</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Ventilátory</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Nastaviteľné TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamický Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Teplotný limit GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Nastavenia vlastného režimu</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Povoliť vysoký dynamický rozsah (HDR) zabudovaného displeja.\n\nVAROVANIE: Táto akcia neprebehne správne, ak je zabudovaný displej vypnutý.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Povoliť vysoký dynamický rozsah (HDR) zabudovaného displeja.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Použitie HDR je blokované nastaveniami Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importovať</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Toto zariadenie nie je kompatibilné s Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Nenašli sa kompatibilné klávesnice</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie klávesnice</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>O projekte</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Akcie</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Batéria</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Prehľad</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Prispieť</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Klávesnica</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Balíčky</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Nastavenia</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Aktualizácia je k dispozícii!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Aktualizácia {0} dostupná!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Presunúť nadol</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Posunúť nahor</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Nie</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Sieťový adaptér pripojený</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Sieťový adaptér pripojený (nízkovýkonový)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Sieťový adaptér odpojený</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Kamera vypnutá</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Kamera zapnutá</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock vypnutý</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock zapnutý</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn zámok vypnutý</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn zámok zapnutý</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Mikrofón vypnutý</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Mikrofón zapnutý</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num zámok vypnutý</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num zámok zapnutý</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Podsvietenie {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Jas {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad vypnutý</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad zapnutý</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Podsvietenie {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Sieťový adaptér</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Kamera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock a Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Nezobrazovať upozornenia</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Zámok Fn klávesy</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Podsvietenie klávesnice</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Mikrofón</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Pozícia</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Obnovovacia frekvencia</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Chytré tlačidlo</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Upozornenia</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Zámok touchpadu</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Otvor</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zlepši čas odozvy zabudovaného displeja.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Zlepši čas odozvy zabudovaného displeja.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} stiahnutý!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Sťahovanie dokončené</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Niečo sa pokazilo</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Server vrátil kód 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Zdá sa, že súbor je preč</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Skontrolujte vaše internetové pripojenie.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Niečo sa pokazilo</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Aktualizácia k dispozícii!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Tento balík je starší než rok.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Verzia</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Dole je zoznam softvérových balíkov označených ako kompatibilných s vaším notebookom.\nVždy sa uistite, že inštalujete správne balíky.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Skontrolujte či Typ zariadenia a OS sú nastavené správne.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Niečo sa pokazilo</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Zmena triedenia, filtrovanie výsledkov, skrytie balíkov alebo obnovenie zoznamu zastaví sťahovanie. Chcete pokračovať?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Prebieha sťahovanie</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filter...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Typ zariadenia</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Operačný systém</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Primárny (Odporúčaný)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Rovnaký ako Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Sekundárny</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Rovnaký ako Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Kategória</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Dátum</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Názov</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Zdroj</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Balíčky</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Vložiť</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zvoliť výkonný režim.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Výber výkonostného režimu.\nMôžete prepnúť pomocou Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Nastavenia</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Vybraný režim výkonu nemusí pracovať správne bez pripojeného sieťového adaptéra.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Upraviť predvoľbu podsvietenia klávesnice.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie klávesnice</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Jas</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Predvoľba 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Predvoľba 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Predvoľba 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Vypnutá</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zóna 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zóna 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zóna 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zóna 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efekt</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Rýchlosť</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Informácie</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Obnoviť</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zmena obnovovacej frekvencie zabudovaného displeja.\n\nVAROVANIE: Táto akcia neprebehne správne, ak je zabudovaný displej vypnutý.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Obnovovacia frekvencia</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Zmena obnovovacej frekvencie zabudovaného displeja.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Obnovovacia frekvencia</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Premenovať</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Reštartujem neskôr</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Reštartovať teraz</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Vrátiť</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumenty</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Cesta k spustiteľnému súboru</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Spustiť skript alebo program.\nPrv sa uistite, že váš skript beží správne.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Spustť</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Uložiť</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Ukladanie...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Vybrať jednu alebo viac rýchlych akcii na cyklovanie</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Žiadne rýchle akcie určené.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Zobraziť túto aplikáciu</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Zmeniť farebný odtieň aplikácie.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Odtieň</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Spustiť minimalizované na panely úloh pri prihlásení.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Automatické spustenie</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone možno nebol zakázaný správne</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nepodarilo sa zakázať Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Zakázať Legion Zone a jeho služby bez odinštalovania.\nPo zmene tejto možnosti sa odporúča reštart.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Zakázať Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys možno nebol zakázaný správne</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nepodarilo sa zakázať Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Zakázať Lenovo Hotkeys a jeho služby bez odinštalovania.\nPo zakázaní bude táto aplikácia mať na starosti Fn skratky.\nPo zmene tejto možnosti sa odporúča reštart.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Zakázať Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Zakázať Lenovo Vantage a ImController bez ich odinštalovania.\nPo zmene tejto možnosti sa odporúča reštart.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Zakázať Lenovo Vantage a ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone možno nebol povolený správne</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Nepodarilo sa povoliť Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys možno nebol povolený správne</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Nepodarilo sa povoliť Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Môžete vylúčiť obnovovacie frekvencie, aby bola skratka Fn+R užitočnejšia.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Vylúčiť obnovovacie frekvencie</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Vybrať jazyk.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Jazyk</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Vždy minimalizovať na panel úloh. Zatvoriť pravým kliknutím na ikonu v panely úloh.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Minimalizovať pri zatvorení</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Nastaviť, ktoré upozornenia sa zobrazujú.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Upozornenia</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Plány napájania</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Priradiť Rýchlu akciu na dve stlačenia Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Sekundárna akcia chytrej klávesy</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Priradiť Rýchlu akciu na jedno stlačenia Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Akcia chytrej klávesy</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Nastaviť svetlý motív, tmavý motív alebo riadiť sa systémom.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Motív</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Nastavenia</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Upraviť podsvietenie tlačidiel klávesnice.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Vypnutý</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie tlačidiel klávesnice</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Pridať efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Nepodarilo sa použiť profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Nepodarilo sa použiť profil podsvietenia.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Jas</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Odznačiť všetky zóny</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Efekty</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Nepodarilo sa exportovať profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nemožno exportovať profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Nepodarilo sa importovať profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Nemožno importovať profil</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Žiadne pridané efekty.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Obnoviť východzie</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Vybrať všetky zóny</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Prepnúť rozloženie klávesnice</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Smer</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Farba</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Farby</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Smer</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Tento efekt bude použitý na celú klávesnicu a nahradí všetky ostatné efekty.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Rýchlosť</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Pridať efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Upraviť efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Upraviť profile podsvietenia klávesnice.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Profil podsvietenia klávesnice</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Všetky klávesy</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zón</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Úsvit</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Súmrak</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Čas</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Umožniť prepínanie medzi integrovanou a dedikovanou GPU.\nVyžaduje reštart.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Zmena Hybridného režimu vyžaduje reštart. Chcete reštartovať teraz?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Vyžaduje sa reštart</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Hybridný režim</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zakázať touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Zámok touchpadu</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Zakázať touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Zámok touchpadu</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Skúsiť znova</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Nepomenované</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Môžete si vybrať pokračovať na vlastné riziko, ale myslite na to, že niektoré funkcie nebudú dostupné a/alebo nebudú pracovať správne.\n\nAk sa rozhodnete pokračovať záznam chýb bude automaticky zapnutý.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Pre viac informácií pozrite stránku projektu na GitHube.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Priečinok so záznamami</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Typ zariadenia</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit nebol testovaný na vašom zariadenia.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Nepodporované zariadenie</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Dodávateľ</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Aktualizovať</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Aktualizácia dostupná</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Čo je nové?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Upraviť podsvietenie tlačidiel klávesnice.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie klávesnice</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Jas môžete zmeniť s Fn+Medzerník</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie klávesnice</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Funguje len na zabudovanej klávesnici.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Zámok Windows klávesy</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Áno</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofón</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Ak vypnuté, mikrofón bude stíšený.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofón</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ak vypnuté, mikrofón bude stíšený.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Rozlíšenie</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Zmena rozlíšenia zabudovaného displeja.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Rozlíšenie</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zmena rozlíšenia zabudovaného displeja.\n\nVAROVANIE: Táto akcia neprebehne správne, ak je zabudovaný displej vypnutý.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Zmena škálovania zabudovaného displeja.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zmena škálovania zabudovaného displeja.\n\nVAROVANIE: Táto akcia neprebehne správne, ak je zabudovaný displej vypnutý.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Displej</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie klávesnice</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Jas môžete zapnúť alebo vypnúť s Fn+Medzerník.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie klávesnice</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zapnúť alebo vypnúť podsvietenie.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Nenájdené zodpovedajúce balíky</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Zobraziť len aktualizácie</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Prispôsobiť prehľad</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Reset</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Vytvoriť skupinu</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Názov</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Niektoré funkcie sa nemusia zobraziť na prehľade v závislosti od stavu a nastavenia vášho zariadenia.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Prispôsobiť</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Vypnúť displeje</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Vypnúť všetky dostupné displeje.\nPohyb kurzoru alebo stlačenie klávesnice zobudí displeje.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Vypnúť</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Vypnúť displeje</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Vypnúť všetky dostupné displeje.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Upraviť názov skupiny</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Názov</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Zapnúť podsvietenie Legion loga</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Vypnúť podsvietenie Legion loga</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Zapnúť podsvietenie portov</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Vypnúť podsvietenie portov</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Vyžaduje sa reštart</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Vyžaduje sa reštart</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Odporúča sa reštart</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Uložiť a Zatvoriť</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Predvoľba vlastného režimu</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Aktivovať predvoľbu vlastného režimu.\nNastavenia sú účinne len keď je povolený vlastný režim.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Názov predvoľby</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Názov</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Aktívna predvoľba</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Priečinky aplikácie</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Údaje</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Teplota</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Jas jediného displeja</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Keď zapnuté, rovnaká úroveň jasu bude použitá na všetky plány napájania Windows hocikedy ich zmeníte.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Aktualizácia {0} dostupná!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Limit výkonu v špičke</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Limit výkonu APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Stála spotreba CPU, ktorá môže byť dosiahnutá.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Spotreba CPU v špičke, ktorá môže byť dosiahnutá na krátku dobu.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Maximálna okamžitá spotreba CPU, ktorá môže byť dosiahnutá.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Maximálna spotreba, ktorá môže byť dosiahnutá CPU, keď sú obe CPU aj GPU plne vyťažené.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Spotreba CPU v špičke, ktorá môže byť dosiahnutá s malým oneskorením.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Maximálna teplota CPU, ktorá môže byť dosiahnutá pred znížením frekvencie a príkonu.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Maximálny dodatočný výkon, ktorý môže byť pridelený GPU na základe spotreby CPU.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Dodatočný výkon, ktorý môže byť pridelený GPU nad základnú spotrebu.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Maximálna teplota GPU, ktorá môže byť dosiahnutá pred znížením frekvencie a príkonu.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Predvolený</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Dĺžka krátkodobého obmedzenia výkonu</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Množstvo času kedy má CPU povolené posilniť výkon a použiť krátkodobý výkonový limit. Keď Tau vyprší použije sa dlhodobý výkonový limit.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Celkový cieľ výkonu procesora na sieťovom napájaní</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Bod pri ktorom CPU spustí dynamickú úpravu spotreby výkonu pre GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Vytvoriť</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Pridať krok</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Vytvoriť akciu</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Režim výkonu</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Predvoľba</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Dedikovaná GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Stav napájania</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Batéria</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Režim</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Rýchlosť vybíjania</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Aktualizácia k dispozícii!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Vybrať ikonu</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Zmeniť ikonu</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Úroveň batérie nízka</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Konfigurovať</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Zistený S0 s nižšou spotrebou</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows hlási, že toto zariadenie podporuje moderný pohotovostný režim. Použitie iného ako vyváženého plánu napájania môže spôsobiť neočakávané chovanie.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Vyberte, ktoré plány napájania Windows použiť pri zmene režimu výkonu.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Napájanie</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Možnosti plánu napájanie v ovládacom paneli Windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Vypnutá</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Importovať profily podsvietenia klávesnice</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Importovať a použiť nastavenie podsvietenia pre aktuálny profil.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Cesta</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Po {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Viaceré spúšťače...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Nastavenia pretaktovania GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Posun frekvencie jadra</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Posun frekvencie pamäte</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Pretaktovať GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Zvýšiť výkon pretaktovaním dedikovanej GPU.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Pretaktovať GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zvýšiť výkon pretaktovaním dedikovanej GPU.\n\nVAROVANIE: Táto akcia neprebehne správne, ak je dedikovaná GPU nedostupná.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie portov</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Vypne alebo zapne podsvietenie portov na zadnej strane notebooku.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie portov</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Vypne alebo zapne podsvietenie portov na zadnej strane notebooku.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie panelu loga</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Vypnúť alebo zapnúť podsvietenie na kryte notebooku.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Podsvietenie panelu loga</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Vypnúť alebo zapnúť podsvietenie na kryte notebooku.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Aktualizácie</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.tr.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Yapı</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>GitHub üstündeki son sürüm</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Bağlantılar</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Projenin Github sayfası</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>3. parti kütüphaneler</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Hakkında</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Undervolt tarafından Türkçe çeviri</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Sürüm</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Ekle</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Yeni ekle</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Bilgisayar kapalı, uyku veya hazırda bekletme modundayken USB cihazlarını şarj edin.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Her zaman açık USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bilgisayar kapalı, uyku veya hazırda bekletme modundayken USB cihazlarını şarj edin.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Her zaman açık USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Uygula</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Uygula &amp; Kapat</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Otomatik eylemlerin çalışması için Lenovo Legion Toolkit çalışıyor olmalıdır.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Etkinleştir</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Eylem bulunamadı. Yeni Eylem oluşturmak için \"Yeni ekle\"yi tıklayın.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Etkinleştirilirse, bu eylem otomatik olarak çalışacaktır. Durum değiştiğinde, tüm eylemler yukarıdan aşağıya doğru çalıştırılacaktır.\nYalnızca mevcut durumla eşleşen eylemler çalışacaktır.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Eylemler</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>İsim...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Yeni ekle</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Hızlı Eylem bulunamadı. Yeni Hızlı Eylem oluşturmak için \"Yeni ekle\"yi tıklayın.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Hızlı eylemler, görev çubuğundaki sağ tıklama menüsünde mevcuttur.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Hızlı Eylemler</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>İsim...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Adlandır</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Tüm değişiklikler geri alındı!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Geri Alındı</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Değişiklikler başarıyla kaydedildi!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Kaydedildi</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Otomasyon</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Adım ekle</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Yapılandır</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Ayrıcalıklı</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Bu eylem çalıştığında başka eylemler yürütmeyin.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Şimdi çalıştır</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Hatalarla Tamamlandı.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Şimdi çalıştır</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Başarıyla tamamlandı!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Şimdi çalıştır</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Çalışıyor...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} adım</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} adım</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Uygulamalar</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Gün doğumunda</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Gün batımında</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>{0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Güç Kipi</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>İsimsiz</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Belirli oyunların ne zaman çalıştığını otomatik olarak algılar ve CPU ve GPU performansını düzenler. Sıcaklıklar ve fan sesi artabilir.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>AI Motorunu etkinleştir</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Denge Kipi Ayarları</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Pilin nasıl şarj edileceğini seçin.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Pil Modu</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Pilin nasıl şarj edileceğini seçin.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Pil Modu</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Bağlı, şarj oluyor...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Bağlı, şarj etmiyor</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Pilin mevcut sıcaklığı.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Pil sıcaklığı</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Mevcut pil kapasitesi.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Mevcut kapasite</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Şarj/deşarj döngüsü sayısı.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Döngü sayısı</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Tasarlanmış pil kapasitesi.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Tasarım kapasitesi</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Pilin şarj (+) veya deşarj (-) oranı.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Deşarj oranı</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Tahmini kalan süre: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Süre tahmin ediliyor...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>İlk kullanım tarihi</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Pilin ilk kullanım tarihi.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Tam şarj olduğundaki pil kapasitesi.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Tam şarj kapasitesi</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Düşük voltajlı şarj cihazı bağlı</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Pilin üretim tarihi.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Üretim tarihi</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Dizüstü bilgisayarın AC gücüne en son bağlandığından beri geçen süre.\nDizüstü bilgisayar uyurken veya kapalıyken şarj edildiyse bu süre doğru olmayabilir.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Pil ile geçen süre</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Pil</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>İptal</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Kapat</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Mavi</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Yeşil</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Kırmızı</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Bilgisayarınızın kullanımına ve güç koşullarına göre GPU çalışma modunu seçin.\nBu modları değiştirmek yeniden başlatma gerektirebilir.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>{0} olarak değiştirmek, yeniden başlatmayı gerektirir. Şimdi yeniden başlatmak istiyor musunuz?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Yeniden başlatma gerekli</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>GPU Çalışma Modu</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Hızlı Eylemler</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Devam et</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Tümünü kopyala</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafikler</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Diğer</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Güç</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Ana Sayfa</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Gereksiz yere aktifse harici GPU'yu devre dışı bırakın.\n\nUYARI: Dahili ekran kapalıysa veya Hibrit modu etkin değilse bu eylem düzgün çalışmayacaktır.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Pasifleştir</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Sonraki adımı çalıştırmadan önce gecikme ekleyin.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Gecikme</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Sil</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS sürümü</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Metin panoya kopyalandı.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" panoya kopyalandı.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Kopyalandı!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Cihaz</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Destek</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Cihaz Tipi</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Üretici</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Seri numarası</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Cihaz hakkında</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Bitiş tarihi</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Başlangıç tarihi</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Garanti</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Aktif</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Pasifleştir</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Aktif değil</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Uygulamaları kapat</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Gereksiz yere etkinse harici GPU'yu devre dışı bırakın.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>nVidia GPU'ya bir monitör bağlı.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>İşlem yok</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Performans durumu</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Bilinmeyen</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>İşlemler</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>GPU'yu yeniden başlat</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Harici GPU</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranın parlaklığını değiştirin.\nGüç modları, bazı cihazlarda parlaklığı değiştirir. Bir şey doğru çalışmıyorsa, bu adımı en son koyduğunuzdan emin olun.\n\nUYARI: Dahili ekran kapalıysa bu eylem düzgün çalışmayacaktır.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ekran parlaklığı</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Bağış yapın</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit'in geliştirilmesi ve bakımı çok zaman alıyor. Bu yazılımı kullanmayı seviyorsanız, istediğiniz miktarda bağış yaparak geleceğine destek olabilirsiniz.\n\nPayPal ile bağış yapmak için aşağıdaki PayPal logosuna tıklayın veya QR kodunu tarayın.\n\nŞimdiden teşekkürler!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Bağış</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Düzenle</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Fn+R kısayolu kullanıldığında kullanmak istemediğiniz yenileme hızlarını kaldırın.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Dizüstü bilgisayar ekranının açık olduğundan emin olun. Lenovo Legion Toolkit, açık olmayan bir ekran için yenileme hızlarını yükleyemez.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Yenileme Hızı bulunamadı</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Yenileme Hızlarını Hariç Tut</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Çıkış</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Dışa Aktar</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Pille çalışırken yalnızca tümleşik GPU'yu ve AC adaptörü bağlıyken hem tümleşik hem de harici GPU'yu kullanın. Standart olmayan bir adaptör bağlandığında, sistem Yalnızca Hibrit-iGPU Moduna geçer.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Hibrit-Oto Modu</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Bu moda geçmek ve bu moddan çıkmak yeniden başlatmayı gerektirir.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Yalnızca harici GPU'yu kullanın. Bu mod, en iyi grafik performansını sağlar, ancak güç tüketimini artırır.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>dGPU Modu</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Hem entegre hem de harici GPU etkinleştirilmiştir. Sistem, ihtiyaçlarına göre bunlar arasında otomatik olarak geçiş yapacaktır.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hibrit Kipi</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Bu mod, yalnızca harici GPU çalışmadığında etkili olur.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Yalnızca entegre GPU'yu kullanın. Bu mod, güç tüketimini ve gürültüyü en aza indirir.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Yalnızca Hibrit-iGPU Modu</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>GPU Çalışma Modları Hakkında</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU Sensörü</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Fan Hızı</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kapağı açtığınızda bilgisayarı açın.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Kapağı açtığınızda bilgisayarı açın.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Flip To Start</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Fn tuşunu basılı tutmadan F1-F12 tuşlarının ikincil işlevlerini kullanın.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Kilidi</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Fn tuşunu basılı tutmadan F1-F12 tuşlarının ikincil işlevlerini kullanın.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Kilidi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>UYARI!\nBazı bilgisayarlar, belirtilenden daha düşük değerleri kabul edebilir, ancak dikkatli olun. Bu seçenek öngörülemeyen davranışlara neden olabilir, bu nedenle ne yaptığınızdan emin değilseniz, bunu 0'da bırakın.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Minimum ofset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>UYARI!\nBazı bilgisayarlar, belirtilenden daha yüksek değerleri kabul edebilir, ancak dikkatli olun. Bu seçenek öngörülemeyen davranışlara neden olabilir, bu nedenle ne yaptığınızdan emin değilseniz, bunu 0'da bırakın.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maksimum ofset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Ne yaptığınızı gerçekten bilmiyorsanız aşağıdaki seçenekler ile oynamayın.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Gelişmiş</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Uzun Vadeli Güç Limiti (Çapraz Yükleme)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Uzun Vadeli Güç Limiti</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Kısa Vadeli Güç Limiti</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPU Sıcaklık Limiti</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Ayar uygulanamadı</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Ayar yüklenemedi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Fan hızı kesin olarak 1 sıcaklık sensörü tarafından belirlenmemektedir. CPU, GPU ve Soğutucu sıcaklığı arasındaki en yüksek sensör başına hızı artıracak veya azaltacaktır. Fareyi her adımın üzerine getirdiğinizde tam değerler görünecektir.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Fan eğrisi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>UYARI!\nBu seçeneğin uzun süreli kullanımı, fanların ömrünü azaltabilir.\nCidden, bu seçeneğe dikkat edin!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Azami Çalışma Hızı</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Fanlar</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Yapılandırılabilir TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>GPU Sıcaklık Limiti</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Özel Kipi Ayarları</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranda yüksek dinamik aralığı (HDR) etkinleştirin.\n\nUYARI: Dahili ekran kapalıysa bu işlem doğru çalışmaz.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranda yüksek dinamik aralığı (HDR) etkinleştirin.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>HDR kullanımı, Windows ayarları tarafından engellenmiş.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>İçe Aktar</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Bu cihaz, Lenovo Legion Toolkit ile uyumlu değildir.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Uyumlu klavye bulunmadı</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Klavye Işığı</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage veya servisleri çalışırken klavye ışığı burada kontrol edilemez.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage veya hizmetleri çalışıyor</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Hakkında</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Eylemler</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Pil</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Menü</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Bağış</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Klavye</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>İndirilenler</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Ayarlar</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Güncelleme mevcut!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>{0} Güncelleme mevcut!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Aşağı Taşı</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Yukarı taşı</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Hayır</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>AC adaptörü bağlı</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>AC adaptörü bağlı (Düşük watt)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>AC adaptörü bağlantısı kesildi</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Kamera kapalı</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Kamera açık</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Büyük Harf Kilidi kapalı</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Büyük Harf Kilidi açık</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Kilidi kapalı</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Kilidi açık</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Mikrofon kapalı</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Mikrofon Açık</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Kilidi kapalı</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Kilidi açık</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Arka ışık {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Parlaklık {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad kapalı</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad açık</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Arka ışık {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>AC Adaptörü</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Kamera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Büyük Tuş Kilidi ve Num Kilidi</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Mikrofonun sesini kapatma gibi Fn tuşları eylemleri için ekran bildirimini devre dışı bırakır.\nTam ekran uygulamalarda rahatsız oluyorsanız bu seçeneği etkinleştirin.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Bildirimleri gösterme</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Kilidi</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Klavye Işığı</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Konum</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Güç Modu</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Yenileme Hızı</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Akıllı Tuş</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Bildirimler</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Touchpad Kilidi</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Tamam</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Aç</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranın yanıt süresini iyileştirin.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranın yanıt süresini iyileştirin.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} indirildi!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>İndirme tamamlandı</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Bir şeyler ters gitti</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Sunucu 404 kodunu döndürdü.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Dosya kaldırılmış gibi görünüyor</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>İnternet bağlantınızın açık ve çalışır durumda olup olmadığını kontrol edin.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Bir şeyler ters gitti</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Güncelleme mevcut!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Bu paket bir yıldan daha eski.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Sürüm</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Aşağıda, dizüstü bilgisayarınızla uyumlu olarak işaretlenmiş yazılım paketlerinin bir listesi bulunmaktadır.\nDaima doğru paketleri kurduğunuzdan emin olun.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Makine Türü ve işletim sisteminin doğru ayarlanıp ayarlanmadığını kontrol edin.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Bir şeyler ters gitti</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Sıralamayı değiştirmek, sonuçları filtrelemek, paketleri gizlemek veya listeyi yenilemek indirmeyi durduracaktır. Devam etmek istiyor musun?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>İndirme devam ediyor</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtre...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Cihaz Tipi</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>İşletim sistemi</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Birincil (Önerilen)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage ile aynı</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>İkincil</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Lenovo PC Desteği ile aynı</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Kategori</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Tarih</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>İsim</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Kaynak</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>İndirilenler</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Yapıştır</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Performans modunu seçin.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Güç Modu</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Performans modunu seçin.\nFn+Q ile modu değiştirebilirsiniz.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Ayarlar</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Güç Modu</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Seçilen güç modu, AC adaptörü bağlı olmadan düzgün çalışmayabilir.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Varsayılan</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Windows Güç Planları</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Klavye ışıklarını ayarlayın.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klavye ışığı</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Parlaklık</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Ön ayar 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Ön ayar 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Ön ayar 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Ön ayar 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Bölge 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Bölge 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Bölge 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Bölge 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Efekt</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Hız</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Benioku</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Yenile</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranın yenileme hızını değiştirin.\n\nUYARI: Yerleşik ekran kapalıysa bu eylem düzgün çalışmayacaktır.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Yenileme hızı</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranın yenileme hızını değiştirin.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Yenileme hızı</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Adlandır</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Sonra yeniden başlatacağım</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Şimdi yeniden başlat</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Geri al</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argümanlar</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Çalıştıralabilirin Konumu</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bir komut veya program çalıştırın.\nÖnce komutun doğru çalıştığından emin olun.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Çalıştır</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Kaydet</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Kaydediliyor...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Geçiş yapmak için bir veya daha fazla hızlı işlem seçin</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Hızlı İşlem tanımlanmadı.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Bu uygulamayı göster</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Uygulamanın rengini değiştirin.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Renk</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Windows'ta oturum açtığınızda küçültülmüş halde başlatın.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Otomatik Çalıştırma</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone düzgün bir şekilde devre dışı bırakılmamış olabilir</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zone devre dışı bırakılamadı</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Legion Zone'u ve hizmetini kaldırmadan devre dışı bırakın.\nBu seçeneği değiştirdikten sonra yeniden başlatma önerilir.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Legion Zone'u devre dışı bırak</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys doğru bir şekilde devre dışı bırakılmamış olabilir</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys devre dışı bırakılamadı</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys ve hizmetini kaldırmadan devre dışı bırakın.\nDevre dışı bırakılırsa, bu uygulama Fn kısayollarını idare edecektir\nBu seçeneği değiştirdikten sonra yeniden başlatma önerilir.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys'i Devre Dışı Bırak</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage ve/veya ImController doğru şekilde devre dışı bırakılmamış olabilir</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage ve/veya ImController devre dışı bırakılamadı</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage'ı ve lmController hizmetini kaldırmadan devre dışı bırakın.\nBu seçeneği değiştirdikten sonra yeniden başlatma önerilir.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage ve ImController'ı devre dışı bırakın</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone doğru bir şekilde etkinleştirilmemiş olabilir</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zone etkinleştirilemedi</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys doğru bir şekilde etkinleştirilmemiş olabilir</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys Tuşları etkinleştirilemedi</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage ve/veya ImController doğru şekilde etkinleştirilmemiş olabilir</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage ve/veya ImController etkinleştirilemedi</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Fn+R kısayolunu daha kullanışlı hale getirmek için yenileme hızlarını hariç tutabilirsiniz.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Yenileme Hızlarını Hariç Tut</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Dil seçin.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Dil</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Her zaman görev çubuğu tepsisine küçültün. Tepsi simgesine sağ tıklayarak kapatın.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Kapatırken simge durumuna küçült</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Hangi bildirimlerin gösterileceğini ayarlayın.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Bildirimler</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Windows Güç Planları</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Fn+F9'a çift basışa Hızlı İşlem atayın.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Akıllı Tuş İkincil İşlem</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Fn+F9 tek basışına Hızlı Eylem atayın.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Akıllı Tuş Eylemi</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Açık temayı, koyu temayı ayarlayın veya sistem ayarlarını takip edin.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Ayarlar</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Klavye ışık seviyesini ayarlayın.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klavye ışık parlaklığı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Efekt ekle</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Profil uygulanamadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Işık profili uygulanamadı.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Parlaklık</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Tüm bölgelerin seçimini kaldır</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Efektler</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profil dışa aktarılamadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Profil dışa aktarılamadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profil içe aktarılamadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Profil içe aktarılamadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Hiçbir efekt eklenmedi.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Varsayılana sıfırla</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Tüm bölgeleri seç</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Klavye düzenini değiştir</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Yön</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Renk</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Renkler</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Yön</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Efekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Bu efekt tüm klavyeye uygulanacak ve diğer tüm efektlerin yerini alacaktır.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Hız</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Efekt ekle</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Efekti düzenle</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Klavye ışık profilini ayarlayın.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klavye ışık profili</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Bütün tuşlar</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} bölge</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Gündoğumu</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Gün batımı</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Zaman</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Entegre ve harici GPU arasında geçişe izin verin.\nYeniden başlatma gerektirir.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Hibrit Modun değiştirilmesi yeniden başlatmayı gerektirir. Şimdi yeniden başlatmak istiyor musunuz?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Yeniden başlatma gerekli</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Hibrit Kipi</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Touchpad'i devre dışı bırak.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Touchpad Kilidi</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Touchpad'i devre dışı bırakın.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Touchpad Kilidi</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Tekrar deneyin</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Beklenmeyen bir istisna oluştu:\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Adsız</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Risk size ait olmak üzere devam etmeyi seçebilirsiniz, ancak bazı özelliklerin kullanılamayabileceğini ve/veya düzgün çalışmayabileceğini unutmayın.\n\nDevam etmeyi seçerseniz, kayıt etme otomatik olarak etkinleştirilecektir.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Daha fazla bilgi için GitHub'daki proje sayfasına göz atın.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Kayıt dosyası</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Cihaz Tipi</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit, cihazınızla test edilmemiştir.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Desteklenmeyen cihaz</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Üretici</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Güncelle</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Güncelleme mevcut</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Yenilikler nedir?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Klavye parlaklığını ayarlayın.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klavye parlaklığı</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Fn+Space ile parlaklığı değiştirebilirsiniz</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Klavye ışığı</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Dahili klavyedeki Windows tuşunu devre dışı bırakın.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Windows Tuş Kilidi</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Sadece yerleşik klavyede çalışır.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Windows Tuş Kilidi</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Evet</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Kapatıldığında, mikrofonların sesi kapatılır.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kapatıldığında, mikrofonların sesi kapatılır.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Çözünürlük</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranın çözünürlüğünü değiştirin.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Çözünürlük</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranın çözünürlüğünü değiştirin.\n\nUYARI: Dahili ekran kapalıysa, bu işlem doğru çalışmaz.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranın ölçeğini değiştirin.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Yerleşik ekranın ölçeklendirmesini değiştirin.\n\nUYARI: Dahili ekran kapalıysa, bu işlem doğru çalışmaz.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Ekran</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Klavye ışığı</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Işığı Fn+Boşluk ile açıp kapatabilirsiniz.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klavye ışığı</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Işığı açın veya kapatın.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Eşleşen bir indirme bulunmamakta</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Sadece güncellemeleri göster</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Ana Sayfayı Düzenle</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Yükle</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Grup oluştur</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>İsim</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Cihazınızın durumuna ve yapılandırmasına bağlı olarak bazı özellikler Ana Menü'de görünmeyebilir.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Özelleştir</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Ekranları kapat</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Mevcut tüm ekranları kapatın.\nFareyi hareket ettirmek veya klavyeye basmak ekranları uyandırır.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Kapat</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ekranları kapat</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Mevcut tüm ekranları kapat.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Grup adını düzenle</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>İsim</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Legion logosu açık</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Legion logosu kapalı</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Port ışıkları açık</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Port ışıkları kapalı</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Yeniden başlatma gerekli</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Sistemi kapatma gerekli</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Yeniden başlatma önerilir</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Kaydet &amp; Kapat</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Özel Mod Ön Ayarı</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Özel Modu ön ayarını etkinleştirin.\nBu ayarlar yalnızca Özel Mod etkinleştirildiğinde etkili olur.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Ön ayar adı</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>İsim</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Etkin Ön Ayar</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Uygulama klasörleri</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Veri</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Sıcaklık</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Tek Ekran Parlaklığı</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Açık olduğunda, değiştirdiğinizde tüm Windows güç planlarına aynı parlaklık düzeyi uygulanacaktır.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>{0} sürümü güncelleme için mevcut!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Tepe Güç Sınırı</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU sPPT Güç Limiti</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>CPU tarafından ulaşılabilen sürekli güç tüketimi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>CPU tarafından kısa bir süre içinde ulaşılabilen en yüksek güç tüketimi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>CPU tarafından ulaşılabilen maksimum anlık güç tüketimi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Hem CPU hem de GPU tamamen kullanıldığında CPU tarafından ulaşılabilen maksimum güç tüketimi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>CPU tarafından küçük bir gecikmeyle ulaşılabilen en yüksek güç tüketimi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Frekans ve güç düşürülmeden önce CPU'nun ulaşabileceği maksimum sıcaklık.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>CPU'nun güç tüketimine bağlı olarak GPU'ya tahsis edilebilecek ek maksimum güç.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Temel güç tüketimine ek olarak GPU'ya tahsis edilebilecek ek güç miktarı.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Frekans ve güç düşürülmeden önce GPU'nun ulaşabileceği maksimum sıcaklık.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Varsayılan</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Kısa Vadeli Güç Sınırı</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>CPU'nun Kısa Süreli Güç Sınırını artırmasına ve kullanmasına izin verilen süre. Tau sona erdiğinde, Uzun Süreli Güç Limiti kullanılır.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>AC'de Toplam İşlemci Gücü Hedefi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>CPU'nun GPU için dinamik güç tüketimi ayarını tetiklediği nokta.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Oluştur</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Adım ekle</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Eylem Oluştur</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Güç Modu</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Ön Ayar</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Harici GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Güç Durumu</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Pil</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Mod</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Deşarj oranı</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Güncelleme mevcut!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Simge seç</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Simgeyi değiştir</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Düşük pil seviyesi</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Yapılandır</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>S0 Düşük Güç Modu algılandı</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows, bu aygıtın Modern Beklemeyi desteklediğini bildiriyor. Dengeli dışında güç planlarının kullanılması beklenmeyen davranışlara neden olabilir.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Güç Modu değiştiğinde uygulanacak Windows Güç Planlarını seçin.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Güç</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Windows Denetim Masası'ndaki Güç Planı seçenekleri</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Güç Kapatıldı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klavye ışık profilini içe aktarın</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Işık yapılandırmasını içe aktarın ve mevcut profile uygulayın.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Yol</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>{0} sonrası</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Çoklu tetikleyiciler...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>GPU Hız Aşırtma Ayarları</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Çekirdek Frekans Ofseti</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Bellek Frekans Ofseti</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU Hız Aşırtma</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Harici GPU'yu hız aşırtarak performansı artırın.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Hız Aşırtma</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Harici GPU'yu hız aşırtarak performansı artırın.\n\nUYARI: Harici GPU mevcut değilse, bu işlem doğru çalışmaz.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Port ışıkları</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Bilgisayarın arkasındaki bağlantı noktalarının ışığını açın veya kapatın.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Port ışıkları</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bilgisayarın arkasındaki bağlantı noktalarının ışığını açın veya kapatın.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Panel logosu ışığı</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Bilgisayarın kapağındaki ışığı açın veya kapatın.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Panel logosu ışığı</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bilgisayarın kapağındaki ışığı açın veya kapatın.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Azami: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Kullanım</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Çekirdek Saati</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Sıcaklık</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Fan</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Bellek Saati</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Yenileme aralığı</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Anında Önyükleme</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Bir şarj cihazı bağlandığında dizüstü bilgisayarı açın.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Anında Önyükleme</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bir şarj cihazı bağlandığında dizüstü bilgisayarı açın.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Güç Modu değiştirilemiyor</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>{0} güç modu, AC gücü olmadan kullanılamaz.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensörler</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>GPU Çalışma Modu Değiştirilemedi</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Beklenen sonucu görmezseniz, birkaç saniye içinde modu tekrar değiştirmeyi deneyin.\nGPU hiç yanıt vermiyorsa, lütfen dizüstü bilgisayarınızı yeniden başlatın.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU şuan kullanımda</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU kullanılmadığında otomatik olarak kapanacaktır.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>dGPU şuan kullanımda veya dizüstü pil gücünde çalışmıyor</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>dGPU kullanılmadığında ve dizüstü pil gücünde çalıştığında otomatik olarak kapanacaktır.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Özel Mod ayarları, Lenovo Vantage veya hizmetleri çalışırken doğru şekilde uygulanmayacaktır.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Legion Zone veya hizmetleri çalışırken Özel Mod ayarları doğru uygulanmayacaktır.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU bağlı</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPU bağlı değil</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU Çalışma Modu</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bilgisayarınızın kullanım ve güç koşullarına göre GPU çalışma modunu seçin.\nMod değiştirme, yeniden başlatma gerektirebilir.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hibrit Modu</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Dahili ve harici GPU arasında geçişe izin verin.\nYeniden başlatma gerektirir.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Süre</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Güncellemeler</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>GPU Üstünden CPU Üstüne Dinamik Güç</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Bu CPU kullanımına bağlı olarak GPU üstünden CPU üstüne tahsis edilebilecek azami ek güçtür. Değer ne kadar yüksek olursa CPU kullanan uygulamaların performansı da o kadar iyi olur.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Açılış Logosu</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Sistem başladığında görülebilen Açılış Logosu görüntüsünü özelleştirin.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Açılış Logosu</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Varsayılan Başlangıç Logosu ayarla</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Özel Başlangıç Logosu ayarla</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Durum</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Varsayılana döndür</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Özelleştir</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Eylemler</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Bildirim Metni</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bildirimi göster</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Ön ayar</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Akıllı Fn Kilidi</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Shift, Ctrl veya Alt tuşuna basıldığında Fn Kilidi geçici olarak devre dışı bırakılacaktır.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Kapalı</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Özel önyükleme logosu tam olarak {0} piksel olmalı.\nDesteklenen biçimler: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Gecelik Pil Şarjı</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Etkinleştirildiğinde, bu cihaz gece takıldığında %80 oranında şarj olur ve sabah siz bu cihazı kullandığınızda şarj işlemi %100 oranında biter.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Gecelik Pil Şarjı</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Etkinleştirildiğinde, bu cihaz gece takıldığında %80 oranında şarj olur ve sabah siz bu cihazı kullandığınızda şarj işlemi %100 oranında biter.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Geçersiz görsel boyutu.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Geçersiz görsel biçimi.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>EFI bölümü bağlanamıyor.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>UEFI ayrıcalığı ayarlanamıyor.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>EFI bölümünde yeterli boş alan yok.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Özel logo ayarlanamadı: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Varsayılan logo ayarlanamadı: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Varsayılan başlangıç logosu ayarla.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Özel başlangıç logosu ayarla.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Ağ adı (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Mevcut ağ adını kopyala</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Herhangi bir Wi-Fi ağı için boş bırakın.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>HWiNFO64 ile fan hızını, pil sıcaklığını vb. paylaşın. Bu seçeneği değiştirdikten sonra HWiNFO64 yeniden başlatılması gerekebilir.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Bütünleşmeler</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Ayarlar</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Bilgi</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>İndirme klasörü</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>İndirme klasörünü aç</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>İndir</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>BENİOKU'yu Aç</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Ön ayar</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Yenile</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Sil</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Süre (dakika)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Sistem yeniden başlatıldığında pil bölümündeki \"Pil süresi\" sayacını sıfırlar.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Başlangıçta \"Pilde\" ifadesini sıfırla</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>WiFi'yi kapat</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>WiFi'yi aç</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Sessizce çalış</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Bitene kadar bekle</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Konsol penceresini oluşturmadan konsol uygulamalarını yürütün.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Program veya betiğin yürütülmesi bitene kadar bekleyin</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Sessize alındığında tüm aktif ses çıkış cihazlarının sesi kapatılacaktır.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hoparlör</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Sistem tepsisine küçült</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Görev çubuğu yerine, her zaman sistem tepsisine küçült.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Windows Güç Modları</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Fn+Q ile Özel Moda geçin</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Fn+Q ile Özel Moda hızlı geçişe izin verin.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Güç Modu Eşitlemesi</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Güç Modlarını değiştirirken Windows Güç Planını veya Windows Güç Modunu otomatik olarak değiştirin.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Windows Güç Modları</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Güç Modu değiştiğinde uygulanacak Windows Güç Planlarını seçin.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Cihaz bilgileri okunurken hata oluştu.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Makro</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Makro</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Tekrarla</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Gecikmeleri yoksay</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Temizle</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Kayıt</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Kaydı durdur</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Tekrar etme</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Otomatik makroların çalışması için Lenovo Legion Toolkit çalışıyor olmalıdır.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Etkinleştir</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Tuş vuruşu serilerini kaydedebilir ve klavyenizdeki sayısal tuş takımını kullanarak bunları çağırabilirsiniz.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Makro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Makroları etkinleştir veya devre dışı bırak.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Başka bir tuşa basıldığında kesintiye uğrar</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Gizle</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Tümünü gizle</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Cihazlar</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Tüm seçimi kaldır</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Tümünü seç</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Yalnızca klavye</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Klavye tuşları ve fare düğmeleri</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Tüm girişler</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Kayıt seçenekleri</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Kayıt 3 saniye içinde başlayacak...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Kaydediliyor...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Durdurmak için ESC tuşuna basın.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Yalnızca seçilen cihazları göster</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Yalnızca çıkarılabilir cihazları göster</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Yalnızca bağlı cihazları göster</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>CLI</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Komut satırından kontrol sağlayan Komut Satırı Arayüzünü etkinleştirin.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>YOLA CLI ekle</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Kullanıcının ortam değişkeni YOLUNA CLI ekleyin.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Sıcaklık</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Sıcaklık sensörleri için birimleri seçin.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys arka planda çalışıyor.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone arka planda çalışıyor.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage ve/veya ImController arka planda çalışıyor.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Cihazınıza bağlı tüm ekranlarda bildirim gösterin.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Tüm ekranlarda bildirim</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Denetle</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Güncelleme denetleniyor...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Güncellemeleri denetle</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Güncelle</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>API oranı sınırına ulaşıldı, lütfen daha sonra tekrar deneyin.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Güncellemeler kontrol edilemedi</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Bir şeyler ters gitti, lütfen sonra tekrar deneyin.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Güncelleme bulunamadı</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Güncellemeleri otomatik olarak denetle</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Güncelleme kataloğu bulunamadı</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Güncellemeleri başka bir kaynaktan almayı deneyin.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Bir şeyler ters gitti</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>İnternet bağlantınızın açık ve çalışır olduğunu kontrol edin.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Sesi oynat</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Wav veya mp3 gibi yaygın müzik biçimleri desteklenmektedir.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hızlı Eylemler</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kaydedilmiş hızlı eylem çalıştır.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\" xml:space=\"preserve\">\n    <value>Bildirim her zaman en üstte</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\" xml:space=\"preserve\">\n    <value>Bildirimi her zaman en üste koyun.\nDiğer tam ekran pencereleri etkilemeyecek, ancak bildirimlere tıklayamayacaksınız.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.uk.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Збірка</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Останній реліз на GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Посилання</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Сторінка проєкту на GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Сторонні бібліотеки</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Про застосунок</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Українською переклали Владислав Придатько та Дмитро Зозуля.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Версія</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Додати</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Додати нову</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Заряджати USB-пристрої, коли комп'ютер вимкнений або знаходиться у режимах сну чи гібернації.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Завжди увімкнені USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Заряджати USB-пристрої, коли комп'ютер вимкнений або у режимі сну та режимі гібернації.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Завжди увімкнені USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Застосувати</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Застосувати та закрити</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit повинен бути запущений, щоб автоматичні дії працювали.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Увімкнути</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Дії не визначено. Натисніть \"Додати\" щоб створити нову дію.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Якщо увімкнено ці функції будуть запускатися автоматично. При зміні стану всі дії будуть оцінюватися згори донизу. Тільки дії, які підходять під теперішній стан будуть запущені.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Дії</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Назва...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Додати нову</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Жодної швидкої дії не визначено. Натисніть \"Додати\" щоб створити швидку дію.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Швидкі дії доступні в контекстному меню правої кнопки миші по іконці в треї.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Швидкі дії</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Назва...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Перейменувати</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Всі дії повернуто!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Повернено</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Зміни успішно збережено!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Збережено</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Автоматизація</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Додати крок</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Налаштування</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Винятковий</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Не виконуйте подальші дії коли ця дія ще виконується.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Виконати зараз</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Завершено з помилками.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Виконати зараз</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Успішно завершено!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Виконати зараз</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Виконання...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} крок</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} кроки</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Застосунки</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>На сході сонця</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>На заході сонця</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>О {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Режим живлення</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Безіменний</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Автоматично виявляє коли деякі ігри використовують або підлаштовують продуктивність процесора і відеокарти. Температури та шум кулерів може підвищитися.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Увімкнути рушій із ШІ</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Налаштування збалансованого режиму</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Оберіть як заряджатиметься батарея.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Режим батареї</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Оберіть як заряджатиметься батарея.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Режим батареї</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Під'єднано, заряджається...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Під'єднано, не заряджається</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Поточна температура батареї.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Температура батареї</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Поточна місткість батареї.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Поточна місткість</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Кількість циклів заряджань/розряджень.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Кількість циклів</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Місткість батареї як заявлено.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Запроєктована потужність</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Швидкість, з якою батарея заряджається (+), або розряджається (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Швидкість розряджання</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Приблизний час до завершення: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Приблизний час...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Дата першого використання</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Коли акумулятор був вперше використаний.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Місткість батареї при повному заряді.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Місткість повного заряду</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Під'єднано малопотужний зарядний пристрій</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Коли була виготовлена батарея.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Дата виготовлення</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Час, з моменту якого ноутбук востаннє був під'єднаний до мережі.\nЦей час може бути неточним, якщо ноутбук заряджався вимкненим чи в режимі сну.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Працює від батареї з</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Батарея</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Скасувати</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Закрити</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Синя</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Зелена</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Червона</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Оберіть роботи графічного процесора залежно від використання комп'ютера та умов живлення.\nПеремикання режимів може вимагати перезавантаження.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Зміна на {0} потребує перезавантаження. Бажаєте перезавантажитися зараз?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Необхідне перезаванатаження</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Режим роботи відеокарти</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Швидкі дії</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Продовжити</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Скопіювати все</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Графіка</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Інше</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Потужність</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Головна</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Вимкнути дискретну відеокарту якщо вона працює без необхідності.\n\nУВАГА: Ця дія може працювати некоректно, якщо вбудований дисплей вимкнений чи Гібридний режим не активовано.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Вимкнути відеокарту</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Додати затримку перед запуском наступного кроку.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Затримка</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Видалити</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Версія BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Текст скопійовано до буфера обміну.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" скопійовано до буфера обміну.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Скопійовано!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Пристрій</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Підтримка Lenovo</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Тип машини</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Виробник</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Модель</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Серійний номер</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Про ваш пристрій</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Дата закінчення</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Дата початку</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Гарантія</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Діє</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Вимкнути</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Неактивно</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Примусово закрити застосунки</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Вимкнути дискретну відеокарту якщо вона працює без необхідності.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Дисплей під'єднаний до відеокарти nVidia</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Процеси відсутні</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Стан продуктивності</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Невідомо</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Процеси</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Перезапустити ГП</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Дискретний ГП</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Змінити яскравість вбудованого дисплея.\nРежими живлення змінюють яскравість на деяких пристроях. Переконайтеся, що робите цей крок останнім, якщо щось не працює належним чином.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Яскравість дисплея</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Пожертвувати за допомогою</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Розробка та обслуговування Lenovo Legion Toolkit займає багато часу. Якщо вам подобається використовувати цю програму ви можете підтримати її майбутнє пожертвою будь-якої бажаної суми.\n\nНатисніть на лого PayPal нижче чи скануйте QR код, щоб пожертвувати через PayPal.\n\nЗаздалегідь дякую!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Пожертування</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Редагувати</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Зніміть позначку з частот оновлення, які ви не хочете використовувати при натисканні Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Переконайтеся, що дисплей ноутбука увімкнено. Lenovo Legion Toolkit не може завантажити частоту оновлення дисплея, якщо він вимкнений.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Частоту оновлення не визначено</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Виключити частоти оновлення</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Вийти</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Експорт</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Використовувати тільки інтегрований ГП коли живиться з батареї, та обидва, інтегрований та дискретний ГП, коли адаптер живлення під'єднано.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Автоматичний гібридний режим</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Перемикання на цей та з цього режиму потребує перезавантаження.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Використовувати тільки дискретний ГП. Цей режим надає найкращу графічну продуктивність, але збільшує енергоспоживання.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Режим дискретного ГП</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Обидва, інтегрований та дискретний ГП увімкнено. Система автоматично перемикнеться, зважаючи на її потреби.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Гібридний режим</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Цей режим набуває чинности коли дискретний ГП не працює.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Використовувати тільки інтегрований ГП. Цей режим знижує енергоспоживання та шум.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Гібридний режим інтегрованого ГП</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Про режими роботи ГП</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>ЦП</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Датчик ГП</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Швидкість кулерів</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>ГП</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>ГП #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>Об/хв</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Вмикати ноутбук коли ви підіймаєте кришку.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Розгорнути для запуску</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Вмикати ноутбук коли ви підіймаєте кришку.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Розгорнути для запуску</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Використовувати додаткові функції на клавішах F1-F12 без затискання клавіші Fn.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Блокування Fn</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Використовувати додаткові функції на клавішах F1-F12 без затискання клавіші Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Блокування Fn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>УВАГА!\nДеякі ноутбуки можуть приймати менші значення, ніж вказано, тому будьте обережні. Ця опція може призвести до непередбачуваної поведінки. Якщо ви не впевнені, що робите, залиште значення 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Мінімальний зсув</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>УВАГА!\nДеякі ноутбуки можуть приймати більші значення, ніж вони показують, тому будьте обережні. Ця опція може призвести до непередбачуваної поведінки. Якщо ви не впевнені в тому, що ви робите, залиште 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Максимальний зсув</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Не змінюйте налаштування знизу, поки ви дійсно не зрозумієте, що вони роблять.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Розширені</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Довгострокове обмеження потужності (перехресне навантаження)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Довгострокове обмеження потужності</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Короткострокове обмеження потужності</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Обмеження температури ЦП</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>ЦП</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Не вдалося застосувати налаштування</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Не вдалося завантажити налаштування.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Швидкість кулерів не визначається строго одним датчиком температури. Вона буде підвищуватись або знижуватись за найвищим датчиком між температурою процесора, графічного процесора та радіатора. Точні значення з'являтимуться, коли ви наведете курсор миші на кожен крок.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Крива кулерів</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>УВАГА!\nТривале використання цієї опції погіршує стан вентиляторів, зменшуючи їх довговічність.\nСерйозно, будьте обережні з цією опцією!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Максимальна швидкість кулерів</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Кулери</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>TGP, що налаштовується</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Динамічне прискорення</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Обмеження температури ЦП</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>ГП</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Користувальницькі режими налаштувань</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути HDR на вбудованому дисплеї.\n\nУВАГА: Ця дія може спрацювати некоректно, якщо вбудований дисплей вимкнено.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути HDR на вбудованому дисплеї.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Використання HDR заблоковано налаштуваннями Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Імпорт</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Цей пристрій не сумісний з Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Не знайдено сумісних клавіатур</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Підсвітка клавіатури</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Неможливо керувати підсвіткою клавіатури, коли працює Lenovo Vantage або його служби.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vatage або його служби запущені</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Про застосунок</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Дії</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Батарея</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Панель керування</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Пожертування</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Клавіатура</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Завантаження</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Налаштування</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Доступне обновлення!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Доступне {0} обновлення!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Перемістити вниз</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Перемістити вгору</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Ні</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Блок живлення під'єднаний</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Блок живлення під'єднано (низька потужність)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Блок живлення від'єднано</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Камеру вимкнено</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Камеру ввімкнено</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock вимкнено</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock увімкнено</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock вимкнено</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock увімкнено</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Мікрофон вимкнено</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Мікрофон увімкнено</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock вимкнено</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock увімкнено</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Підсвітка {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Яскравість {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Профіль {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Тачпад вимкнений</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Тачпад увімкнений</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Підсвітка {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Адаптер живлення</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Камера</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock та Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Вимикає сповіщення для таких дій клавіш Fn, як вимкнення мікрофона\nУвімкніть цю опцію, якщо у вас виникають конфлікти з повноекранними програмами.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Не показувати сповіщення</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Блокування Fn</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Підсвітка клавіатури</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Мікрофон</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Позиція</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Режим живлення</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Частота оновлення</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Розумна клавіша</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Сповіщення</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Блокування тачпаду</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Відкрити</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Покращити час відгуку вбудованого дисплея.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Покращити час відгуку вбудованого дисплея.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} завантажено!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Завантаження завершено</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Сталася помилка</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Сервер повернув код 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Схоже, що файл було пошкоджено</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Перевірте, що ваше інтернет-з'єднання під'єднано і працює.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Сталася помилка</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Доступне оновлення!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Цьому пакету вже понад рік.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Версія</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Нижче наведено перелік програмних пакетів, які позначені як сумісні з вашим ноутбуком.\nЗавжди переконуйтеся, що ви встановлюєте правильні пакети.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Перевірте, що тип пристрою та ОС виставлений коректно.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Щось пішло не так</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Зміна сортування, результатів фільтрації, приховування пакунків або оновлення списку призведе до зупинки завантаження. Бажаєте продовжити?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Триває завантаження</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Фільтр...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Тип пристроя</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>ОС</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Початкове (рекомендовано)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Те саме, що й в Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Додаткове</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Те саме, що й в підтримці ПК Lenovo</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Категорія</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Дата</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Ім’я</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Джерело</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Завантаження</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Вставити</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Обрати режим потужності.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Режим живлення</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Оберіть режим потужності.\nВи можете перемикатися між режимами використовуючи Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Налаштування</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Режим живлення</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Обраний режим живлення може не працювати справно без підключеного блоку живлення.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>За замовчуванням</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>План живлення Windows</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Налаштуйте шаблон підсвітки клавіатури.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Підсвітка клавіатури</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Яскравість</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Шаблон 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Шаблон 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Шаблон 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Шаблон 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Вимк.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Зона 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Зона 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Зона 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Зона 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Ефект</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Швидкість</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Прочитайте мене</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Оновлення</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Змінити частоту оновлення вбудованого дисплея.\n\nУВАГА: Ця дія може спрацювати некоректно, якщо вбудований дисплей вимкнено.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Частота оновлення</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Змінити частоту оновлення вбудованого дисплея.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Частота оновлення</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Перейменувати</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Я перезавантажуся пізніше</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Перезавантажити зараз</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Скасувати зміни</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Аргументи</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Виконавчий шлях</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Запустити скрипт або застосунок.\nВ першу чергу перевірте, чи всі скрипти виконуються правильно.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Виконати</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Зберегти</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Збереження...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Оберіть одну чи більше швидких дій для циклу</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Швидких дій не визначено.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Показати цей застосунок</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Змінити колір акценту застосунку.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Колір акценту</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Запускати згорнутим у лоток, коли ви входите у Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Автозапуск</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Зони Legion могли бути вимкнені неправильно</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Не вдалося вимкнути зони Legion</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Вимкнути Legion Zone та його служби без деінсталяції.\nПерезавантаження рекомендоване після зміни цієї опції.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Вимкнути зони Legion</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Гарячі клавіші Lenovo могли бути вимкнені неправильно</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Не вдалося вимкнути гарячі клавіші Lenovo</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Вимкнути гарячі клавіші Lenovo та його служби без деінсталяції.\nЯкщо вимкнено, додаток буде використовувати швидкі дії з увімкненою клавішею Fn.\nПерезавантаження рекомендоване після зміни цієї опції.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Вимкнути гарячі клавіші Lenovo</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Можливо, Lenovo Vantage та/або ImController було вимкнено неправильно</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Неможливо вимкнути Lenovo Vantage та/або ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Вимкнути Lenovo Vantage та ImController без їхньої деінсталяції.\nРекомендується перезавантаження після зміни цієї опції.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Вимкнути Lenovo Vantage та ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Зони Legion могли бути увімкнені неправильно</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Не вдалося увімкнути зони Legion</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Гарячі клавіші Legion могли бути увімкнені неправильно</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Не вдалося увімкнути гарячі клавіші Lenovo</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Можливо, Lenovo Vantage та/або ImController було увімкнено неправильно</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Неможливо увімкнути Lenovo Vantage та/або ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Ви можете виключити частоту оновлення, щоб зробити комбінацію клавіш Fn+R більш корисною.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Виключити частоти оновлення</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Обрати мову.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Мова</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Завжди згортати у лоток. Закривайте натисканням правою кнопкою миші на образець у лотку.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Згортати при закритті</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Налаштуйте, які сповіщення будуть зображатися.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Сповіщення</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Плани живлення Windows</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Призначити швидкі дії на подвійне натискання Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Другорядна дія розумної клавіші</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Призначити швидкі дії на натискання Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Дія розумної клавіші</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Встановить білу тему, темну тему або дотримуйтесь системних налаштувань.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Тема</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Налаштування</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Відрегулюйте підсвітку клавіатури.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Яскравість підсвітки клавіатури</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Додати ефект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Не вдалося зберегти профіль</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Профіль підсвітки не було застосовано.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Яскравість</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Зняти виділення з усіх зон</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Ефекти</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Профіль не може бути експортований</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Не вдалося експортувати профіль</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Профіль не може бути імпортований</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Не вдалося імпортувати профіль</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Жодного ефекту не додано.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Скинути</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Обрати усі зони</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Змінити розкладку клавіатури</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Напрямок</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Колір</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Кольори</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Напрямок</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Ефект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Цей ефект буде застосовано для всієї клавіатури й замінить всі інші ефекти.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Швидкість</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Додати ефект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Редагувати ефект</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Відрегулюйте профіль підсвітки клавіатури.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Профіль яскравості підсвітки клавіатури</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Усі клавіші</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} зон</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Світанок</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Захід</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Час</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Дозволяти перемикатися між інтегрованим та дискретним ГП.\nПотребує перезавантаження.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Змінення гібридного режиму потребує перезавантаження. Бажаєте перезавантажитися зараз?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Необхідне перезавантаження</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Гібридний режим</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Вимкнути тачпад.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Блокування тачпаду</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Вимкнути тачпад.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Блокування тачпаду</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Спробувати знову</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Стався несподіваний виняток:\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Безіменний</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Ви можете продовжити роботу на свій страх і ризик, але майте на увазі, що деякі функції можуть бути недоступні та/або не працювати належним чином.\n\nЯкщо ви вирішите продовжити, запис буде ввімкнено автоматично.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Більш детальну інформацію можна знайти на сторінці проєкту на GitHub.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Тека логів</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Тип пристроя</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolki не був протестований на вашому пристрої.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Модель</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Пристрій не підтримується</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Постачальник</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Оновлення</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Доступне оновлення</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Що нового?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Налаштуйте підсвітку клавіатури.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Підсвітка клавіатури</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Ви можете змінювати яскравість за допомогою Fn+Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Підсвітка клавіатури</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Вимкнути клавішу Windows вбудованої клавіатури.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Блокування клавіші Windows</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Працює тільки із вбудованою клавіатурою.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Блокування клавіші Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Так</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Мікрофон</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Коли вимкнено, мікрофони будуть вимкнені.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Мікрофон</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Коли вимкнено, мікрофони будуть вимкнені.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Роздільна здатність</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Змінити роздільну здатність вбудованого дисплея.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Роздільна здатність</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Змінити роздільну здатність вбудованого дисплея.\n\nУВАГА: Ця дія може спрацювати некоректно, якщо вбудований дисплей вимкнено.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Змінити масштаб вбудованого дисплея.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Змінити масштаб вбудованого дисплея.\n\nУВАГА: Ця дія може спрацювати некоректно, якщо вбудований дисплей вимкнено.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Дисплей</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Підсвітка клавіатури</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Ви можете увімкнути або вимкнути підсвітку комбінацією Fn+Пробіл.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Підсвітка клавіатури</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути або вимкнути підсвітку.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Не знайдено відповідних завантажень</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Показувати тільки оновлення</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Налаштування панелі керування</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Скидання</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Створити групу</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Назва</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Деякі можливості можуть не з'явитися на панелі керування, залежачи від стану та конфігурації вашого пристрою.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Налаштувати</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Вимкнути дисплеї</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Вимкнути усі доступні дисплеї.\nПересування миші чи натискання на клавіатуру може увімкнути дисплеї.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Вимкнути</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Вимкнути дисплеї</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Вимкнути усі доступні дисплеї.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Змінити назву групи</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Назва</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Лого Legion увімкнено</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Лого Legion вимкнено</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Підсвітка портів увімкнена</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Підсвітка портів вимкнена</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Необхідне перезавантаження</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Необхідне вимкнення</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Рекомендується перезавантаження</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Зберегти та закрити</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Пресет користувальницького режиму</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Активувати користувальницькі попередні налаштування.\nЦі налаштування працюють тільки, коли включений користувальницький режим.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Назва пресету</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Назва</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Активувати пресет</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Теки застосунку</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Дані</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Тимчасові файли</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Спільна яскравість дисплеїв</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Коли увімкнено, однаковий рівень яскравості буде застосований для всіх планів потужності Windows, поки ви не зміните його.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Доступне оновлення {0}!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Обмеження максимальної потужності</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Обмеження потужності APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Пік енергоспоживання, якого може досягти ЦП.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Пік енергоспоживання, якого може досягти ЦП за короткий проміжок часу.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Максимальне миттєве енергоспоживання, якого може досягти ЦП.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Максимальне енергоспоживання, яке може бути досягнуте ЦП, коли обидва ЦП та ГП повністю навантажені.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Пік енергоспоживання, якого може досягти ЦП з короткою затримкою.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Максимальна температура, яка може бути досягнута ЦП до зниження частоти та потужності.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Додаткова максимальна потужність, яка може бути виділена ГП на основі енергоспоживання ГП.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Додаткова кількість потужності може бути виділена для ГП на додачу до базового енергоспоживання.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Максимальна температура, яка може бути досягнути ГП до зниження частоти та потужності.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>За замовчуванням</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Короткострокове обмеження потужності</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Кількість доступного часу для ЦП для прискорення і використання короткострокового обмеження потужності. Коли Tau закінчується, довгострокове обмеження буде використане.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Загальна потужність ЦП в змінному струмі</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Точка з якої ЦП запускає динамічне регулювання енергоспоживання ГП.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Створити</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Додати крок</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Створити дію</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Режим живлення</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Шаблон</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Дискретний ГП</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Стан живлення</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Батарея</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Режим</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Швидкість розряджання</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Доступне оновлення!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Вибрати образець</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Змінити образець</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Низький рівень заряду батареї</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Налаштування</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Виявлено модель з низьким енергоспоживанням S0</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows повідомляє, що цей ноутбук підтримує Modern StandBy. Використання планів живлення, відмінних від Збалансованого, може призвести до неочікуваної поведінки.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Оберіть плани живлення Windows, які буде застосовано при зміні режиму живлення.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Потужність</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Плани живлення у панелі управління Windows</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Вимкнений</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Імпортувати профіль підсвічування клавіатури</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Імпортувати та застосувати конфігурації підсвічування до поточного профілю.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Шлях</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Через {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Декілька тригерів...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Налаштування розгону ГП</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Зміна частоти ядра</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Зміна частоти пам'яті</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Розгін ГП</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Підвищення продуктивності шляхом розгону дискретного графічного процесора.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Розгін ГП</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Підвищення продуктивності шляхом розгону дискретного графічного процесора.\nУВАГА: Ця дія не виконуватиметься належним чином, якщо дискретний графічний процесор недоступний.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Підсвітка портів</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути або вимкнути підсвітку портів на задній панелі ноутбука.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Підсвітка портів</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути або вимкнути підсвітку портів на задній панелі ноутбука.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Підсвітка познаки на панелі</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути або вимкнути підсвітку на кришці ноутбука.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Підсвітка познаки на панелі</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути або вимкнути підсвітку на кришці ноутбука.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>ГГц</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>МГц</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Максимум: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>Процесор</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Використання</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Частота ядра</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Температура</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Вентилятор</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>Графічний процесор</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Частота пам'яті</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Інтервал оновлення</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Миттєве ввімкнення</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути ноутбук, коли зарядний пристрій приєднано.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Миттєве ввімкнення</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути ноутбук, коли зарядний пристрій приєднано.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Не вдалося змінити режим живлення</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>Режим живлення {0} не доступний без живлення від мережі.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Датчики</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Не можливо змінити режим роботи ГП</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Спробуйте змінити режим ще раз через декілька секунд, якщо ви не бачите очікуваного результату.\nЯкщо дискретний ГП зовсім не відповідає, будь ласка, перезавантажте ноутбук.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>Дискретний ГП зараз використовується</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>Дискретний ГП автоматично вимикатиметься, коли не використовується.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>Дискретний ГП зараз використовується або ноутбук працює не від батареї</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>Дискретний ГП автоматично вимикатиметься, коли не використовується і ноутбук працює від батареї.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Налаштування користувальницького режиму не застосовуватимуться правильно, коли запущено Lenovo Vantage або його служби.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Налаштування користувальницького режиму не буде застосовано правильно, коли запущено Legion Zone або його служби.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>Під'єднано дискретний ГП</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>Від'єднано дискретний ГП</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Режим роботи ГП</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Оберіть роботи графічного процесора залежно від використання комп'ютера та умов живлення.\nПеремикання режимів може вимагати перезавантаження.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Гібридний режим</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Дозволяти перемикатися між інтегрованим та дискретним ГП.\nПотребує перезавантаження.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Тривалість</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Оновлення</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Динамічний прискорювач ГП до ЦП</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Це максимальне додаткове живлення, яке може бути виділене центральному процесору від графічного процесора, на основі використання центрального процесора. Чим вище значення, тим краща продуктивність програм, які використовують ЦП.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Познака завантаження</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Персоналізувати світлину познаки завантаження, видиму при запуску системи.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Познака завантаження</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Встановлено познаку завантаження за замовчуванням</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Встановлено власну познаку завантаження</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Стан</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Скинути за замовчуванням</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Налаштувати</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Дії</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Текст сповіщення</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Показувати сповіщення</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Шаблон</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Розумне Fn Lock</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Fn Lock буде тимчасово вимкнено при натисканні клавіш Alt, Ctrl або Shift.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Вимкнено</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Користувальницька познака завантаження має бути рівно {0} пікселів.\nПідтримувані формати: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Заряджання протягом ночі</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Якщо увімкнено, цей пристрій буде заряджатися до 80% при підключенні протягом ночі та закінчить заряджання до 100% до моменту використання пристрою вранці.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Заряджання протягом ночі</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Якщо увімкнено, цей пристрій буде заряджатися до 80% при підключенні протягом ночі та закінчить заряджання до 100% до моменту використання пристрою вранці.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Неприпустимий розмір зображення.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Неприпустимий формат зображення.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Не вдалося змонтувати розділ EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Не вдалося встановити привілеї UEFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Недостатньо вільного місця на розділі EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Користувацький логотип не може бути встановленим: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Логотип за замовчуванням не може бути встановленим: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Логотип за замовчуванням встановлено.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Користувацький екран завантаження встановлено.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Назва мережі (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Скопіювати поточну назву мережі</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Залиште пустим для будь-якої мережі Wi-Fi.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Поділитися швидкістю вентилятора, температурою тощо з HWiNFO64. Вам, можливо, доведеться перезапустити HWiNFO64 після зміни цього налаштування.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Інтеграції</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Налаштування</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Інформація</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Тека завантажень</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Відкрити теку завантажень</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Завантажити</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Відкрити README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Шаблон</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Оновити</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Видалити</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Період (хвилини)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Скидає лічильник \"На батареї відколи\" у розділі батареї під час перезавантаження системи.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Скидання параметра \"Від батареї з\" під час запуску</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Вимкнути Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Увімкнути Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Тихий запуск</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Чекати закінчення</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Виконувати консольні програми, не створюючи консольного вікна.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Зачекайте, поки програма або скрипт завершить виконання</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Усі активні пристрої виводу звуку будуть вимкнені.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Гучник</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Ховати у лоток</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Завжди згортати у лоток замість панелі завдань.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Плани живлення</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Перемикнутися на користувацький режим за допомогою Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Дозволити швидке перемикання на користувацький режим за допомогою Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Синхронізація режиму живлення</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Автоматично змінювати план живлення Windows або режим живлення Windows коли змінюється режим живлення.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Плани живлення Windows</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Оберіть план живлення Windows, який буде застосовано при зміні режиму живлення.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Трапилася помилка при зчитуванні інформації про пристрій.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Макрос</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Макрос</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Повторити</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Ігнорувати затримки</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Очистити</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Запис</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Зупинити запис</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Не повторювати</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit повинен бути запущений, щоб макроси працювали.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Увімкнути</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Ви можете записати послідовність натискання клавіш і активувати їх за допомогою цифрового блоку на клавіатурі.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Макрос</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Увімкнути або вимкнути макрос.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Перервати якщо інша клавіша була натиснута</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Приховати</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Приховати всі</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Пристрої</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Зняти виділення з усіх</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Виділити усі</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Лише клавіатура</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Клавіші клавіатури та кнопки миші</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Усі пристрої вводу</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Налаштування запису</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Запис почнеться за 3 секунди...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Записується...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Натисніть ESC для зупинки.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Показати лише вибрані пристрої</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Показати лише знімні пристрої</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Показати лише під'єднані пристрої</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>Оболонка вказівного рядка</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Увімкнути оболонку вказівного рядка, яка дозволяє керувати з вказівного рядка.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Додати оболонку вказівного рядка до шляху</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Додати оболонку вказівного рядка до змінної шляху користувача.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Температура</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Виберіть одиниці виміру для чутників температури.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Гарячі клавіші Lenovo працюють у фоні.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone працює у фоні.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage та/або ImController працює у фоні.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Показувати повідомлення на всіх екранах під'єднаних до вашого пристрою.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Повідомлення на всіх екранах</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Перевірити</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Перевірка наявності оновлень...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Перевірити наявність оновлень</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Оновлення</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>Досягнуто ліміту швидкості API, спробуйте пізніше.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Не вдалося перевірити наявність оновленнь</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Щось пішло не так, будь ласка, спробуйте пізніше.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Оновлення не знайдено</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Автоматично перевіряти наявність оновлень</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Каталог оновлень не знайдено</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Спробуйте отримати оновлення з іншого джерела.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Щось пішло не так</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Перевірте, чи працює ваше інтернет-з'єднання.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Програти звук</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Підтримуються такі поширені звукові формати, як wav або mp3.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Швидка дія</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Запустити збережену швидку дію.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.uz-latn-uz.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Qurıw</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>GitHubdaǵı sońǵı versiya</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Siltemeler</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>GitHubtaǵı jobanıń veb-saytı</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Baǵdarlama haqqında</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Awdarmalar birlespe tárepinen támiyinlendi.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Versiya</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Qosıw</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Jańadan qosıw</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Kompyuter óshirilgen, gibernaciya yamasa uyqı rejiminde bolǵanda qurılmalardı USB arqalı zaryadlaw.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Hámiyshe USBden quwatlanıw</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kompyuter óshirilgen, gibernaciya yamasa uyqı rejiminde bolǵanda qurılmalardı USB arqalı zaryadlaw.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hámiyshe USBden quwatlanıw</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Qollanıw</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Qollanıw hám jabıw</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Avtomatikalıq háreketlerdiń orınlanıwı ushın Lenovo Legion Toolkit iske túsirilgen bolıwı kerek.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Iske túsiriw</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Háreketler anıqlanbaǵan. Jańa háreket jaratıw ushın \"Jańadan qosıw\" túymesin basıń.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Eger qosılǵan bolsa, bul háreketler avtomatikalıq ámelge asırıladı. Jaǵday ózgergende, barlıq háreketler joqarıdan tómenge qaray bahalanadı.\nTek ámeldegi jaǵdayǵa sáykes keletuǵın háreketler orınlanadı.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Háreketler</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Ataması...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Jańasın qosıw</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Tez háreketler anıqlanbaǵan. Jańa operativ háreket jaratıw ushın \"Jańasın qosıw\" túymesin basıń.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Tez háreketler xabarlamalar maydanındaǵı tıshqanshanıń oń túymesi belgisi menyuinde bar.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Tez háreketler</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Ataması...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Qayta ataw</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Barlıq ózgerisler biykarlandı!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Izge qaytarıldı</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Ózgerisler tabıslı saqlandı!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Saqlandı</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Avtomatizaciya</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Adım qosıw</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Sazlaw</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Esaptan tısqarı</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Usı háreket baslanǵanda, basqa ámellerdi orınlamań.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Házir orınlaw</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Qátelikler menen juwmaqlandı.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Házir orınlaw</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Tabıslı juwmaqlandı!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Házir orınlaw</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Orınlanbaqta...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} adım</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} adım</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Baǵdarlamalar</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Tań atqanda</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Kún batqanda</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>{0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Quwatlılıq rejimi</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Atı atalmaǵan</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Belgili oyınlar iske túskenin avtomatikalıq anıqlaydı, CPU hám GPU iskerligin ózgertedi. Temperatura hám samallatqısh shawqımı artıwı múmkin.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>AI Enginedı qosıw</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Teńlesiw rejimi sazlawları</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Batareyanı zaryadlaw usılın tańlaw.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Batareya rejimi</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Batareyanı zaryadlaw usılın tańlaw.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Batareya rejimi</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Jalǵanǵan, zaryadlanbaqta...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Jalǵanǵan, zaryadlanbay atır</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Batareyanıń házirgi temperaturası.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Batareya temperaturası</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Házirgi batareya quwatlıǵı.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Házirgi quwatlılıq</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Zaryadlanıw/zaryadsızlanıw cikl sanı.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Cikl sanı</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Batareyanıń dáslepki quwatlıǵı.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Shamalıq quwat</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Batareyanıń zaryadlanıw (+) hám zaryadsızlanıw (-) tezligi.</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Zaryadsızlanıw tezligi</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Shama menen qalǵan waqıt: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Waqıt esaplanbaqta...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Birinshi paydalanıw sánesi</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Batareya birinshi isletilgen waqıt.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Tolıq zaryadlanǵanda batareya quwatlıǵı.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Tolıq zaryadlaw quwatlıǵı</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Kem quwatlı zaryadlawshı jalǵanǵan</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Batareya islep shıǵarılǵan waqıt.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Islep shıǵarılǵan sáne</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Noutbuk aqırǵı márte tarmaqqa jalǵanǵannan beri waqıt.\nEger noutbuk uyqı rejiminde yamasa óshirilgen waqıtta zaryadlanǵan bolsa, bul waqıt anıq bolmawı múmkin.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Batareyada</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Batareya</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Biykarlaw</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Jabıw</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Kók</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Jasıl</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Qızıl</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Kompyuterińizden qalay paydalanıw hám quwatlılıq jaǵdayına qarap videokartanıń is rejimin tańlań. Rejimlerdi almastırıw ushın qayta iske túsiriw talap qılınıwı múmkin.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>{0}ǵa ózgertiw ushın qayta iske túsiriw kerek. Házir qayta iske túsiriwdi qáleysiz be?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Qayta iske túsiriw talap etiledi</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Videokartanıń jumıs rejimi</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Tez háreketler</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Dawam etiw</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Barlıǵın kóshirip alıw</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Grafika</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Basqa</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Quwatlılıq</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Bas bet</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Eger bólekli grafikalıq processor zarúr bolmasa da qosılǵan bolsa, onı óshiriw\n\nDIQQAT: Eger ishki displey óshirilgen yamasa gibrid rejim aktiv emes bolsa, bul háreket durıs orınlanbaydı.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Grafikalıq processordı óshiriw</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Keyingi qádemdi orınlawdan aldın iskilisti qosıw.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Irkilis</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Óshiriw</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS versiyası</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Tekst almasıw buferine kóshirip alındı.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>{0} almasıw buferine kóshirip alındı.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Kóshirip alındı!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Qurılma</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo qollap-quwatlaw xizmeti</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Qurılma modeliniń túri</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Islep shıǵarıwshı</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Seriyalı nomer</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Qurılmańız haqqında</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Kepillik tawsılıw sánesi</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Kepillik baslanıw sánesi</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Kepillik</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Aktiv</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Óshiriw</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Aktiv emes</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Proceslerdi juwmaqlaw</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Eger bólekli grafikalıq processor zarúr bolmasa da qosılǵan bolsa, onı óshiriw.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Monitor nVidia grafikalıq processorına jalǵanǵan.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Processler joq</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Ónimdarlıq jaǵdayı</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Belgisiz</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Processler</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Grafikalıq processordı qayta iske qosıw</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Bólekli grafikalıq processor</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displeydiń jarıqlıǵın ózgertiń. \nAyırım qurılmalarda quwatlıq rejimleri jarıqlıqtı ózgertedi. Eger bir nárse kerekli dárejede durıs islemese, bul qádem aqırǵısı ekenine isenim kámil etiń.\n\nESLETPE: Eger ishki displey óshirilgen bolsa, bul háreket durıs islemeydi.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Displey jarıqlıǵı</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Járdeminde qollap-quwatlaw</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkitti rawajlandırıw hám turaqlı islewin támiyinlew ushın kóp waqıt ketedi. Eger sizge bul baǵdarlamanı qollanıw unasa, siz qálegen summańız benen onıń keleshegin qollap-quwatlawıńız múmkin.\n\nPayPal arqalı qollap-quwatlaw ushın PayPal logotibine basıń yamasa tómendegi QR-kodtı tekseriń.\n\nAldınnan raxmet!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Qollap-quwatlaw</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Ózgertiw</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Fn+R túymelerin qollanǵanda, esapqa alıw kerek emes bolǵan jańalanıw tezliklerinen belgini alıp taslań.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Noutbuk displeyi qosılǵanına isenim kámil etiń. Lenova Legion Toolkit qosılmaǵan displey ushın jańalanıw tezligin júkley almaydı.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Jańalanıw tezligi anıqlanbadı</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Jańalanıw tezligin esaptan tısqarı qılıw</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Shıǵıw</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Eksportlaw</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Batareyada islegende tek biriktirilgen videokartanı qollanıw hám quwatlaw adapteri jalǵanǵanda ornatılǵan hám bólekli videokartanı qollanıw. Standart emes quwatlaw adapterin qollanǵanda, sistema biriktirilgen videokartanı qollanıp gibrid rejimge ózgeredi (Hybrid-iGPU Only Mode).</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Gibrid-Avto rejim</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Bul rejimdi almastırıw qayta iske túsiriwdi talap etedi.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Tek ǵana bólekli grafikalıq processordı paydalanıw. Bul rejim eń jaqsı ónimdarlıqtı beredi, biraq zaryadsızlanıwdı kúsheytedi.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>Bólekli videokarta rejimi</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan hám bólekli videokarta qosıladı. Sistema olardıń arasında zárúrlikke qarap avtomatikalıq ózgerip turadı.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Gibrid rejimi</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Bul rejim tek ǵana bólekli videokarta islemey turǵanda iske túsiriledi.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Tek ornatılǵan videokartanı paydalanıw. Bul rejim zaryadsızlanıwdı hám shawqımdı azaytadı.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Gibrid rejimi biriktirilgen videokartanı qollanıp</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Grafikalıq processordıń islew rejimleri haqqında</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>Oraylıq processor</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>OP sensorı</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Samallatqıshtıń tezligi</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>Grafikalıq processor</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>aylanıw/min</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Qaqpaqtı ashqanda noutbuktı qosıw.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Baslaw ushın aylandırıń</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Qaqpaqtı ashqanda noutbuktı qosıw.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Baslaw ushın aylandırıń</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Fn túymesin uslap turmay F1-F12 túymeleriniń ekilemshi funkciyalarınan paydalanıw.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Fn túymesin uslap turmay F1-F12 túymeleriniń ekilemshi funkciyalarınan paydalanıw.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>DIQQAT!\nAyrim noutbuklar o'zleri ko'rsetken quwatliliqtan to'menlewin qabillawi mu'mkin, biraq abayli bolin'. Bul tan'law ku'tilmegen na'tiyje beriwi mu'mkin, sonliqtan eger ne islep atirg'anin'izdi bilmesen'iz, buni 0 de qaldirin'.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Eń kishi ofset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>DIQQAT!\nAyrım noutbukler o'zleri ko'rsetken quwatlılıqtan to'menlewin qabıllawı mu'mkin, biraq abaylı bolın'. Bul tan'law ku'tilmegen na'tiyje beriwi mu'mkin, sonlıqtan eger ne islep atırg'anın'ızdı bilmesen'iz, bunı 0 de qaldırın'.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maksimal ofset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>Eger ne islep atırǵanıńızdı bilmeseńiz, tómendegi variantlardı ózgertpeń.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Qosımsha sazlawlar</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Uzaq múddetli quwatlılıq shegi (ján-jaqqa júklew)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Uzaq múddetli quwatlılıq shegi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Qısqa múddetli quwatlılıq shegi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Oraylıq processor temperaturasınıń shegi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>Oraylıq processor</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Sazlawlardı qollanıw ámelge aspadı</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Sazlawlardı júklew ámelge aspadı.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Samallatqıshtıń aylanıw tezligi bir ǵana temperatura sensorı járdeminde anıqlanbaydı. Ol CPU, GPU hám radiator arasındaǵı eń joqarı sensorǵa qarap tezlikti kóbeytedi yamasa azaytadı. Hár bir qádemge tısqanshanıń kórsetkishin alıp barǵanıńızda anıq múǵdarlar kórsetiledi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Samallatqıshtıń qıysıqlıǵı</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>DIQQAT!\nBul varianttı kóp waqıt qollanıw samallatqısh iskerliginiń tómenlewine alıp keledi hám onıń xızmet kórsetiw waqtın azaytadı.\nRasında da, bul variant penen abaylı bolıń!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Samallatqıshtıń maksimal tezligi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Samallatqıshlar</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>Sazlanatuǵın TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>GPU temperaturasınıń shegi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>Grafikalıq processor</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Arnawlı rejim sazlawları</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displeyde High Dynamic Range (HDR)dı qosıw.\n\nDIQQAT: Eger ishki displey óshirilgen bolsa, bul háreket durıs orınlanbaydı.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displeyde High Dynamic Range (HDR)dı qosıw.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>HDRdan paydalanıw Windows sazlawları tárepinen bloklanǵan.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Importlaw</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Bul qurılma Lenovo Legion Toolkit penen mas kelmeydi.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Mas klaviatura tabılmadı</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Klaviaturanıń arqa jaqtılıǵı</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage yamasa onıń xızmetleri islep turǵanda, klaviaturanıń arqa jaqtılıǵın bul jerde basqarıw múmkin emes.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo vantage yamasa onıń xızmetlerin islep atır</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Baǵdarlama haqqında</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Háreketler</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Batareya</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Basqarıw paneli</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Qollap-quwatlaw</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Klaviatura</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Júklengenler</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Sazlawlar</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Jańalanıw bar!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>{0} Jańalanıw bar!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Tómenge kóshiriw</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Joqarıǵa kóshiriw</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Yaq</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Quwatlaw blogı jalǵanǵan</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Quwatlaw apadteri jalǵanǵan (Kem quwatlılıq)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Quwatlaw blogı jalǵanbaǵan</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Kamera óshirilgen</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Kamera qosıwlı</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock óshirildi</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock qosıldı</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Fn Lock óshirildi</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Fn Lock qosıldı</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Mikrofon óshirildi</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Mikrofon qosıldı</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock óshirildi</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock qosıldı</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Arqa jaqtılıq {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Jarıqlıq {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Profil {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Sensorlı panel óshirildi</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Sensorlı panel qosıldı</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Arqa jaqtılıq {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Quwatlaw blogı</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Kamera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock hám Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Xabarlamalardı kórsetpew</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Fn Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Klaviaturanıń arqa jaqtılıǵı</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Orın</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Quwatlılıq rejimi</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Jańalanıw tezligi</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Aqıllı túyme</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Xabarlamalar</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Sensorlı panel bloklanıwı</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>Yaqshı</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Ashıw</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displeydiń juwap waqtın jaqsılaw.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displeydiń juwap waqtın jaqsılaw.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} júklendi!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Júklew juwmaqlandı</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Qátelik júz berdi</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Server 404 qátelik kodın qaytardı.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Fayl joq bolǵanǵa qusaydı</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Internet baylanısı islep turǵanın tekseriń.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Qátelik júz berdi</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Jańalanıw bar!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Bul paket bir jıldan asqan.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Versiya</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Tómende noutbukıńızǵa mas dep belgilengen baǵdarlamalıq paketler dizimi keltirilgen. \nDurıs paketlerdi ornatıp atırǵanıńızǵa isenim kámil etiń.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Qurılma modeliniń túri hám OS durıs kórsetilgenin tekseriń.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Qátelik júz berdi</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Sortlawdı ózgertiw, nátiyjelerdi filtrlew, paketlerdi jasırıw yamasa dizimdi jańalaw júklep alıwdı toqtatadı. Dawam etiwdi qáleysiz be?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Júklenbekte</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Filtr...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Qurılma modeliniń túri</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Operacion sistema</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Tiykarǵı (Usınıs etilgen)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage benen birdey</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Ekilemshi</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Lenovo PC qollap-quwatlawı menen birdey</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Kategoriya</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Sáne</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Ataması</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Derek</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Júklengenler</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Ornalastırıw</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Islew rejimin tańlań.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Quwatlılıq rejimi</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Islew rejimin saylań.\nRejimdi Fn+Q járdeminde ózgerte alasız.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Sazlawlar</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Quwatlılıq rejimi</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Quwatlaw blogı qosılmasa, saylanǵan quwatlılıq rejimi durıs islemewi múmkin.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Klaviaturnıń arqa jaqtılıǵın aldınnan sazlawdı ornatıń.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klaviaturanıń arqa jaqtılıǵı</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Jarıqlıq</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Sazlawlar jıyındısı 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Sazlawlar jıyındısı 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Sazlawlar jıyındısı 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Zona 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Zona 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Zona 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Zona 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Effekt</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Tezlik</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Maǵlıwmat</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Jańalaw</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displeydiń jańalanıw tezligin ózgertiw.\n\nESLETPE: Eger ishki displey óshirilgen bolsa, bul ámel durıs orınlanbaydı.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Jańalanıw tezligi</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displeydiń jańalanıw tezligin ózgertiw.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Jańalanıw tezligi</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Qayta ataw</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Keyinirek qayta iske qosaman</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Házir qayta iske qosıw</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Izge qaytarıw</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Argumentler</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Orınlanatuǵın faylǵa jol</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Skript yamasa baǵdarlamanı iske túsiriń.\nSiziń skriptińiz durıs orınlanıp atırǵanına isenim kámil etiń.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Orınlaw</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Saqlaw</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Saqlanbaqta...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Izbe-iz orınlanıw ushın bir yamasa bir neshe tez háreketlerdi tańlaw</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Tez háreketler anıqlanbaǵan.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Bul baǵdarlamanı kórsetiw</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Baǵdarlamanıń sáykes reńin ózgertiw.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Sáykes reń</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Windowsqa kirgende kishireytilgen kóriniste iske túsiriw.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Avtomatikalıq iske túsiriw</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone nadurıs óshirilgen bolıwı múmkin</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zonedi óshiriw ámelge aspadı</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Legion Zone hám onıń xızmetleriniń iskerligin toqtatıp, ózin óshirmew.\nBul varianttı ózgertkennen keyin, qayta iske túsiriw usınıs etiledi.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Legion Zonedi óshiriw</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Hotkeys nadurıs óshirilgen bolıwı múmkin</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeysti óshiriw ámelge aspadı</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeystiń ózin óshirmesten, onıń xızmetlerin óshiriw.\nEger óshirilgen bolsa, bul baǵdarlama Fn tez túymelerin orınlaydı.\nBul varianttı ózgertkennen keyin qayta iske túsiriw usınıs etiledi.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeysti óshiriw</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage hám/yamasa ImController nadurıs óshirilgen bolıwı múmkin</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage hám/yamasa ImControllerdi óshirip bo'lmadı</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Lenovo vantage hám ImController-ni óshirmesten óshirip qoyıń.\n Bul sazlawdı ózgertirgennen keyin, qayta iske túsiriw usınıs etiledi.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Lenovo vantage hám ImControllerni óshirip qoyıń</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone nadurıs iske túsirilgen bolıwı múmkin</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Legion Zonedi iske túsiriw ámelge aspadı</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys nadurıs iske túsirilgen bolıwı múmkin</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeystiń túymelerin iske túsiriw ámelge aspadı</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage hám/yamasa ImController tuwrı jaǵılmaǵan bolıwı múmkin</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage hám/yamasa ImControllerdi jaǵılmadı</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Fn+R túymelerin paydalıraq qılıw ushın, siz jańalanıw tezligin esaptan tısqarı qılıwıńız múmkin</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Jańalanıw tezligin esaptan tısqarı qılıw</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Tildi saylań.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Til</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Hámiyshe xabarlamalar maydanına kishireytiw. Xabarlamalar maydanındaǵı tańbada tıshqanshanıń oń túymesin basıw járdeminde jabıw.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Jawǵanda jıynaw</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Qanday xabarlamalar kórsetiliwin sazlań.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Xabarlamalar</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Quwatlılıq jobaları</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Fn+F9 túymelerin eki márte basıw ushın tez háreketti belgileń.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Aqıllı túymeniń ekilemshi háreketi</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Fn+F9 túymelerin bir márte basıw ushın tez háreketti belgileń.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Aqıllı túyme háreketi</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Jaqtı temanı, qaranǵı temanı ornatıw yamasa sistema sazlawlarına ámel etiw.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Tema</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Sazlawlar</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Klaviaturnıń arqa jaqtılıǵı jarıqlıǵın sazlań.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Óshik</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klaviaturnıń arqa jaqtılıǵınıń jarıqlıǵı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Effekt qosıw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Profildi qollanıw ámelge aspadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Arqa jaqtılıqtıń profilın qollanıw ámelge aspadı.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Jarıqlıq</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Barlıq zonalardıń belgilengenin alıp taslaw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Effektler</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profildi eksport qılıw ámelge aspadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Profildi eksport qılıw ámelge aspadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Profildi import qılıw ámelge aspadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Profildi import qılıw ámelge aspadı</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Effektler qosılmaǵan.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Aldınnan sazlawdı qayta ornatıw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Barlıq zonalardı tańlaw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Klaviatura jaylasıw tártibin ózgertiw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Baǵdar</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Reń</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Reńler</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Baǵdar</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Effekt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Bul effekt pútkil klaviaturaǵa qollanıladı hám barlıq effectlerdi ózgertedi.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Tezlik</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Effekt qosıw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Effektti ózgertiw</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Klaviatura arqa jaqtılıǵınıń profilin sazlaw.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klaviatura arqa jaqtılıǵınıń profili</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Bárshe túymeler</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} zona</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Quyash shıǵıwı</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Quyash batıwı</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Waqıt</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan hám bólekli grafikalıq processor arasında ózgertiw imkániyatın beredi.\nQayta iske túsiriw talap etiledi.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Gibrid rejimin ózgertiw qayta iske túsiriwdi talap etedi. Házir qayta iske túsiriwdi qáleysiz be?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Qayta iske túsiriw talap etiledi</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Gibrid rejim</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Sensorlı paneldi óshiriw.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Sensorlı panel bloklanıwı</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Sensorlı paneldi óshiriw.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Sensorlı panel bloklanıwı</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Qayta urınıp kóriń</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Atı atalmaǵan</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Siz ózińizdi qáwipke qoyıp dawam etiwdi tańlawıńız múmkin, bıraq este saqlań, ayırım funkciyalar bolmawı hám/yamasa durıs islemewi múmkin.\nEger siz dawam etiwdi tańlasańız, jurnaldı júrgiziw avtomatikalıq qosıladı.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Qosımsha maǵlıwmat alıw ushın GitHubdaǵi joybar betin tekseriń.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Jurnallar papkası</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Qurılma modeliniń túri</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit siziń qurılmańızda tekserilmedi.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Model</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Qollap-quwatlanbaytuǵın qurılma</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Támiyinlewshi</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Jańalaw</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Jańalanıw bar</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Ne jańalıq?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Klaviaturnıń arqa jaqtılıǵınıń jarıqlıǵın sazlaw.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klaviaturanıń arqa jaqtılıǵı</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Siz jarıqlıqtı Fn+Space járdeminde ózgerte alasız</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Klaviaturanıń arqa jaqtılıǵı</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Tek ǵana ornatılǵan klaviaturada isleydi.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Windows túymesin bloklaw</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Awa</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Óshirilgende, mikrofonlar dawısı óshiriledi.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mikrofon</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Óshirilgende, mikrofonlar dawısı óshiriledi.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Kólem</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displeydiń kólemin ózgertiw.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Kólem</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displey kólemin ózgertiw.\n\nESLETPE: Eger ishki displey óshirilgen bolsa, bul ámel durıs orınlanbaydı.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displeydiń kólemin ózgertiw.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ornatılǵan displey kólemin ózgertiw.\n\nESLETPE: Eger ishki displey óshirilgen bolsa, bul ámel durıs orınlanbaydı.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Displey</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Klaviaturanıń arqa jaqtılıǵı</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Arqa jaqtılıqtı Fn+Space járdeminde qosıwıńız yamasa óshiriwińiz múmkin.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Klaviaturanıń arqa jaqtılıǵı</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Arqa jaqtılıqtı qosıw yamasa óshiriw.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Sáykes júklemeler tabılmadı</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Tek jańalanıwlardı kórsetiw</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Bas betti sazlaw</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Júklew</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Topar jaratıw</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Ataması</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Qurılmańız halatı hám sazlawlarına qarap ayırım funkciyalar Ásbaplar panelinde kórinbewi múmkin.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Sazlaw</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Displeylerdi óshiriw</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Barlıq displeylerdi óshiriw.\nTıshqanshanı qozǵaw yamasa klaviaturanı basıw displeydi iske túsiredi.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Óshiriw</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Displeylerdi óshiriw</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ámeldegi barlıq ekranlardı óshiriw.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Topar atamasın ózgertiw</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Ataması</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Logotip Legion qosıwlı</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Logotip Legion óshirilgen</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Portlardıń arqa jaqtılıǵı qosıwlı</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Portlardıń arqa jaqtılıǵı óshirilgen</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Qayta iske túsiriw talap etiledi</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Óshiriw talap etiledi</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Qayta iske túsiriw usınıs etiledi</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Saqlaw hám jabıw</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Arnawlı sazlawlar jıyındısı rejimi</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Arnawlı sazlawlar jıyındısı rejimin aktivlestiredi.\nBul sazlaw tek arnawlı rejim qosılǵanda nátiyje beredi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Sazlawlar jıyındısınıń ataması</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Ataması</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Aktiv sazlawlar jıyındısı</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Baǵdarlama papkaları</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Maǵlıwmatlar</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Waqtınshalıq fayllar</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Bir displeydıń jarıqlıǵı</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Qosılǵanda hám hár ózgertilgende, barlıq Windows quwatlılıq rejelerine birdey jarıqlıq dárejesi qollanıladı.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>{0} Jańalanıw bar!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Quwatlılıqtıń eń joqarǵı shegi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU sPPT quwatlılıq shegi</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Processor tárepinen úzliksiz paydalanıw múmkin bolǵan quwatlılıq.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Qısqa waqıt ishinde processor tárepinen paydalanıw múmkin bolǵan eń joqarı quwatlılıq.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Processor tárepinen jetiwi múmkin bolǵan quwatlılıqtan paydalanıwdıń eń joqarı dárejesi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>CPU hám GPUdı tolıq qollanǵanda, CPU tárepinen jetiwi múmkin bolǵan quwatlılıqtan paydalanıwdıń eń joqarı dárejesi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Azǵana irkilis penen processor tárepinen paydalanıw múmkin bolǵan eń joqarı quwatlılıq.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Quwatlılıq hám tezlik páseyiwi aldınan, processor tárepinen jetiwi múmkin bolǵan eń joqarı temperatura.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>CPUdıń quwatlılıqtan paydalanıwı tiykarında GPUǵa ajıratıw múmkin bolǵan qosımsha maksimal quwatlılıq.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>GPU ushın tiykarǵı quwatlılıqtan tısqarı ajratıw múmkin bolǵan qosımsha quwatlılıq muǵdarı.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Quwatlılıq hám tezlik páseyiwi aldınan, grafikalıq processor tárepinen jetiwi múmkin bolǵan eń joqarı temperatura.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Aldınnan ornatılǵan</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Qısqa múddetli quwatlılıq sheginiń dawamlılıǵı</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Processorǵa qısqa múddetli quwatlılıqtı sheklew hám kóbeytiw ushın ruqsat berilgen waqıt muǵdarı. Taw múddeti ótkennen keyin, uzaq múddetli quwatlılıqtı sheklew qollanıladı.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Ózgermeli toktaǵı processordıń ulıwmalıq quwatlılıǵı</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>CPU - GPU ushın ózgeriwsheń quwatlılıqtan paydalanıw sazlawın iske túsiretuǵın orın.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Jaratıw</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Adım qosıw</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Xáreket jaratıw</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Quwatlılıq rejimi</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Sazlawlar jıyındısı</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>Bólekli grafikalıq processor</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Quwatlılıq jaǵdayı</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Batareya</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Rejim</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Zaryadsızlanıw tezligi</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Jańalanıw bar!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Tańbanı tańlaw</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Tańbanı ózgertiw</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Batareyanıń quwatlılıq dárejesi tómen</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Sazlaw</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>S0 tómen quwatlılıq modeli anıqlandı</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Bul qurılma Modern Standbydı qollap-quwatlaytuǵının Windows xabarlaydı. Teńlestirilgen quwatlılıq jobasınan basqasın qollanıw kútilmegen háreketke alıp keliwi múmkin.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Quwatlılıq rejimi ózgergende qollanılatuǵın Windows quwatlılıq jobaların tańlań.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Quwatlılıq</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Windows basqarıw panelindegi quwatlılıq jobası variantları</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Óshirilgen</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Túymetaxta arqa nurı profilin import etiń</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ámeldegi profilge arqa jaqtılıq konfiguratsiyasın import etiń hám qollań.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Jol</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Arqalı {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Bir neshe triggerler...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>GPU overclock sazlamaları</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Tiykarǵı chastota ofset</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Yad chastotasınıń ofseti</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Overclock GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Diskret GPOdı overclock qılıw arqalı ónimlilikti asırıń.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Overclock GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Diskret GPOnı overclock qılıw arqalı ónimlilikti asırıń.\n\nESKERTIW: Diskret GPU ámeldegi bolmasa, bul ámel tuwrı atqarılmaydı.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Portlardıń jarıtqıshı</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Noutbukdıń arqa bólegindegi portlardıń jarıǵın qosıń yáki óshiriń.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Portlardıń jarıtqıshı</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Noutbuktiń arqa tárepindegi port jarıtqıshın qosıń yáki óshiriń.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Panelde kórsetilgen logotip</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Noutbuk qapqaǵındaǵı arqa jaqtılıqtı qosıń yamasa óshiriń.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Panelde kórsetilgen logotip</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Noutbuk qapqaǵındaǵı arqa jaqtılıqtı qosıń yamasa óshiriń.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GGs</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MGts</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Maksimal: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>Oraylıq protsessor</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Paydalanıw</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Tiykarǵı saat</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Temperatura</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Íshqıpaz</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>Grafik. Oraylıq protsessor</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Yad saatı</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Jańalaw aralıǵı</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Operativ</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Zaryadlawshını jalǵaǵanda noutbukti qosıń.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Kóp urınıw</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Zaryadlawshını jalǵaǵanda noutbukti qosıń.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Quwat rejimin ózgertip bolmaydı</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>Elektr quwatsız {0} quwat rejimi joq.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Sensor</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>GPU jumıs rejimin ózgertip bolmadı</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Eger kútilgen nátiyjeni kórmeseńiz, bir neshe sekunddan keyin rejimdi jáne ózgertirip kóriń.\n Eger dGPU ulıwma juwap bermese, noutbuktı qayta jumısqa túsiriń.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>Diskret grafik karta isletilip atır</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>Diskret grafik karta isletilmegende avtomatikalıq túrde úziledi.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>dGPU házirde isletilip atır yamasa noutbuk batareya quwatında isletilmey atır</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>DGPU isletilip atırǵanda hám noutbuk batareya quwatında bolǵanda avtomatikalıq túrde úziledi.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo vantage yamasa onıń xızmetlerin islep atirǵan bolsa, paydalanıwshı rejimi sazlawları tuwrı qollanılmaydı.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Eger Legion Zone yamasa onıń xızmetlerin islep atirǵan bolsa, paydalanıwshı rejimi sazlawları tuwrı qollanılmaydı.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Video kartanıń rejimi</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kompyuterińizden qanday paydalanıwıńızǵa hám quwat sharayatlarına qaray video kartanıń islew rejimin saylań.\n Rejimlerdi almastırıw ushın qayta iske túsiriw talap etiliwi múmkin.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Gibrid rejimi</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Integraciyalasqan hám diskret GPU ortasında almasıwǵa ruxsat beriń.\n Qayta jumısqa túsiriwdi talap etedi.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Dawam etiw waqtı</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Jańalanıwlar</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>GPU to CPU Dynamic Boost</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Logotip júklenip atır</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Sistema jumısqa túskende kórsetiletuǵın júklew logotipin sazlaw.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Logotip júklenip atır</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Júklew logotipin únsizlik boyınsha ornatıń</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Arnawlı júklew logotipi ornatıldı</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Jaǵday</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Standart sazlawlardı tikleń</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Sazlań</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Ámeller</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Bildiriwxatları teksti</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bildiriwxatların kórsetiw</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Aldınnan ornatıw</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Smart Fn Lock</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Alt, Ctrl yamasa Shift túymeleri basılǵanda Fn Lock óshiriledi.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Óshik</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Arnawlı júklew logotipi áyne {0} piksel úlken bolıwı kerek.\nQollap - quwatlanatuǵın formatlar: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Batareykanı túnde zaryadlaw</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Eger qosılǵan bolsa, bul qurılma túnde toqqa jalǵanǵanda 80% quwatlanadı hám azanda bul qurılmadan paydalanǵanda 100% quwatlanadı.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Batareyanı túnde zaryadlaw</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Eger qosılǵan bolsa, bul qurılma túnde rozetkaǵa jalǵanǵanda 80% quwatlanadı hám azanda bul qurılmadan paydalanǵanda 100% quwatlanadı.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.vi.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Bản dựng</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>Phiên bản mới nhất trên GitHub</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>Liên kết</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>Liên kết đến dự án trên GitHub</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>Thư viện bên thứ ba</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>Thông tin</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Bản dịch tiếng Việt do Not_Nhan, Nagidrop, NanKill, Kuri và Kztera thực hiện.</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>Phiên bản</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>Thêm</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>Thêm mới</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>Sạc các thiết bị khác qua cổng USB, khi máy tính đang Tắt, ở chế độ Ngủ hay ở chế độ Ngủ đông.</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>Luôn bật cổng USB</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Sạc các thiết bị khác qua cổng USB, khi máy tính đang Tắt, ở chế độ Ngủ hay ở chế độ Ngủ đông.</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Luôn bật cổng USB</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>Áp dụng</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>Áp dụng và đóng</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit phải chạy trong nền để các Hành động làm việc.</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>Kích hoạt</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>Chưa có Hành động nào được tạo. Bấm \"Thêm mới\" để tạo Hành động mới.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>Nếu chọn kích hoạt, các Hành động bên dưới sẽ tự động chạy. Khi có bất cứ điều kiện nào thay đổi, tất cả các Hành động sẽ được đánh giá lại theo thứ tự từ trên xuống dưới.\nChỉ có các Hành động thỏa điều kiện hiện tại sẽ được chạy.</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>Hành động</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Tên...</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>Thêm mới</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>Chưa có Phím tắt Hành động nào được tạo. Bấm \"Thêm mới\" để tạo Phím tắt Hành động mới.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>Phím tắt Hành động có sẵn trong menu chuột trái khi nhấp chuột trái vào icon trên Taskbar.</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>Phím tắt Hành động</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>Tên...</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>Đặt lại tên</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>Tất cả thay đổi được hoàn tác!</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>Hoàn tác</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>Thay đổi đã được lưu thành công!</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>Đã lưu</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>Tự động hóa</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>Thêm hành động</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>Tùy chỉnh</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>Đặc quyền</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>Không thực hiện thêm bất kì Hành động nào khác sau khi thực hiện xong Hành động này.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>Chạy ngay bây giờ</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>Hoàn thành với một số lỗi.</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>Chạy ngay bây giờ</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>Hoàn tất!</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>Chạy ngay bây giờ</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>Đang chạy...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>{0} bước</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>{0} bước</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>Ứng Dụng</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>Lúc bình minh</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>Lúc hoàng hôn</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>Vào lúc {0:D2}:{1:D2}</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>Chế độ</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>Chưa có tên</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>Tự động phát hiện khi một số tựa game khởi chạy và điều chỉnh hiệu suất CPU và GPU. Nhiệt độ và tiếng ồn từ quạt tản nhiệt có thể tăng.</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>Kích hoạt AI Engine</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Cài đặt chế độ Cân Bằng</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Chọn cách pin được sạc.</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Chế độ Pin</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>Chọn cách pin được sạc.</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>Chế độ Pin</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>Đã nối với nguồn điện, đang sạc...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>Đã nối với nguồn điện, đang không sạc</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>Nhiệt độ pin hiện tại.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>Nhiệt độ pin</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>Dung lượng pin hiện tại.</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>Dung lượng hiện tại</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>Số lần sạc xả.</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>Số lượng chu kỳ sạc</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>Dung lượng theo thiết kế.</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>Dung lượng gốc</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>Tốc độ pin sạc (+), hoặc xả (-).</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>Tốc độ sạc/xả</value>\n  </data>\n  <data name=\"BatteryPage_MinDischargeRate_Message\" xml:space=\"preserve\">\n    <value>Tốc độ pin sạc (+), hoặc xả (-) thấp nhất.</value>\n  </data>\n  <data name=\"BatteryPage_MinDischargeRate_Title\" xml:space=\"preserve\">\n    <value>Tốc độ sạc/xả thấp nhất</value>\n  </data>\n  <data name=\"BatteryPage_MaxDischargeRate_Message\" xml:space=\"preserve\">\n    <value>Tốc độ pin sạc (+), hoặc xả (-) cao nhất.</value>\n  </data>\n  <data name=\"BatteryPage_MaxDischargeRate_Title\" xml:space=\"preserve\">\n    <value>Tốc độ sạc/xả cao nhất</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>Ước tính thời gian dùng còn lại: {0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>Đang ước tính thời gian...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>Ngày đầu tiên sử dụng</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>Thời điểm pin được dùng lần đầu tiên.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>Dung lượng pin khi sạc đầy.</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>Dung lượng tối đa</value>\n  </data>\n  <data name=\"BatteryPage_BatteryHealth_Message\" xml:space=\"preserve\">\n    <value>Dung lượng sạc tối đa của pin.</value>\n  </data>\n  <data name=\"BatteryPage_BatteryHealth_Title\" xml:space=\"preserve\">\n    <value>Tình trạng pin</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>Sạc công suất thấp được kết nối</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>Thời điểm pin được sản xuất.</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>Ngày sản xuất</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>Thời gian kể từ khi laptop được ngắt khỏi nguồn điện.\nThời gian có thể không chính xác nếu laptop được sạc khi Ngủ hoặc Tắt.</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>Thời gian chạy trên pin</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>Pin</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>Hủy</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>Đóng</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>Xanh dương</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>Xanh lá</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>Đỏ</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Chọn chế độ hoạt động của GPU dựa trên cách bạn sử dụng máy tính và tình trạng nguồn điện.\nChuyển đổi giữa các chế độ có thể cần phải khởi động lại.</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Thay đổi chế độ sang {0} cần phải khởi động lại. Bạn có muốn khởi động lại ngay?</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Cần khởi động lại</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Chế độ hoạt động của GPU</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>Phím tắt Hành động</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>Tiếp tục</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>Sao chép tất cả</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>Đồ Họa</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>Khác</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>Nguồn</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>Trang chủ</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Ngắt GPU rời nếu bị kích hoạt ngoài ý muốn.\n\nCẢNH BÁO: Hành động sẽ không chạy đúng nếu màn hình laptop không bật hoặc chế độ Hybrid không được kích hoạt.</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ngắt GPU rời</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Thêm thời gian chờ trước khi thực hiện bước tiếp theo.</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Thời gian chờ</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>Xóa</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>Phiên bản BIOS</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>Đã chép vào bộ nhớ tạm.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" sao chép vào clipboard.</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>Đã sao chép!</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>Thiết bị</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo Support</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>Mã Máy</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>Nhà sản xuất</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>Mẫu máy</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>Số sê-ri</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>Về thiết bị của bạn</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>Ngày hết bảo hành</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>Ngày bắt đầu bảo hành</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>Bảo hành</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>Kích hoạt</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>Ngắt kích hoạt</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>Không hoạt động</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>Tắt app dùng GPU rời</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Tắt GPU rời nếu nó bị kích hoạt không cần thiết.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>Một màn hình được kết nối tới GPU Nvidia rời.</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>Không có tiến trình nào</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>Chế độ hoạt động</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>Không biết</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>Các tiến trình</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>Khởi động lại GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU rời</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi độ sáng màn hình laptop.\nThay đổi các chế độ ảnh hưởng đến độ sáng màn hình trên một số thiết bị. Hãy để bước này được thực hiện cuối cùng nếu nó chạy không đúng.\n\nCẢNH BÁO: Hành động có thể chạy không đúng nếu màn hình laptop tắt.</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Độ sáng màn hình</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>Ủng hộ qua</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>Phát triển và duy trì Lenovo Legion Toolkit tốn rất nhiều thời gian. Nếu bạn thích phần mềm này, bạn có thể tuỳ tâm hỗ trợ chút tiền cho việc hỗ trợ nó sau này.\n\nBấm vào logo PayPal bên dưới hoặc quét mã QR để ủng hộ qua PayPal.\n\nXin chân thành cảm ơn!</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>Ủng hộ</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>Chỉnh sửa</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>Bỏ tích những tần số quét mà bạn không muốn dùng khi dùng tổ hợp phím Fn+R.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>Hãy đảm bảo màn hình laptop bật. Lenovo Legion Toolkit không thể đổi tần số quét nếu màn hình laptop không bật.</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>Không có tần số quét nào được tìm thấy</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>Loại trừ các tần số quét</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>Thoát</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>Xuất ra</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>Chỉ sử dụng GPU tích hợp khi chạy trên nguồn pin và dùng cả hai GPU khi được nối với nguồn điện. Khi sử dụng sạc công suất thấp, hệ thống sẽ đổi sang Hybrid- chỉ GPU tích hợp.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>Hybrid- Tự động</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Cần khởi động để kích hoạt hoặc tắt chế độ này.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>Chỉ sử dụng GPU rời. Chế độ này tốt nhất cho hiệu năng đồ họa, nhưng Rất hao pin.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>GPU rời</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>Cả hai GPU sẽ được kích hoạt. Hệ thống sẽ tự đổi giữa hai GPU tùy vào sử dụng.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>Hybrid</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>Chế độ này chỉ kích hoạt khi GPU rời không hoạt động.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>Chỉ sử dụng GPU tích hợp. Chế độ này tối thiểu tiếng ồn và điện năng tiêu thụ.</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>Hybrid- Chỉ GPU tích hợp</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>Về các chế độ GPU</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>Cảm biến CPU</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>Tốc độ quạt</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Khởi động laptop khi bạn mở màn hình.</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Mở màn hình để khởi động</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>Khởi động laptop khi bạn mở màn hình.</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>Mở màn hình để khởi động</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Sử dụng các chức năng thứ 2 của hàng phím chức năng F1-F12 mà không giữ phím FN.</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Khóa phím Fn</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>Sử dụng các chức năng thứ 2 của hàng phím F1-F12 mà không cần giữ phím Fn.</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>Khóa phím Fn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>CẢNH BÁO!\nMột số laptop có thể nhận giá trị thấp hơn mức cho phép, nên bạn hãy cẩn thận. Chức năng này có thể khiến laptop hoạt động không ổn định. Nếu bạn không biết bạn đang làm gì, hãy giữ nguyên giá trị này tại 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>Minimum offset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>CẢNH BÁO!\nMột số laptop có thể nhận giá trị thấp hơn mức cho phép, nên bạn hãy cẩn thận. Chức năng này có thể khiến laptop hoạt động không ổn định. Nếu bạn không biết bạn đang làm gì, hãy giữ nguyên giá trị này tại 0.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>Maximum offset</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>KHÔNG THAY ĐỔI BẤT CỨ GIÁ TRỊ NÀO DƯỚI ĐÂY NẾU BẠN KHÔNG BIẾT CÔNG DỤNG CỦA CHÚNG!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>Nâng cao</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>Giới hạn công suất thời gian dài (Khi cả CPU và GPU chịu tải lớn)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>Giới hạn công suất thời gian dài</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>Giới hạn công suất thời gian ngắn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>Giới hạn nhiệt độ CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>Không thể áp dụng cài đặt</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>Không để tải cài đặt trước đó.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>Tốc độ quạt không chỉ được quyết định bởi 1 cảm biến nhiệt độ. Nó sẽ tự điều chỉnh tùy theo nhiệt độ cao nhất giữa CPU, GPU và nhiệt độ tản nhiệt. Giá trị nhiệt độ chính xác sẽ xuất hiện khi rê chuột trên mỗi mốc cài đặt.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>Cài đặt tốc độ quạt</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>CẢNH BÁO!\nCho quạt chạy 100% tốc độ trong thời gian dài có khả năng cao gây hư hỏng vòng bi quạt và ảnh hưởng tuổi thọ quạt.\nTHẬT CẨN THẬN KHI SỬ DỤNG LỰA CHỌN NÀY!!! KHÔNG NÊN SỬ DỤNG TÍNH NĂNG NÀY KHI CHƠI GAME!!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>Tốc độ quạt tối đa</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>Quạt</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>TDP tùy chỉnh cho GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>Giới hạn nhiệt độ GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Cài đặt Chế độ Tùy Chỉnh</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bật HDR (Dải tương phản động rộng) trên màn hình laptop.\n\nCẢNH BÁO: Hành động này sẽ không chạy nếu màn hình laptop tắt.</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>Bật HDR (Dải tương phản động rộng) trên màn hình laptop.</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>HDR không thể bật do cài đặt trong Windows.</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>Nhập vào</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>Thiết bị này không tương thích với Lenovo Legion Toolkit.</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>Không tìm thấy bàn phím tương thích</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím không thể được tùy chỉnh nếu Lenovo Vantage hoặc các chương trình con của nó đang chạy.</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage hoặc các dịch vụ của nó đang chạy</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>Thông tin</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>Hành động</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>Pin</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>Trang chủ</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>Ủng hộ</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>Bàn phím</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>Tải về</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>Cài đặt</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Có bản cập nhật mới!</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>Bản cập nhật {0} đã có sẵn!</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>Di chuyển lên</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>Di chuyển xuống</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>Không</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>Đã kết nối nguồn điện ngoài</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>Đã kết nối nguồn điện ngoài (công suất thấp)</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>Đã ngắt kết nối nguồn điện ngoài</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>Camera tắt</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>Camera bật</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock tắt</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock bật</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>Khóa phím Fn tắt</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>Khóa phím Fn bật</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>Microphone tắt</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>Microphone bật</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Numlock tắt</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Numlock bật</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>Độ sáng {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>Cấu hình {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>Touchpad tắt</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>Touchpad bật</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>Nguồn điện</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>Camera</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock và Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>Tắt thông báo của các phím tắt Fn, ví dụ như tắt microphone.\nBật tùy chọn này nếu có xung đột với các ứng dụng chạy toàn màn hình.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>Tắt tất cả thông báo</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>Khóa phím Fn</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>Microphone</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>Vị trí</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>Chế độ</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>Tần số quét</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart Key</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Thông báo</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>Khóa Touchpad</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>OK</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>Mở</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Cải thiện thời gian phản hồi cho màn hình laptop.</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>Cải thiện thời gian phản hồi cho màn hình laptop.</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>{0} đã được tải về!</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>Đã hoàn tất tải xuống</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>Đã có lỗi xảy ra</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>Máy chủ trả lỗi 404.</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>Không tìm thấy tệp tin</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>Kiểm tra kết nối internet của bạn.</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>Đã có lỗi xảy ra</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>Có bản cập nhật mới!</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>Gói cài đặt này đã hơn 1 năm tuổi.</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>Phiên bản</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Dưới đây là danh sách các gói cài đặt được đánh dấu là tương thích với laptop của bạn.\nLuôn kiểm tra rằng bạn cài đặt đúng các gói cài đặt mà bạn muốn cài.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>Kiểm tra Mã máy và Hệ điều hành được đặt đúng.</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>Đã có lỗi xảy ra</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>Thay đổi thứ tự sắp xếp, lọc kết quả, ẩn các gói cài đặt hoặc làm mới danh sách sẽ dừng quá trình tải về. Bạn có muốn tiếp tục?</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>Đang tải xuống</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>Lọc...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>Mã máy</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>Hệ điều hành</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>Chính (Khuyên Dùng)</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>Tương tự như trên Lenovo Vantage</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>Phụ</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>Tương tự như trên Lenovo PC Support</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>Danh mục</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>Ngày</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>Nguồn</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>Tải về</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>Dán</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Lựa chọn Chế độ.</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Chế độ</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>Chuyển đổi các Chế độ hiệu năng.\nBạn có thể chuyển đổi giữa các Chế độ với Fn+Q.</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>Cài đặt</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>Chế độ</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>Chế độ được lựa chọn có thể không hoạt động nếu không được kết nối nguồn điện ngoài.</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>Mặc định</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Power Plans</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi tùy chọn đèn nền bàn phím.</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>Độ sáng</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>Thiết lập 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>Thiết lập 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>Thiết lập 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>Thiết lập 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>Vùng 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>Vùng 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>Vùng 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>Vùng 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>Hiệu Ứng</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>Tốc độ</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Readme</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>Làm mới</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi tần số quét màn hình laptop.\n\nCẢNH BÁO! Hành động này sẽ không chạy nếu màn hình laptop tắt.</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tần số quét</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi tần số quét màn hình laptop.</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>Tần số quét</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>Đặt lại tên</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>Tôi sẽ khởi động lại sau</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>Khởi động lại ngay</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>Hoàn tác</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>Tham số</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>Đường dẫn tới tệp thực thi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Chạy một chương trình hoặc một script.\nHãy đảm bảo chương trình hoặc script của bạn chạy đúng trước.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Chạy</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>Lưu</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>Đang lưu...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>Chọn một hoặc nhiều hành động nhanh để thực hiện trong 1 vòng lặp</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>Không có hành động nhanh nào.</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>Mở ứng dụng này</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>Thay đổi màu sắc chủ đạo của ứng dụng.</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>Màu chủ đề</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>Chạy trong nền ngay khi khởi động Windows.</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>Tự động chạy</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone có thể đã được ngắt kích hoạt không đúng</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Không thể ngắt kích hoạt Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>Ngắt kích hoạt Legion Zone và các dịch vụ con mà không cần gỡ cài đặt.\nNên khởi động lại sau khi thay đổi tùy chọn này.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>Ngắt kích hoạt Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys có thể đã được ngắt kích hoạt không đúng</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Không thể ngắt kích hoạt Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>Ngắt kích hoạt Lenovo Hotkeys và các dịch vụ con mà không cần gỡ cài đặt.\nNếu ngắt kích hoạt, Legion Toolkit sẽ xử lý các phím tắt Fn.\nNên khởi động lại sau khi thay đổi tùy chọn này.</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>Ngắt kích hoạt Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage và/hoặc ImController đã không được ngắt đúng cách</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Không thể ngắt Lenovo Vantage và/hoặc ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>Ngắt kích hoạt Lenovo Vantage và các dịch vụ con mà không cần gỡ cài đặt.\nNên khởi động lại sau khi thay đổi tùy chọn này.</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>Ngắt kích hoạt Lenovo Vantage và ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone có thể đã được kích hoạt không đúng</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>Không thể kích hoạt Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys có thể đã được kích hoạt không đúng</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>Không thể kích hoạt Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage và/hoặc ImController có thể đã không được kích hoạt đúng cách</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>Không thể kích hoạt Lenovo Vantage và/hoặc ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>Bạn có thể loại trừ một số tần số quét, để chức năng Fn+R hữu dụng hơn.</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>Loại trừ các tần số quét</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>Chọn ngôn ngữ.</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>Ngôn ngữ</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>Luôn thu nhỏ về khay. Nhấp chuột trái vào biểu tượng để đóng.</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>Thu nhỏ khi đóng</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>Cài đặt thông báo nào sẽ được hiển thị.</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>Thông báo</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Power Plans</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>Gán hành động nhanh khi gõ đúp tổ hợp phím Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Hành động phụ cho phím tắt Fn+F9</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>Gán hành động nhanh khi gõ 1 lần tổ hợp phím Fn+F9.</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Hành động chính cho phím tắt Fn+F9</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>Đặt giao diện sáng hoặc tối tùy theo cài đặt hệ thống.</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>Giao diện</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>Cài đặt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi độ sáng đèn nền bàn phím.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Độ sáng đèn nền bàn phím</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>Thêm hiệu ứng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>Không thể áp dụng cấu hình</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>Cấu hình đèn nền không thể được áp dụng.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>Độ sáng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Bỏ chọn tất cả các vùng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>Hiệu ứng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>Không thể xuất cấu hình</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>Không thể xuất cấu hình</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>Cấu hình không thể được nhập vào</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>Không thể nhập cấu hình</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>Không có hiệu ứng nào được thêm.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>Khôi phục về mặc định</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>Chọn tất cả các vùng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>Đổi bố cục bàn phím</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>Hướng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>Màu sắc</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>Màu sắc</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>Hướng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>Hiệu Ứng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>Hiệu ứng này sẽ được áp dụng lên toàn bộ bàn phím và sẽ thay thế tất cả các hiệu ứng khác.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>Tốc độ</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>Thêm hiệu ứng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>Chỉnh sửa hiệu ứng</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi cấu hình đèn nền bàn phím.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Cấu hình đèn nền bàn phím</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>Tất cả các phím</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} vùng</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>Bình minh</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>Hoàng hôn</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>Thời gian</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>Cho phép chuyển đổi giữa GPU tích hợp và GPU rời.\nYêu cầu khởi động lại.</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>Bật tắt chế độ Hybrid cần phải khởi động lại. Bạn có muốn khởi động lại ngay?</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>Cần khởi động lại</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>Chế độ Hybrid</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Tắt Touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Khóa Touchpad</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>Tắt Touchpad.</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>Khóa Touchpad</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>Thử lại</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>Đã xảy ra lỗi ngoại lệ bất thường: {0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>Chưa có tên</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>Bạn có thể tiếp tục, tuy nhiên nhiều chức năng sẽ không có sẵn, gây lỗi hoặc hoạt động không ổn định.\n\nLogging sẽ được tự động bật, nếu bạn chọn tiếp tục.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>Hãy truy cập trang của dự án trên GitHub để biết thêm thông tin.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>Thư mục log</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>Mã máy</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit chưa được kiểm thử trên thiết bị của bạn.</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>Mẫu máy</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>Thiết bị không được hỗ trợ</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>Vendor</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>Cập nhật</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>Có cập nhật mới</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>Có gì mới?</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi độ sáng đèn nền bàn phím.</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Bạn có thể thay đổi độ sáng đèn nền phím bằng Fn+Space</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Tắt phím Win trên bàn phím laptop.</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Khoá phím Win</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>Chỉ hoạt động với bàn phím laptop.</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>Khóa phím Windows</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>Có</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>Microphone</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>Khi tắt, microphone sẽ bị tắt tiếng.</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Microphone</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Khi tắt, microphone sẽ bị tắt tiếng.</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>Độ phân giải</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi độ phân giải màn hình laptop.</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Độ phân giải</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi độ phân giải màn hình laptop.\n\nCẢNH BẢO! Hành động này sẽ không chạy nếu màn hình laptop tắt.</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi scaling màn hình laptop.</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Thay đổi scaling màn hình laptop.\n\nCẢNH BÁO! Hành động này sẽ không chạy nếu màn hình laptop tắt.</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>Màn hình</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Bạn có thể bật tắt đèn nền bàn phím với FN+Space.</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Đèn nền bàn phím</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Tắt hoặc bật đèn nền bàn phím.</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>Không tìm thấy gói tải xuống phù hợp</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>Chỉ hiện cập nhật</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>Tùy biến trang chủ</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>Tải</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>Tạo nhóm</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>Một số chức năng sẽ không xuất hiện trên Trang Chủ tùy vào trạng thái và cấu hình của Laptop.</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>Tùy chỉnh</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>Tắt các màn hình</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>Tắt tất cả các màn hình được kết nối. \nDi chuyển chuột hoặc bấm phím bất kỳ trên bàn phím để bật màn hình.</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tắt các màn hình</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Tắt tất cả các màn hình.</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>Sửa tên nhóm</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>Đèn logo Legion bật</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>Đèn logo Legion tắt</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>Đèn I/O bật</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>Đèn I/O tắt</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>Yêu cầu khởi động lại</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>Yêu cầu tắt máy</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>Khuyến nghị khởi động lại</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>Lưu &amp; Đóng</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Thiết lập sẵn chế độ Tùy Chỉnh</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Kích hoạt thiết lập sẵn trong chế độ Tùy Chỉnh.\nChỉ hoạt động khi chế độ Tùy Chỉnh đang bật.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>Tên thiết lập sẵn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>Tên</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>Thiết lập đang được sử dụng</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>Thư mục ứng dụng</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Dữ liệu</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Nhiệt độ</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Độ sáng màn hình hợp nhất</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Khi kích hoạt, màn hình sẽ giữ nguyên độ sáng khi chuyển giữa các Power Plan.</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Bản cập nhật {0} đã có sẵn!</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>Giới hạn điện năng đỉnh</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>Giới hạn điện năng cho APU sPPT</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>Lượng điện năng tối đa CPU có thể sử dụng liên tục.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>Lượng điện năng tối đa CPU có thể sử dụng trong thời gian ngắn.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>Lượng điện năng tối đa CPU có thể sử dụng tức thì.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>Lượng điện năng tối đa CPU có thể sử dụng khi cả CPU và GPU cùng được sử dụng hết công suất.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>Lượng điện năng tối đa CPU có thể sử dụng với một độ trễ nhất định.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Nhiệt độ tối đa CPU có thể đạt trước khi giảm xung và giảm điện năng tiêu thụ.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>Lượng điện năng GPU có thể sử dụng thêm vượt mức công suất tối đa tùy thuộc vào mức tiêu thụ điện của CPU cao hay thấp.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>Lượng điện năng GPU có thể sử dụng thêm vượt mức công suất cơ bản.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>Nhiệt độ tối đa GPU có thể đạt trước khi giảm xung và giảm điện năng tiêu thụ.</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>Mặc định</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>Giới hạn công suất thời gian ngắn</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>Thời gian CPU được phép tăng tốc và công suất được giới hạn bởi Giới hạn công suất thời gian ngắn. Khi hết thời gian, công suất CPU sẽ được giới hạn bởi Giới hạn công suất thời gian dài.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>Công suất tối đa khi có nguồn điện AC</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>Điểm kích hoạt việc chia sẻ công suất tối đa giữa CPU và GPU.</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>Tạo</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>Thêm hành động</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>Tạo Hành động</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>Chế độ</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>Thiết lập sẵn</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>GPU rời</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>Trạng thái nguồn điện</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>Pin</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>Chế độ</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>Tốc độ sạc/xả</value>\n  </data>\n  <data name=\"StatusTrayPopup_MinDischargeRate\" xml:space=\"preserve\">\n    <value>Tốc độ sạc/xả thấp nhất</value>\n  </data>\n  <data name=\"StatusTrayPopup_MaxDischargeRate\" xml:space=\"preserve\">\n    <value>Tốc độ sạc/xả cao nhất</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>Có bản cập nhật mới!</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>Chọn biểu tượng</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>Đổi biểu tượng</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>Mức pin yếu</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>Tùy chỉnh</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>Phát hiện chế độ ngủ S0 Low Power</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows báo rằng thiết bị này hỗ trợ Modern Standby. Dùng power plan khác ngoài Balance có thể gây ra lỗi ngoài ý muốn.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>Chọn Windows Power Plan được sử dụng tương ứng khi thay đổi Chế độ hiệu năng.</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>Nguồn</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>Tùy chỉnh Power Plan trong Windows Control Panel</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>Ngắt kích hoạt</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Nhập cấu hình đèn nền bàn phím</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Nhập và áp dụng cài đặt đèn nền bàn phím cho cấu hình hiện tại.</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>Đường dẫn</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>Sau {0}</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>Nhiều điểm kích hoạt...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>Cài đặt ép xung GPU rời</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Core Frequency Offset</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>Memory Frequency Offset</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>Ép xung GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>Tăng hiệu năng máy bằng cách ép xung GPU rời.</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Ép xung GPU</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Tăng hiệu suất máy bằng việc ép xung GPU rời.\n\nCẢNH BÁO: Hành động này có thể chạy không đúng nếu GPU rời không có sẵn.</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Đèn I/O</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Bật hoặc tắt đèn I/O phía sau laptop.</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Đèn I/O</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bật hoặc tắt đèn I/O phía sau laptop.</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>Đèn logo</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>Bật hoặc tắt đèn logo laptop.</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Đèn logo</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bật hoặc tắt đèn logo laptop.</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>Tối đa: {0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>Mức sử dụng</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>Core Clock</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>Nhiệt độ</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>Quạt</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>Memory Clock</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>Thời gian làm mới</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>Khởi động tức thì</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>Khởi động laptop khi kết nối với bộ sạc.</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Khởi động tức thì</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Khởi động laptop khi kết nối với bộ sạc.</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>Không thể thay đổi Power Mode</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>{0} Power mode không khả dụng nếu không kết nối với bộ sạc.</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>Cảm biến</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>Không thể thay đổi chế độ hoạt động của GPU</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>Nếu bạn không thấy kết quả như mong đợi, hãy thử thay đổi lại chế độ sau vài giây\nNếu GPU rời hoàn toàn không phản hồi, hãy khởi động lại máy tính xách tay của bạn.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>GPU rời hiện đang được sử dụng</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>GPU rời sẽ tự động ngắt kết nối khi không được sử dụng.</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>GPU rời hiện đang được sử dụng hoặc laptop đang không sử dụng pin</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>GPU rời sẽ tự động ngắt kết nối khi không sử dụng và laptop đang chạy bằng pin.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>Cài đặt của Chế độ Custom sẽ không được áp dụng chính xác khi Lenovo Vantage hoặc các dịch vụ của nó đang chạy.</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>Cài đặt của Chế độ Custom sẽ không được áp dụng chính xác khi Legion Zone hoặc các dịch vụ của nó đang chạy.</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>Đã kết nối với GPU rời</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>Đã ngắt kết nối GPU rời</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Chế độ hoạt động của GPU</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Chọn chế độ hoạt động của GPU dựa trên cách bạn sử dụng máy tính và tình trạng nguồn điện.\nChuyển đổi giữa các chế độ có thể cần phải khởi động lại.</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hybrid</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Cho phép chuyển đổi giữa GPU tích hợp và GPU rời.\nYêu cầu khởi động lại.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>Thời lượng</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>Cập nhật</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>Công suất Dynamic Boost nhường từ GPU sang CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>Đây là công suất bổ sung tối đa có thể được đưa cho CPU từ GPU dựa trên mức sử dụng CPU. Giá trị càng cao thì hiệu suất của các ứng dụng sử dụng CPU càng cao.</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>Logo khởi động</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>Tùy chỉnh hình ảnh Logo khởi động, hiển thị trong quá trình khởi động hệ thống.</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>Logo khởi động</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>Đang dùng logo khởi động mặc định</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>Đang dùng logo khởi động tùy chỉnh</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>Trạng thái</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>Khôi phục mặc định</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>Tùy chỉnh</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>Hành động</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>Nội dung thông báo</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Hiển thị thông báo</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>Thiết lập sẵn</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>Khóa Fn thông minh</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>Khóa Fn sẽ tạm thời bị tắt khi phím Alt, Ctrl hoặc Shift đang được nhấn giữ.</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>Tắt</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>Logo khởi động tùy chỉnh phải có độ phân giải chính xác {0}.\nCác định dạng hỗ trợ: {1}.</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>Sạc pin qua đêm</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>Khi được bật, thiết bị này sẽ sạc tới 80% khi sạc qua đêm và sạc đầy 100% vào thời điểm bạn sử dụng thiết bị này vào buổi sáng.</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Sạc pin qua đêm</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Khi được bật, thiết bị này sẽ sạc tới 80% khi sạc qua đêm và sạc đầy 100% vào thời điểm bạn sử dụng thiết bị này vào buổi sáng.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>Kích thước ảnh không hợp lệ.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>Định dạng ảnh không hợp lệ.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>Không thể mount phân vùng EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>Không thể cài đặt quyền ưu tiên với UEFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>Không đủ chỗ trống trên phân vùng EFI.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>Logo tùy chỉnh không thể được đặt: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>Logo mặc định không thể được đặt: {0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>Logo khởi động mặc định được đặt.</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>Logo khởi động tùy chỉnh được đặt.</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>Tên mạng (SSID)</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>Sao chép tên mạng hiện tại</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>Bỏ trống cho bất kì mạng Wi-Fi nào.</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>Dùng chung dữ liệu tốc độ quạt, nhiệt độ pin,... với HWiNFO64. Bạn có thể cần phải khởi động lại HWiNFO64 sau khi thay đổi tùy chọn này.</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>Tích hợp</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>Cài đặt</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>Thông tin</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>Thư mục tải xuống</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>Mở thư mục tải xuống</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>Tải xuống</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>Mở README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>Thiết lập sẵn</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>Làm mới</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>Xóa</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>Chu kỳ (phút)</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>Đặt lại bộ đếm cho \"Thời gian chạy trên pin\" ở mục Pin mỗi khi khởi động lại.</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>Đặt lại \"Thời gian chạy trên pin\" khi khởi động</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Tắt Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Bật Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>Chạy im lặng</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>Đợi cho đến khi hoàn thành</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>Thực thi ứng dụng mà không hiển thị cửa sổ lệnh.</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>Đợi cho đến khi chương trình hoặc tập lệnh thực thi xong</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Khi tắt tiếng, tất cả các đầu ra âm thanh đang sử dụng cũng sẽ bị tắt.</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Loa ngoài</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>Thu nhỏ về khay hệ thống</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>Luôn luôn thu nhỏ về khay hệ thống thay vì thanh tác vụ.</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Chế độ nguồn</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>Đổi sang Chế độ Tùy chỉnh khi Fn+Q</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>Cho phép chuyển đổi nhanh sang Chế độ Tùy chỉnh khi Fn+Q.</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>Đồng bộ hóa Chế độ Năng lượng</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>Tự động thay đổi Windows Power Plan hoặc Windows Power Mode khi thay đổi các chế độ năng lượng.</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Chế độ nguồn</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>Chọn Windows Power Plan được sử dụng tương ứng khi thay đổi Chế độ hiệu năng.</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>Lỗi đã xảy ra khi đọc thông tin thiết bị.</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>Lặp lại</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>Bỏ qua thời gian chờ</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>Xóa</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>Bắt đầu ghi</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>Dừng Ghi</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>Không lặp lại</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit phải chạy trong nền để Macros làm việc.</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>Kích hoạt</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>Bạn có thể ghi lại các Macro và gọi chúng qua bàn phím số.</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Macro</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Bật hoặc tắt macros.</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>Ngắt nếu phím khác được bấm</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>Ẩn</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>Ẩn tất cả</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>Thiết bị</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>Bỏ chọn tất cả</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>Chọn tất cả</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>Chỉ bàn phím</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>Bàn phím và chuột</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>Tất cả đầu vào</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>Tùy chọn ghi</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>Quá trình ghi macro sẽ bắt đầu sau 3 giây...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>Đang ghi macro...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>Nhấn ESC để dừng.</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>Chỉ hiển thị các thiết bị đã chọn</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>Chỉ hiển thị các thiết bị gắn ngoài</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>Chỉ hiển thị các thiết bị đang kết nối</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>CLI</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>Cho phép điều khiển chương trình qua dòng lệnh với Giao diện dòng lệnh.</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>Thêm CLI vào PATH</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>Thêm CLI vào biến môi trường PATH của người dùng.</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>Nhiệt độ</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>Chọn đơn vị đo cho cảm biến nhiệt độ.</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys đang chạy ngầm.</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone đang chạy ngầm.</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage và/hoặc ImController đang chạy ngầm trong hệ thống.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>Hiển thị thông báo lên tất cả các màn hình đang kết nối với máy.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>Hiện thông báo lên mọi màn hình</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>Kiểm tra</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>Đang kiểm tra cập nhật...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>Kiểm tra Cập Nhật</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>Cập nhật</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>API đã đạt rate limit, xin vui lòng kiểm tra cập nhật sau.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>Lỗi khi kiểm tra cập nhật</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>Đã xãy ra lỗi, xin hãy thử lại sau.</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>Không có bản cập nhật mới</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>Tự động kiểm tra cập nhật</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>Không tìm thấy danh mục cập nhật</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>Thử kiểm tra cập nhật từ nguồn khác.</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>Đã có lỗi xảy ra</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>Kiểm tra kết nối internet của bạn.</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Phát âm thanh</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Hỗ trợ các định dạng âm thanh phổ biến như .wav hoặc .mp3.</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Phím tắt Hành động</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>Chạy một hành động đã lưu.</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\" xml:space=\"preserve\">\n    <value>Luôn hiện thông báo lên trên cùng</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\" xml:space=\"preserve\">\n    <value>Thông báo sẽ luôn hiện đè lên trên cửa sổ hay desktop.\nChức năng này không ảnh hưởng các cửa sổ ở chế độ toàn màn hình, nhưng thông báo sẽ không thể bấm vào được.</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.zh-hans.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>拯救者工具箱 Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>Build</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>在 GitHub 上查看最新版本</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>项目链接</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>在 GitHub 上查看项目主页</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>第三方依赖库</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>关于</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>Translated by Karl Lee. 由凌卡Karl汉化，开源社区校正。</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>添加</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>新建</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>在电脑关机、睡眠或休眠时保持 USB 接口供电。\n一般为笔记本侧面标有电池标志的 USB 接口受此项控制。</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>保持 USB 供电</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>在电脑关机、睡眠或休眠时保持 USB 接口供电。\n一般为笔记本侧面标有电池标志的 USB 接口受此项控制。</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>保持 USB 供电</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>拯救者工具箱 Lenovo Legion Toolkit</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>应用</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>应用并关闭</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>只有在本程序运行时，自动化才可生效。</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>启用自动化</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>当前没有自动化脚本，请点击 “新建” 来新建一项。</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>启用自动化后，当设备的状态发生改变时，本应用将会按顺序检查各项自动化是否符合条件后，执行相关操作。</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>自动化</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>点此输入名称</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>新建</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>没有快捷操作，请点击 “新建” 来新建快捷操作。</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>你可以在系统托盘中本应用的右键菜单里使用快捷操作。</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>快捷操作</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>点此输入名称</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>重命名</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>所有修改已被重置</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>重置</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>所有修改已成功保存</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>已保存</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>自动化</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>添加步骤</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>配置</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>独占此条件</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>当触发此条件后，仅运行当前任务，不运行其它符合条件的任务</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>立刻运行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>运行出错</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>立刻运行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>运行成功</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>立刻运行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>运行中...</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>共 {0} 个步骤</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>共 {0} 个步骤</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>应用列表</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>日出时</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>日落时</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>将在 {0:D2}:{1:D2} 运行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>性能模式</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>未命名</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>启用 Legion AI 引擎以自动检测游戏并调整 CPU/GPU 性能。可能会增加机身温度和风扇噪音。</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>启用 Legion AI 引擎</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>均衡模式设置</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>选择电池充电模式</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>充电模式</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>选择电池充电模式，养护模式将限制电池充电电量以提高寿命，快充模式将使用更高的功率充电。</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>充电模式</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>已插入电源适配器，充电中...</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>已插入电源适配器，未充电...</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>当前电池温度。</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>电池温度</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>当前电池容量。</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>当前容量</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>电池充放电循环次数。</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>循环次数</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>电池设计容量。</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>设计容量</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>【+】为电池充电，【-】为电池放电。</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>电池充放电功率</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>预估剩余时间：{0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>剩余时间...</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>电池首次使用时间</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>代表电池被第一次使用的时间。</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>当电池充满电时的容量</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>满电容量</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>已插入较低功率电源适配器</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>电池的生产日期。</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>生产日期</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>笔记本断开电源适配器的时间。\n如果在关机或休眠时充电，可能会导致此时间不准确。</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>电池使用时间</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>电池</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>蓝色 (B)</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>绿色 (G)</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>红色 (R)</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>根据你的使用场景选择显卡工作模式。\n混合模式与独显模式互相切换后需要重启生效。</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>切换至 {0} 需要重启，现在重启吗？</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>需要重启</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>显卡工作模式</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>快捷操作</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>继续</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>复制全部</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>图形</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>其他</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>电源</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>主页</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>在不需要时休眠独立显卡。\n\n警告：在非混合模式或笔记本内置屏幕关闭的情况下此功能将不起作用。</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>休眠独立显卡</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>运行下一步前的延迟。</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>延迟</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS 版本</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>已复制文本到剪贴板。</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>\"{0}\" 已复制到剪切板。</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>已复制！</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>设备信息</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>点击访问联想服务网站查看详细保修信息</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>设备代号</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>制造商</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>设备型号</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>序列号</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>关于设备</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>结束时间</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>开始时间</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>保修信息</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>活动中</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>强制休眠显卡</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>休眠中</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>关闭占用应用</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>在不需要时强制休眠显卡，可能会导致应用崩溃。\n请尽可能通过手动关闭占用进程来解除独立显卡占用。</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>有显示器正在使用此显卡。</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>无进程</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>性能状态</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>未知</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>正在使用显卡的进程</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>重启显卡</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>独立显卡</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>更改内置屏幕亮度。\n在部分设备上，切换性能模式后屏幕亮度也会变化，因此请确保把这一步放到最后，否则可能无法正常执行。\n\n警告：当内置显示器关闭时此操作将不起作用。</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>显示器亮度</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>使用PayPal捐赠</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>开发与维护联想拯救箱需要大量时间。如果你喜欢这个软件，你可以通过赞助来支持软件的开发。\n\n点击下方的 PayPal 图标或扫描二维码使用 PayPal 赞助。\n\n万分感谢！</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>赞助</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>编辑</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>取消选择某个刷新率你在使用 Fn + R 快捷键时不想使用的刷新率。</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>请确保笔记本屏幕已打开，否则本软件无法获取刷新率信息。</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>未发现可调节刷新率</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>排除刷新率</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>退出</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>导出</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>使用电池时只使用核显，连接电源适配器时同时使用核显与独显。当连接非标准（较低功率）电源适配器时，系统会切换到混合核显模式。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>混合自动模式</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>切换到此模式需要重启。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>仅使用独立显卡，此模式将会释放全部显卡性能，但会显著增加功耗。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>独显直连模式</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>核显与独显都将启用，系统将自动决定使用哪一个。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>混合模式</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>这种模式只有在独显停用时才会生效。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>仅使用核显，将获得最长的续航与最小的风扇噪音。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>混合核显模式</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>关于显卡工作模式</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU 传感器</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>风扇转速</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>显卡 #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>转</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>打开盖子时将自动开启笔记本。</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>开盖启动</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>打开盖子时将会自动开启笔记本。</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>开盖启动</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>开启后将无需按下 Fn 键即可触发功能，\n触发原 F1 至 F12 键需按下 Fn 键。</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>锁定 Fn 键</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>开启后将无需按下 Fn 键即可触发功能，\n触发原 F1 至 F12 键需按下Fn键。</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>锁定 Fn 键</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>警告！\n一些笔记本可以使用更低的功耗限制，但【一定小心】，这个选项可能会导致未知后果！除非你了解【此选项的准确意义】，否则请保持这个选项为 0。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>最小功耗限制偏移量</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>警告！\n一些笔记本可以使用更高的功耗限制，但【一定小心】，这个选项可能会导致未知后果！除非你了解【此选项的准确意义】，否则请保持这个选项为 0。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>最大功耗限制偏移量</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>请谨慎修改下方选项！在你不知道下方选项的准确意义前，请勿修改！</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>高级选项</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>长时负载功耗限制 (Cross Loading)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>长时负载功耗限制 (PL1)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>短时睿频功耗限制 (PL2)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPU 温度限制</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>无法应用设置</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>无法加载设置</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>风扇速度不是仅仅由一个温度传感器决定的。它将根据 CPU、GPU 和散热器温度之间的最高值决定转速。把鼠标悬停在滑块上时，可以看到准确的数值。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>风扇曲线</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>警告！\n风扇处于长时间满转速的情况下将会减少其寿命。\n【请谨慎使用此选项！】</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>使风扇满转速</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>风扇</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>可配置 TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>动态加速功率 (DynamicBoost)</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>显卡温度限制</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>显卡</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>自定义模式设置</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>为内置屏幕启用高动态范围显示（HDR）。\n\n警告：如内置屏幕关闭则本项无法正常运行。</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>为内置屏幕启用高动态范围显示（HDR）。</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Windows 设置已阻止启用 HDR。</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>导入</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>此设备可能与拯救者工具箱不兼容。</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>未发现兼容的键盘</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>键盘背光</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>由于 Lenovo Vantage 或其服务正在运行导致冲突，无法在此控制键盘背光。</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage 与之相关服务仍在运行</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>关于</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>自动化</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>电池</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>控制台</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>赞助</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>键盘</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>驱动下载</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>设置</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>新版本可用！</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>发现新版本 {0}！</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>下移</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>上移</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>否</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>电源适配器 已插入</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>电源适配器（较低功率） 已插入</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>电源适配器 已拔出</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>摄像头 关</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>摄像头 开</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>Caps Lock 关</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>Caps Lock 开</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>锁定 Fn 键 关</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>锁定 Fn 键 开</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>麦克风 关</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>麦克风 开</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>Num Lock 关</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>Num Lock 开</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>背光 {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>键盘背光亮度 {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>灯效主题 {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>触摸板 关</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>触摸板 开</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>背光 {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>电源适配器</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>摄像头</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock 和 Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>禁用麦克风静音等 Fn 键操作的弹窗。\n如果弹窗与全屏应用有冲突，请启用此选项。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>不要显示弹窗</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>锁定Fn键</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>键盘背光</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>麦克风</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>位置</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>性能模式</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>刷新率</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart Key</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>提示弹窗</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>触摸板锁定</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>打开</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>开启后通过加压超频提升内置屏幕响应速度，可能会导致屏幕过冲产生鬼影。</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>OverDrive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>开启后通过加压超频提升内置屏幕响应速度，\n可能会导致屏幕过冲产生鬼影。</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>OverDrive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>已下载 {0}</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>下载完成</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>什么地方出错了(っ °Д °;)っ</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>服务器返回 404</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>似乎未找到文件</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>请确保你的网络正常</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>什么地方出错了(っ °Д °;)っ</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>有新版本可更新！</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>此驱动包的发布日期距今已超过一年</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>下面是根据你的电脑型号获取的软件列表，\n请确保你安装的软件对应型号与版本正确。\n注：下列软件与驱动来自联想国际站点，不一定适用于在中国大陆销售的机型。</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>请确保机器类型与系统类型设置正确！</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>什么地方出错了(っ °Д °;)っ</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>改变排序、搜索关键词、隐藏软件包或刷新列表将停止下载。确定吗？</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>下载进行中</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>搜索...</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>设备代号</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>系统</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>首选来源（推荐）</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>与 Lenovo Vantage 中的驱动一致</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>备用来源（第三方）</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>与联想海外支持网页的驱动一致</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>类别</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>日期</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>名字</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>来源</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>驱动下载</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>粘贴</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>选择性能模式</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>性能模式</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>选择性能模式\n你可以通过快捷键 Fn+Q 快速更改。</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>设置</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>性能模式</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>在未插入电源适配器的情况下，性能模式可能无法正常生效。</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>默认</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Windows 电源计划</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>调节键盘背光预设</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>键盘背光</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>亮度</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>预设 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>预设 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>预设 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>预设 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>区域 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>区域 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>区域 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>区域 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>效果</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>速度</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>Readme</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>刷新</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>切换内置屏幕刷新率。\n\n警告！当内置屏幕关闭时此选项无法生效。</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>刷新率</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>切换内置屏幕刷新率。</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>刷新率</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>重命名</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>稍后自行重启</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>立刻重启</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>重置</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>参数</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>执行路径</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>运行脚本或应用\n请确保你的脚本能正常运行。</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>运行</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>保存</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>保存中...</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>选择单个或多个快捷操作来循环执行。</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>暂无快捷操作。</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>显示本应用</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>改变应用的主题色。</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>主题色</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>开启自启并最小化到托盘。\n如遇到无法控制等问题请选择【延迟启动】以等待联想服务完全加载。</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>开机启动</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone 可能没有被正确禁用。</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>无法禁用 Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>禁用 Legion Zone 服务且无需卸载。\n修改此项后推荐重启电脑。</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>禁用 Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys 可能没有被正确禁用。</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>无法禁用 Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>禁用 Lenovo Hotkeys 且无需卸载。\n禁用后本应用将接管 Fn 快捷功能。\n修改此项后建议重启电脑。</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>禁用 Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage 与 ImController 可能没有被正确禁用。</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>无法禁用 Lenovo Vantage 与 ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>禁用 Lenovo Vantage 与 ImController 且无需卸载。\n修改此项后推荐重启电脑。</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>禁用 Lenovo Vantage 与 ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone 可能没有被正确启用。</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>无法启用 Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys 可能没有被正确启用。</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>无法启用 Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage 与 ImController 可能没有被正确禁用。</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>无法启用 Lenovo Vantage 与 ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>你可以排除某个刷新率，使 Fn+R 快捷键切换更快速。</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>排除刷新率</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>选择语言</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>语言</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>总是最小化到托盘。开启后需右键点击托盘图标点击关闭以关闭软件。</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>关闭时最小化</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>选择显示哪些通知弹窗。</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>提示弹窗</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>Windows 电源计划</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>选择双击 Fn + F9 触发的快捷操作。</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key 第二快捷动作</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>选择单击 Fn + F9 触发的快捷操作。</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key 快捷动作</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>选择浅色或深色模式，亦或者跟随系统。</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>主题</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>设置</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>调节键盘背光亮度</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>键盘背光亮度调节</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>新增灯效主题</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>无法应用此主题</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>无法应用灯效主题。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>亮度</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>取消全选所有灯区</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>效果</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>无法导出配置文件</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>无法导出配置文件</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>无法导入配置文件</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>无法导入配置文件</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>没有灯效主题。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>重置为默认配置</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>全选所有灯区</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>切换键盘布局</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>方向</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>颜色</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>颜色</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>方向</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>方向动效</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>此动效将被应用至整个键盘并替换其他动效。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>速度</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>新增灯效主题</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>编辑灯效主题</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>切换键盘背光主题。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>键盘背光主题</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>全部键区</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} 键区</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>日出</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>日落</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>时间</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>混合模式允许在核显与独显之间切换。\n关闭后即为独显直连模式，两者之间切换需要重启生效。</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>更改混合模式需要重新启动。你想现在重启吗？</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>需要重启</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>混合模式</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>停止使用触摸板</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>锁定触摸板</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>停用触摸板。推荐在使用鼠标时开启以避免误触。</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>锁定触摸板</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>重试</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>发生意外异常：\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>未命名</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>你可以选择继续，风险自负，但请谨记，一些功能可能无法正常使用。\n\n如果你选择继续，将自动启动日志记录。</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>请查看 GitHub 上的项目页面以了解更多信息。</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>日志文件夹</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>设备类型</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion Toolkit 尚未在您的设备上经过测试。</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>设备型号</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>不支持的设备</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>制造商</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>有新的更新！</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>更新日志</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>调节键盘背光</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>键盘背光</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>你可以通过快捷键 Fn + 空格 调节键盘背光开关与亮度。</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>键盘背光</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>禁用内置键盘上的 Win 键。</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>禁用 Win 键</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>仅在内置键盘上生效。开启后 Win 键按下不再有反应。</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>禁用 Win 键</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>麦克风</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>关闭此项将静音所有可用的麦克风。</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>麦克风</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>关闭此选项将静音所有可用的麦克风。</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>分辨率</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>切换内置屏幕分辨率。</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>分辨率</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>切换内置屏幕分辨率。\n\n警告！当内置屏幕关闭时此选项无法生效。</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>切换内置屏幕缩放。</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>切换内置屏幕缩放。\n\n警告！当内置屏幕关闭时此选项无法生效。</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>显示</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>键盘背光</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>你可以使用快捷键 Fn + 空格 来开关背光。</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>键盘背光</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>开关背光。</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>没有匹配的结果</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>仅显示有更新的驱动/软件</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>自定义控制台</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>重置</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>新建组</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>点此输入名称</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>不同设备的功能支持情况各不相同，所以一些功能可能不会显示在控制台中。</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>自定义</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>关闭显示器</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>关闭所有可用的显示器。\n移动鼠标或按下键盘按键即可唤醒屏幕。</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>关闭显示器</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>关闭所有可用的显示器。</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>修改分组名称</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>点此输入名称</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>拯救者 LOGO 灯 开</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>拯救者 LOGO 灯 关</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>接口指示灯 开</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>接口指示灯 关</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>需要重启</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>需要关机</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>需要重启以更新</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>保存并关闭</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>自定义模式预设</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>切换至自定义模式的某个预设。\n该设置只有在启用自定义模式时才会生效。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>预设名称</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>点此输入名称</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>预设</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>应用数据文件夹</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Data</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temp</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>固定显示亮度</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>启用后在不同电源计划间切换将保持亮度不变。</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>发现新版本 {0}！</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>峰值功耗限制</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU 慢速功耗追踪限制（sPPT）</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>CPU 持续负载功耗限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>CPU 短时峰值功耗限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>CPU瞬时功耗限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>当 CPU 与 GPU 同时最大负载时，CPU 的最大功耗限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>CPU 在一定的延迟后可以达到的最大功耗限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>在降频之前 CPU 的温度限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>基于 CPU 的功耗，最大可以借用给 GPU 的额外功率。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>在基本功耗的基础上，可以分配给 GPU的额外功率量。 </value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>在降频前，GPU 的温度限制。</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>默认</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>短时睿频功耗限制</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>CPU 被允许使用短期功率限制进行加速的时间量。当 Tau 过期时，将使用长期功率限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>插电情况下总处理器功耗目标。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>CPU 触发 GPU 动态功耗调整的点。</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>创建</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>添加步骤</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>新建</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>性能模式</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>预设</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>独立显卡</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>性能状态</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>电池</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>充电模式</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>电池充放电功率</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>新版本可用！</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>选择图标</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>更改图标</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>电池电量低</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>配置</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>检测到 S0 低功耗空闲模型</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>检测到本设备支持新式待机（Modern Standby）。使用 “平衡” 以外的电源计划可能会导致意外问题。</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>选择在电源模式改变时应用的 Windows 电源计划。</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>电源</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>打开 Windows 控制面板中的电源计划选项</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>导入键盘背光主题。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>导入并应用键盘背光配置到当前的主题。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>路径</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>在 {0} 之后</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>多个触发器...</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>独立显卡超频设置</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>核心频率偏移量</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>显存频率偏移量</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>超频独立显卡</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>超频独立显卡以提升性能。</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>超频独立显卡</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>超频独立显卡以提升性能。\n\n警告：当独立显卡弹出后此操作将不起作用。</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>接口指示灯</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>打开或关闭位于设备后方的接口指示灯。</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>接口指示灯</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>打开或关闭位于设备后方的接口指示灯。</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>拯救者 LOGO 灯</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>打开或关闭位于设备后方的拯救者 LOGO 灯。</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>拯救者 LOGO 灯</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>打开或关闭位于设备后方的拯救者 LOGO 灯。</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>最大：{0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>利用率</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>核心频率</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>温度</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>风扇</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>显存频率</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>刷新间隔</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>通电自启</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>电源口接入电源后立即开机。</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>通电自启</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>电源口接入电源后立即开机。</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>无法更改性能模式</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>在未接入全功率电源适配器时无法启用{0}</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>硬件监控信息</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>当前无法切换显卡工作模式</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>如果独显未启用，请在几秒钟后再次尝试更改模式。\n如果仍未有反应，请重新启动设备。</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>独立显卡当前被占用</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>独立显卡在解除占用后将自动停用。</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>独立显卡当前被占用或设备当前并非电池供电</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>独立显卡在解除占用或设备处于电池供电的状态下将自动停用。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>自定义设置在 Lenovo Vantage 及其服务运行时将不会生效。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>自定义设置在 Legion Zone 及其服务运行时将不会生效。</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>独立显卡已连接</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>独立显卡已断开连接</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>显卡工作模式</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>根据你的使用场景选择显卡工作模式。\n各混合模式与独显直连模式互相切换后需要重启生效。</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>混合模式</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>混合模式允许在核显与独显之间切换。\n关闭后即为独显直连模式，两者之间切换需要重启生效。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>持续时间</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>新版本更新提醒</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>GPU 至 CPU Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>此为根据 CPU 的使用情况，能从 GPU 借用给 CPU 的额外功率。值越大，则使用 CPU 计算较多的应用性能越好。</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>自定义开机画面</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>自定义在启动阶段所展示的图案。</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>自定义开机画面</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>已设置为默认开机画面</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>已设置为自定义开机画面</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>当前状态</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>重置为默认设置</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>自定义</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>自动化</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>提示弹窗文本</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>显示提示弹窗</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>预设</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>智能锁定 Fn 键</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>按下 Alt、Ctrl 或 Shift 键时，Fn 将会暂时解除锁定。</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>关闭</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>替换的自定义开机画面图标的图片文件分辨率必须准确地为 {0} 。\n支持的图片文件格式为：{1}。</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>隔夜电池充电</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>启用该功能后，当您插上电源过夜时，该设备将充电至 80%，并在您早上使用该设备时充电至 100%。</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>隔夜电池充电</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>启用该功能后，当您插上电源过夜时，该设备将充电至 80%，并在您早上使用该设备时充电至 100%。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>无效的图像分辨率。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>无效的图像格式。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>无法挂载 EFI 分区。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>无法设置 UEFI 权限。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>EFI 分区空间不足。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>自定义开机画面设置失败：{0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>预设开机画面设置失败：{0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>已设置为默认开机画面。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>已设置为自定义开机画面。</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>网络名称（SSID）</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>复制当前的网络名称</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>将任何 Wi-Fi 网络留空。</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>将风扇速度，电池温度等数据和 HWiNFO64 共享。切换此选项后也许需要重启 HWiNFO64。</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>应用集成</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>设置</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>关于</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>下载文件夹</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>打开下载文件夹</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>下载</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>打开 README</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>预设</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>刷新</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>删除</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>设置执行间隔（分钟）</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>在系统开机或重新启动时重置【电池】下的电池使用时间计数器。</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>启动时重置电池使用时间</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>关闭 Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>打开 Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>静默运行</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>等待运行结束</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>不新建命令行窗口运行命令行应用。</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>等待至程序或脚本运行结束</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>静音此项将静音所有可用的音频输出设备。</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>扬声器</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>最小化至托盘</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>总是最小化到托盘，而非任务栏。</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Windows 电源模式</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>使用 Fn+Q 切换至自定义模式</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>使用 Fn+Q 来快速切换至自定义模式。</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>电源模式同步</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>在切换性能模式时，同步自动切换 Windows 电源计划或 Windows 电源模式。</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Windows 电源模式</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>选择在电源模式改变时应用的 Windows 电源计划。</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>获取硬件信息时遇到错误。</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>自定义宏</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>键盘宏</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>重复次数</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>忽略延时</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>清除</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>记录</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>停止记录</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>不重复</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>只有在本程序运行时，键盘宏才可生效。</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>启用键盘宏</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>你可以录制一系列按键并使用键盘上的数字小键盘调用它们。</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>宏</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>启用或禁用宏。</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>当按下其他按键后中断</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>隐藏</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>隐藏全部</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>设备</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>全不选</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>全选</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>仅键盘</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>键盘和鼠标按键</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>所有输入</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>录制选项</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>录制将在三秒后开始…</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>正在录制...</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>按 ESC 键停止录制。</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>仅显示被选中的设备</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>仅显示可移动设备</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>仅显示被连接的设备</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>命令行界面</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>启用命令行界面，允许使用命令行进行控制。</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>将命令行界面添加至 PATH 变量</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>将命令行界面添加至用户 PATH 环境变量中。</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>温度</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>选择温度传感器使用的单位。</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys 正在后台运行。</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone 正在后台运行。</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage 和 / 或 ImController 正在后台运行。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>在所有连接到设备的显示器上显示提示弹窗。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>在所有显示器上显示提示弹窗</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>检查</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>正在检查更新...</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>检查更新</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>已达到 API 访问频率上限，请稍后再试。</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>检查更新失败</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>出现了一些错误，请稍后再试。</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>未发现更新</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>自动检查更新</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>未找到更新日志</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>尝试从其它源获取更新。</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>出现了一些错误</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>请确保你的网络连接正常。</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>播放音频</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>支持如 wav 和 mp3 等常规音频格式。</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>快捷操作</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>运行一个保存的快捷操作。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\" xml:space=\"preserve\">\n    <value>通知始终置顶</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\" xml:space=\"preserve\">\n    <value>始终将通知显示在顶部。\n这不会影响其他全屏窗口，但您将无法点击这些通知。</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Resources/Resource.zh-hant.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 xmlns=\"\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:msdata=\"urn:schemas-microsoft-com:xml-msdata\" id=\"root\">\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=\"AboutPage_AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion 工具套件</value>\n  </data>\n  <data name=\"AboutPage_Build\" xml:space=\"preserve\">\n    <value>構建</value>\n  </data>\n  <data name=\"AboutPage_LatestReleaseOnGitHub\" xml:space=\"preserve\">\n    <value>在 GitHub 上檢視最新版本</value>\n  </data>\n  <data name=\"AboutPage_Links\" xml:space=\"preserve\">\n    <value>連結</value>\n  </data>\n  <data name=\"AboutPage_ProjectWebsiteOnGitHub\" xml:space=\"preserve\">\n    <value>在 GitHub 上檢視專案</value>\n  </data>\n  <data name=\"AboutPage_ThirdPartyLibraries\" xml:space=\"preserve\">\n    <value>第三方資料庫</value>\n  </data>\n  <data name=\"AboutPage_Title\" xml:space=\"preserve\">\n    <value>關於</value>\n  </data>\n  <data name=\"AboutPage_TranslationCredit\" xml:space=\"preserve\">\n    <value>翻譯多數由 flandretw 提供，開源社群校正。</value>\n    <comment>Please replace this text with something like \"Translated into &lt;language&gt; by &lt;your name&gt;.\"</comment>\n  </data>\n  <data name=\"AboutPage_Version\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"Add\" xml:space=\"preserve\">\n    <value>新增</value>\n  </data>\n  <data name=\"AddNew\" xml:space=\"preserve\">\n    <value>新增</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Message\" xml:space=\"preserve\">\n    <value>標有電池標誌的 USB 受此項控制，在電腦關機、睡眠或休眠時保持 USB 供電。</value>\n  </data>\n  <data name=\"AlwaysOnUSBControl_Title\" xml:space=\"preserve\">\n    <value>保持 USB 供電</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>標有電池標誌的 USB 受此項控制，在電腦關機、睡眠或休眠時保持 USB 供電。</value>\n  </data>\n  <data name=\"AlwaysOnUsbAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>保持 USB 供電</value>\n  </data>\n  <data name=\"AppName\" xml:space=\"preserve\">\n    <value>Lenovo Legion 工具套件</value>\n  </data>\n  <data name=\"Apply\" xml:space=\"preserve\">\n    <value>套用</value>\n  </data>\n  <data name=\"ApplyAndClose\" xml:space=\"preserve\">\n    <value>套用 &amp; 關閉</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnable_Message\" xml:space=\"preserve\">\n    <value>自動化功能一定要在 Lenovo Legion 工具套件執行時才可以運作。</value>\n  </data>\n  <data name=\"AutomationPage_ActionsEnabled_Title\" xml:space=\"preserve\">\n    <value>啟用</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Empty\" xml:space=\"preserve\">\n    <value>尚未定義功能。點擊「新增」以新增新的功能。</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Message\" xml:space=\"preserve\">\n    <value>如果啟用，此功能將自動地執行。當狀態變更時，所有功能將按順序檢查各項自動化是否符合條件。</value>\n  </data>\n  <data name=\"AutomationPage_Actions_Title\" xml:space=\"preserve\">\n    <value>功能</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Placeholder\" xml:space=\"preserve\">\n    <value>名稱……</value>\n  </data>\n  <data name=\"AutomationPage_AddManualPipeline_Title\" xml:space=\"preserve\">\n    <value>新增</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Empty\" xml:space=\"preserve\">\n    <value>尚未定義快捷功能。點擊「新增」以建立新的快捷功能。</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Message\" xml:space=\"preserve\">\n    <value>提供系統匣選單圖示的快捷功能。</value>\n  </data>\n  <data name=\"AutomationPage_QuickActions_Title\" xml:space=\"preserve\">\n    <value>快捷功能</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Placeholder\" xml:space=\"preserve\">\n    <value>名稱……</value>\n  </data>\n  <data name=\"AutomationPage_RenamePipeline_Title\" xml:space=\"preserve\">\n    <value>重新命名</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Message\" xml:space=\"preserve\">\n    <value>已重設所有變更！</value>\n  </data>\n  <data name=\"AutomationPage_Reverted_Title\" xml:space=\"preserve\">\n    <value>重設</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Message\" xml:space=\"preserve\">\n    <value>已成功地儲存所有變更！</value>\n  </data>\n  <data name=\"AutomationPage_Saved_Title\" xml:space=\"preserve\">\n    <value>已儲存</value>\n  </data>\n  <data name=\"AutomationPage_Title\" xml:space=\"preserve\">\n    <value>自動化</value>\n  </data>\n  <data name=\"AutomationPipelineControl_AddStep\" xml:space=\"preserve\">\n    <value>新增條件</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Configure\" xml:space=\"preserve\">\n    <value>組態設定</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive\" xml:space=\"preserve\">\n    <value>獨佔此條件</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Exclusive_ToolTip\" xml:space=\"preserve\">\n    <value>當此功能執行時，將不會執行其他符合條件的功能。</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow\" xml:space=\"preserve\">\n    <value>立刻執行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Message\" xml:space=\"preserve\">\n    <value>執行時發生錯誤。</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Error_Title\" xml:space=\"preserve\">\n    <value>立刻執行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Message\" xml:space=\"preserve\">\n    <value>成功地執行！</value>\n  </data>\n  <data name=\"AutomationPipelineControl_RunNow_Success_Title\" xml:space=\"preserve\">\n    <value>立刻執行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Running\" xml:space=\"preserve\">\n    <value>執行中……</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step\" xml:space=\"preserve\">\n    <value>共 {0} 個條件</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Step_Many\" xml:space=\"preserve\">\n    <value>共 {0} 個條件</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Apps\" xml:space=\"preserve\">\n    <value>應用程式</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunrise\" xml:space=\"preserve\">\n    <value>日出時</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtSunset\" xml:space=\"preserve\">\n    <value>日落時</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_AtTime\" xml:space=\"preserve\">\n    <value>將在 {0:D2}:{1:D2} 執行</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_PowerMode\" xml:space=\"preserve\">\n    <value>電源模式</value>\n  </data>\n  <data name=\"AutomationPipelineControl_Unnamed\" xml:space=\"preserve\">\n    <value>未命名</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Message\" xml:space=\"preserve\">\n    <value>啟用 Legion AI 引擎以自動偵測遊戲並調整 CPU / GPU 效能。可能會增加裝置溫度和風扇噪音。</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_AIEngine_Title\" xml:space=\"preserve\">\n    <value>啟用 Legion AI 引擎</value>\n  </data>\n  <data name=\"BalanceModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>平衡模式設定</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>選擇電池充電模式。</value>\n  </data>\n  <data name=\"BatteryAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>電池模式</value>\n  </data>\n  <data name=\"BatteryModeControl_Message\" xml:space=\"preserve\">\n    <value>選擇電池充電模式。</value>\n  </data>\n  <data name=\"BatteryModeControl_Title\" xml:space=\"preserve\">\n    <value>電池模式</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedAndCharging\" xml:space=\"preserve\">\n    <value>已連接，充電中……</value>\n  </data>\n  <data name=\"BatteryPage_ACAdapterConnectedNotCharging\" xml:space=\"preserve\">\n    <value>已連接，未繼續充電</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Message\" xml:space=\"preserve\">\n    <value>目前電池溫度。</value>\n  </data>\n  <data name=\"BatteryPage_BatteryTemperature_Title\" xml:space=\"preserve\">\n    <value>電池溫度</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Message\" xml:space=\"preserve\">\n    <value>目前電池容量。</value>\n  </data>\n  <data name=\"BatteryPage_CurrentCapacity_Title\" xml:space=\"preserve\">\n    <value>目前容量</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Message\" xml:space=\"preserve\">\n    <value>電池充電 / 釋放循環次數。</value>\n  </data>\n  <data name=\"BatteryPage_CycleCount_Title\" xml:space=\"preserve\">\n    <value>循環次數</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Message\" xml:space=\"preserve\">\n    <value>電池設計容量。</value>\n  </data>\n  <data name=\"BatteryPage_DesignCapacity_Title\" xml:space=\"preserve\">\n    <value>設計容量</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Message\" xml:space=\"preserve\">\n    <value>【+】為電池充電，【-】為電池釋放。</value>\n  </data>\n  <data name=\"BatteryPage_DischargeRate_Title\" xml:space=\"preserve\">\n    <value>釋放功率</value>\n  </data>\n  <data name=\"BatteryPage_EstimatedBatteryLifeRemaining\" xml:space=\"preserve\">\n    <value>預估剩餘時間：{0}</value>\n  </data>\n  <data name=\"BatteryPage_EstimatingBatteryLife\" xml:space=\"preserve\">\n    <value>剩餘時間……</value>\n  </data>\n  <data name=\"BatteryPage_FirstUseDate_Title\" xml:space=\"preserve\">\n    <value>初次使用日期</value>\n  </data>\n  <data name=\"BatteryPage_FirstUse_Message\" xml:space=\"preserve\">\n    <value>初次使用電池日期。</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Message\" xml:space=\"preserve\">\n    <value>當電池充飽時的容量。</value>\n  </data>\n  <data name=\"BatteryPage_FullChargeCapacity_Title\" xml:space=\"preserve\">\n    <value>充飽容量</value>\n  </data>\n  <data name=\"BatteryPage_LowWattageChargerConnected\" xml:space=\"preserve\">\n    <value>已連接較低功率電源供應器</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Message\" xml:space=\"preserve\">\n    <value>電池製造日期。</value>\n  </data>\n  <data name=\"BatteryPage_ManufactureDate_Title\" xml:space=\"preserve\">\n    <value>製造日期</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Message\" xml:space=\"preserve\">\n    <value>自筆記型電腦中斷連接電源供應器以來的時間。\n如果在關機或休眠時充電，可能導致此時間不準確。</value>\n  </data>\n  <data name=\"BatteryPage_OnBatterySince_Title\" xml:space=\"preserve\">\n    <value>電池使用時間</value>\n  </data>\n  <data name=\"BatteryPage_Title\" xml:space=\"preserve\">\n    <value>電池</value>\n  </data>\n  <data name=\"Cancel\" xml:space=\"preserve\">\n    <value>取消</value>\n  </data>\n  <data name=\"Celsius\" xml:space=\"preserve\">\n    <value>°C</value>\n  </data>\n  <data name=\"Close\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"Color_Blue\" xml:space=\"preserve\">\n    <value>藍色（B）</value>\n  </data>\n  <data name=\"Color_Green\" xml:space=\"preserve\">\n    <value>綠色（G）</value>\n  </data>\n  <data name=\"Color_Red\" xml:space=\"preserve\">\n    <value>紅色（R）</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>根據您的使用場景和電源情況選擇顯示卡的執行模式。\n切換模式可能需要重新啟動。</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>變更為 {0} 需要重新啟動。您想要現在重新啟動嗎？</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>需要重新啟動</value>\n  </data>\n  <data name=\"ComboBoxHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>GPU 運作模式（GPU Working Mode）</value>\n  </data>\n  <data name=\"ContextMenu_QuickActions\" xml:space=\"preserve\">\n    <value>快捷功能</value>\n  </data>\n  <data name=\"Continue\" xml:space=\"preserve\">\n    <value>繼續</value>\n  </data>\n  <data name=\"CopyAll\" xml:space=\"preserve\">\n    <value>複製全部</value>\n  </data>\n  <data name=\"DashboardPage_Graphics_Title\" xml:space=\"preserve\">\n    <value>圖形</value>\n  </data>\n  <data name=\"DashboardPage_Other_Title\" xml:space=\"preserve\">\n    <value>其他</value>\n  </data>\n  <data name=\"DashboardPage_Power_Title\" xml:space=\"preserve\">\n    <value>電源</value>\n  </data>\n  <data name=\"DashboardPage_Title\" xml:space=\"preserve\">\n    <value>首頁</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>如果 GPU 不需要活動時，停用顯示卡。\n\n警告：如果已關閉內部顯示器或未啟用混合模式（Hybrid Mode），則此功能將無法正確地執行。</value>\n  </data>\n  <data name=\"DeactivateGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>休眠 GPU</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>在執行下一條件前增加延遲。</value>\n  </data>\n  <data name=\"DelayAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>延遲</value>\n  </data>\n  <data name=\"Delete\" xml:space=\"preserve\">\n    <value>刪除</value>\n  </data>\n  <data name=\"DeviceInformationWindow_BiosVersion_Title\" xml:space=\"preserve\">\n    <value>BIOS 版本</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message\" xml:space=\"preserve\">\n    <value>已複製文字到剪貼簿。</value>\n  </data>\n  <data name=\"CopiedToClipboard_Message_WithParam\" xml:space=\"preserve\">\n    <value>已複製「{0}」到剪貼簿。</value>\n  </data>\n  <data name=\"CopiedToClipboard_Title\" xml:space=\"preserve\">\n    <value>已複製！</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Device_Title\" xml:space=\"preserve\">\n    <value>裝置</value>\n  </data>\n  <data name=\"DeviceInformationWindow_LenovoSupport\" xml:space=\"preserve\">\n    <value>Lenovo 支援</value>\n  </data>\n  <data name=\"DeviceInformationWindow_MachineType_Title\" xml:space=\"preserve\">\n    <value>裝置類型</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Manufacturer_Title\" xml:space=\"preserve\">\n    <value>製造商</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Model_Title\" xml:space=\"preserve\">\n    <value>型號</value>\n  </data>\n  <data name=\"DeviceInformationWindow_SerialNumber_Title\" xml:space=\"preserve\">\n    <value>序號</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Title\" xml:space=\"preserve\">\n    <value>關於您的裝置</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyEndDate_Title\" xml:space=\"preserve\">\n    <value>結束日期</value>\n  </data>\n  <data name=\"DeviceInformationWindow_WarrantyStartDate_Title\" xml:space=\"preserve\">\n    <value>開始日期</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Warranty_Title\" xml:space=\"preserve\">\n    <value>保固</value>\n  </data>\n  <data name=\"Active\" xml:space=\"preserve\">\n    <value>活動中</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Deactivate\" xml:space=\"preserve\">\n    <value>休眠</value>\n  </data>\n  <data name=\"Inactive\" xml:space=\"preserve\">\n    <value>休眠中</value>\n  </data>\n  <data name=\"DiscreteGPUControl_KillApps\" xml:space=\"preserve\">\n    <value>強制關閉應用程式</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>如果 GPU 不需要活動時停用顯示卡。</value>\n  </data>\n  <data name=\"DiscreteGPUControl_MonitorConnected\" xml:space=\"preserve\">\n    <value>顯示器已連接到 nVidia GPU。</value>\n  </data>\n  <data name=\"DiscreteGPUControl_NoProcesses\" xml:space=\"preserve\">\n    <value>尚無處理程序</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState\" xml:space=\"preserve\">\n    <value>效能狀態</value>\n  </data>\n  <data name=\"DiscreteGPUControl_PerformanceState_Unknown\" xml:space=\"preserve\">\n    <value>未知</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Processes\" xml:space=\"preserve\">\n    <value>處理程序</value>\n  </data>\n  <data name=\"DiscreteGPUControl_RestartGPU\" xml:space=\"preserve\">\n    <value>重新啟動 GPU</value>\n  </data>\n  <data name=\"DiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>獨立顯示卡</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>變更內部顯示器顯示亮度。\n\n警告：如果已關閉內部顯示器，則此功能將無法正確地執行。</value>\n  </data>\n  <data name=\"DisplayBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>顯示亮度</value>\n  </data>\n  <data name=\"DonatePage_DonateWith\" xml:space=\"preserve\">\n    <value>贊助於</value>\n  </data>\n  <data name=\"DonatePage_Message\" xml:space=\"preserve\">\n    <value>開發和維護 Lenovo Legion 工具套件需要大量的時間。如果您喜歡此應用程式，您可以透過贊助來支持應用程式未來的開發。\n\n點擊下方的 PayPal 圖示或掃描 QR 條碼使用 PayPal 贊助。\n\n萬分的感謝您！</value>\n  </data>\n  <data name=\"DonatePage_Title\" xml:space=\"preserve\">\n    <value>贊助</value>\n  </data>\n  <data name=\"Edit\" xml:space=\"preserve\">\n    <value>編輯</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Description\" xml:space=\"preserve\">\n    <value>使用 Fn+R 快捷鍵時，取消選擇您不想使用的更新率。</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message\" xml:space=\"preserve\">\n    <value>請確保筆記型電腦顯示器已開啟。否則 Lenovo Legion 工具套件無法載入顯示器資訊。</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title\" xml:space=\"preserve\">\n    <value>尚未發現更新率</value>\n  </data>\n  <data name=\"ExcludeRefreshRatesWindow_Title\" xml:space=\"preserve\">\n    <value>排除更新率</value>\n  </data>\n  <data name=\"Exit\" xml:space=\"preserve\">\n    <value>離開</value>\n  </data>\n  <data name=\"Export\" xml:space=\"preserve\">\n    <value>匯出</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Message\" xml:space=\"preserve\">\n    <value>使用電池時只使用內建顯示卡，連接電源供應器時使用內建顯示卡和獨立顯示卡。當連接低功率電源供應器時，系統將接換到混合模式（Hybrid-iGPU）。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Auto_Title\" xml:space=\"preserve\">\n    <value>混合自動模式（Hybrid-Auto Mode）</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>切換到此模式需要重新啟動。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Message\" xml:space=\"preserve\">\n    <value>僅使用獨立顯示卡。此模式將提供最佳化的圖形效能，但會顯著地增加功率。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_DGPU_Title\" xml:space=\"preserve\">\n    <value>獨立顯示卡直接連接模式（dGPU Mode）</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Message\" xml:space=\"preserve\">\n    <value>內建顯示卡和獨立顯示卡都將啟用。系統將視情況自動地切換它們。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Hybrid_Title\" xml:space=\"preserve\">\n    <value>混合模式（Hybrid Mode）</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Disclaimer\" xml:space=\"preserve\">\n    <value>此模式僅在獨立顯示卡不運作時生效。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Message\" xml:space=\"preserve\">\n    <value>僅使用內建顯示卡，此模式將消耗最少的電源和最小的風扇噪音。</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_IGPU_Title\" xml:space=\"preserve\">\n    <value>混合僅限內建顯示卡模式（Hybrid-iGPU Only Mode）</value>\n  </data>\n  <data name=\"ExtendedHybridModeInfoWindow_Title\" xml:space=\"preserve\">\n    <value>關於 GPU 運作模式</value>\n  </data>\n  <data name=\"Fahrenheit\" xml:space=\"preserve\">\n    <value>°F</value>\n  </data>\n  <data name=\"FanCurveControl_CPU\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"FanCurveControl_CPUSensor\" xml:space=\"preserve\">\n    <value>CPU 感測器</value>\n  </data>\n  <data name=\"FanCurveControl_FanSpeed\" xml:space=\"preserve\">\n    <value>風扇轉速</value>\n  </data>\n  <data name=\"FanCurveControl_GPU\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"FanCurveControl_GPU2\" xml:space=\"preserve\">\n    <value>GPU #2</value>\n  </data>\n  <data name=\"RPM\" xml:space=\"preserve\">\n    <value>RPM</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>開啟上蓋後自動啟動筆記型電腦。</value>\n  </data>\n  <data name=\"FlipToStartAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>開蓋啟動</value>\n  </data>\n  <data name=\"FlipToStartControl_Message\" xml:space=\"preserve\">\n    <value>開啟上蓋後自動啟動筆記型電腦。</value>\n  </data>\n  <data name=\"FlipToStartControl_Title\" xml:space=\"preserve\">\n    <value>開蓋啟動</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>不需要按住 Fn 鍵即可使用 F1-F12 功能鍵。</value>\n  </data>\n  <data name=\"FnLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>鎖定 Fn 鍵</value>\n  </data>\n  <data name=\"FnLockControl_Message\" xml:space=\"preserve\">\n    <value>不需要按住 Fn 鍵即可使用 F1-F12 功能鍵。</value>\n  </data>\n  <data name=\"FnLockControl_Title\" xml:space=\"preserve\">\n    <value>鎖定 Fn 鍵</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Message\" xml:space=\"preserve\">\n    <value>警告！\n一些筆記型電腦可能接受較低的功率限制。請小心，此選項可能導致未知的後果，因此如果您不確定自己在做什麼，請將其保留為 0。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MinOffset_Title\" xml:space=\"preserve\">\n    <value>最小偏移</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Message\" xml:space=\"preserve\">\n    <value>警告！\n一些筆記型電腦可能接受較高的功率限制。請小心，此選項可能導致未知的後果，因此如果您不確定自己在做什麼，請將其保留為 0。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_MaxOffset_Title\" xml:space=\"preserve\">\n    <value>最大偏移</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Message\" xml:space=\"preserve\">\n    <value>除非您真的知道自己在做什麼，否則請不要變更下面的選項。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Advanced_Title\" xml:space=\"preserve\">\n    <value>進階</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading\" xml:space=\"preserve\">\n    <value>長時間功率限制（Cross Loading）</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL\" xml:space=\"preserve\">\n    <value>長時間功率限制（PL1）</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL\" xml:space=\"preserve\">\n    <value>短時間功率限制（PL2）</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit\" xml:space=\"preserve\">\n    <value>CPU 溫度限制</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Apply_Title\" xml:space=\"preserve\">\n    <value>無法套用設定</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Error_Load_Title\" xml:space=\"preserve\">\n    <value>無法載入設定。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Message\" xml:space=\"preserve\">\n    <value>風扇轉速不僅僅由一個溫度感測器決定的。它根據 CPU、GPU 和散熱器溫度之間的最高值決定轉速。將滑鼠懸停在方塊上可以查看精確的數值。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Curve_Title\" xml:space=\"preserve\">\n    <value>風扇曲線</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Message\" xml:space=\"preserve\">\n    <value>警告！\n長時間使用此選項會降低風扇的效能，從而縮短其使用壽命。\n請謹慎使用此選項！</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Max_Title\" xml:space=\"preserve\">\n    <value>最大風扇轉速</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Fans_Title\" xml:space=\"preserve\">\n    <value>風扇</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP\" xml:space=\"preserve\">\n    <value>可設定 TGP</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost\" xml:space=\"preserve\">\n    <value>動態加速</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit\" xml:space=\"preserve\">\n    <value>GPU 溫度限制</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>客製化模式設定</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>啟用高動態範圍（HDR）顯示。\n\n警告：如果已關閉內部顯示器，則此功能將無法正確地執行。</value>\n  </data>\n  <data name=\"HDRAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Message\" xml:space=\"preserve\">\n    <value>啟用高動態範圍（HDR）顯示。</value>\n  </data>\n  <data name=\"HDRControl_Title\" xml:space=\"preserve\">\n    <value>HDR</value>\n  </data>\n  <data name=\"HDRControl_Warning\" xml:space=\"preserve\">\n    <value>Windows 設定已阻擋 HDR 啟用。</value>\n  </data>\n  <data name=\"Import\" xml:space=\"preserve\">\n    <value>匯入</value>\n  </data>\n  <data name=\"IncompatibleDevice_Message\" xml:space=\"preserve\">\n    <value>此裝置不相容於 Lenovo Legion 工具套件。</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_NoCompatibleKeyboardsFound\" xml:space=\"preserve\">\n    <value>尚未發現相容的鍵盤</value>\n  </data>\n  <data name=\"KeyboardBacklightPage_Title\" xml:space=\"preserve\">\n    <value>鍵盤背光</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Message\" xml:space=\"preserve\">\n    <value>由於 Lenovo Vantage 或其他服務正在執行，所以無法在此控制鍵盤背光。</value>\n  </data>\n  <data name=\"Keyboard_VantageEnabledWarning_Title\" xml:space=\"preserve\">\n    <value>Lenovo Vantage 或其相關服務正在執行</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_About\" xml:space=\"preserve\">\n    <value>關於</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Actions\" xml:space=\"preserve\">\n    <value>功能</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Battery\" xml:space=\"preserve\">\n    <value>電池</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Dashboard\" xml:space=\"preserve\">\n    <value>控制面板</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Donate\" xml:space=\"preserve\">\n    <value>贊助</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Keyboard\" xml:space=\"preserve\">\n    <value>鍵盤</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Packages\" xml:space=\"preserve\">\n    <value>下載</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Settings\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailable\" xml:space=\"preserve\">\n    <value>已有可供使用的更新！</value>\n  </data>\n  <data name=\"MainWindow_UpdateAvailableWithVersion\" xml:space=\"preserve\">\n    <value>已有可供使用的更新 {0}！</value>\n  </data>\n  <data name=\"MoveDown\" xml:space=\"preserve\">\n    <value>往下移</value>\n  </data>\n  <data name=\"MoveUp\" xml:space=\"preserve\">\n    <value>往上移</value>\n  </data>\n  <data name=\"No\" xml:space=\"preserve\">\n    <value>否</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnected\" xml:space=\"preserve\">\n    <value>已連接電源供應器</value>\n  </data>\n  <data name=\"Notification_ACAdapterConnectedLowWattage\" xml:space=\"preserve\">\n    <value>已連接電源供應器（較低功率）</value>\n  </data>\n  <data name=\"Notification_ACAdapterDisconnected\" xml:space=\"preserve\">\n    <value>已中斷連接電源供應器</value>\n  </data>\n  <data name=\"Notification_CameraOff\" xml:space=\"preserve\">\n    <value>關閉相機</value>\n  </data>\n  <data name=\"Notification_CameraOn\" xml:space=\"preserve\">\n    <value>開啟相機</value>\n  </data>\n  <data name=\"Notification_CapsLockOff\" xml:space=\"preserve\">\n    <value>關閉 Caps Lock</value>\n  </data>\n  <data name=\"Notification_CapsLockOn\" xml:space=\"preserve\">\n    <value>開啟 Caps Lock</value>\n  </data>\n  <data name=\"Notification_FnLockOff\" xml:space=\"preserve\">\n    <value>關閉鎖定 Fn 鍵</value>\n  </data>\n  <data name=\"Notification_FnLockOn\" xml:space=\"preserve\">\n    <value>開啟鎖定 Fn 鍵</value>\n  </data>\n  <data name=\"Notification_MicrophoneOff\" xml:space=\"preserve\">\n    <value>關閉麥克風</value>\n  </data>\n  <data name=\"Notification_MicrophoneOn\" xml:space=\"preserve\">\n    <value>開啟麥克風</value>\n  </data>\n  <data name=\"Notification_NumLockOff\" xml:space=\"preserve\">\n    <value>關閉 Num Lock</value>\n  </data>\n  <data name=\"Notification_NumLockOn\" xml:space=\"preserve\">\n    <value>開啟 Num Lock</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Backlight\" xml:space=\"preserve\">\n    <value>背光 {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Brightness\" xml:space=\"preserve\">\n    <value>亮度 {0}</value>\n  </data>\n  <data name=\"Notification_SpectrumKeyboardBacklight_Profile\" xml:space=\"preserve\">\n    <value>設定檔 {0}</value>\n  </data>\n  <data name=\"Notification_TouchpadOff\" xml:space=\"preserve\">\n    <value>關閉觸控板</value>\n  </data>\n  <data name=\"Notification_TouchpadOn\" xml:space=\"preserve\">\n    <value>開啟觸控板</value>\n  </data>\n  <data name=\"Notification_WhiteKeyboardBacklight\" xml:space=\"preserve\">\n    <value>背光 {0}</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_ACAdapter\" xml:space=\"preserve\">\n    <value>電源供應器</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Camera\" xml:space=\"preserve\">\n    <value>相機</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_CapsAndNumLock\" xml:space=\"preserve\">\n    <value>Caps Lock 和 Num Lock</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Message\" xml:space=\"preserve\">\n    <value>停用麥克風靜音等 Fn 鍵功能通知。\n如果通知和全螢幕應用程式發生衝突，請啟用此選項。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_DontShowNotifications_Title\" xml:space=\"preserve\">\n    <value>不要顯示通知</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_FnLock\" xml:space=\"preserve\">\n    <value>鎖定 Fn 鍵</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_KeyboardBacklight\" xml:space=\"preserve\">\n    <value>鍵盤背光</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Microphone\" xml:space=\"preserve\">\n    <value>麥克風</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationPosition_Title\" xml:space=\"preserve\">\n    <value>位置</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_PowerMode\" xml:space=\"preserve\">\n    <value>電源模式</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_RefreshRate\" xml:space=\"preserve\">\n    <value>更新率</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_SmartKey\" xml:space=\"preserve\">\n    <value>Smart Key</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>通知</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_TouchpadLock\" xml:space=\"preserve\">\n    <value>鎖定觸控板</value>\n  </data>\n  <data name=\"OK\" xml:space=\"preserve\">\n    <value>確認</value>\n  </data>\n  <data name=\"Open\" xml:space=\"preserve\">\n    <value>開啟</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>透過增加電壓超頻以提升內部顯示器反應速度。（可能會導致顯示器過衝產生鬼影）</value>\n  </data>\n  <data name=\"OverDriveAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"OverDriveControl_Message\" xml:space=\"preserve\">\n    <value>透過增加電壓超頻以提升內部顯示器反應速度。（可能會導致顯示器過衝產生鬼影）</value>\n  </data>\n  <data name=\"OverDriveControl_Title\" xml:space=\"preserve\">\n    <value>Over Drive</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Message\" xml:space=\"preserve\">\n    <value>已下載 {0}！</value>\n  </data>\n  <data name=\"PackageControl_DownloadComplete_Title\" xml:space=\"preserve\">\n    <value>下載完成</value>\n  </data>\n  <data name=\"PackageControl_GeneralError_Title\" xml:space=\"preserve\">\n    <value>發生錯誤</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Message\" xml:space=\"preserve\">\n    <value>伺服器返回代碼 404。</value>\n  </data>\n  <data name=\"PackageControl_Http404Error_Title\" xml:space=\"preserve\">\n    <value>找不到資料</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Message\" xml:space=\"preserve\">\n    <value>檢查您的網路連線是否正常。</value>\n  </data>\n  <data name=\"PackageControl_HttpGeneralError_Title\" xml:space=\"preserve\">\n    <value>發生錯誤</value>\n  </data>\n  <data name=\"PackageControl_IsUpdateInfo\" xml:space=\"preserve\">\n    <value>已有可供使用的更新！</value>\n  </data>\n  <data name=\"PackageControl_OldPackageWarning\" xml:space=\"preserve\">\n    <value>此套件發布已超過一年。</value>\n  </data>\n  <data name=\"PackageControl_Version\" xml:space=\"preserve\">\n    <value>版本</value>\n  </data>\n  <data name=\"PackagesPage_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>以下是標記為與您的筆記型電腦相容的套件清單。\n請您始終確保安裝正確的套件。</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Message\" xml:space=\"preserve\">\n    <value>檢查裝置類型和系統設定是否正確。</value>\n  </data>\n  <data name=\"PackagesPage_DownloadFailed_Title\" xml:space=\"preserve\">\n    <value>發生錯誤</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Message\" xml:space=\"preserve\">\n    <value>變更排序、篩選結果、隱藏套件或重新整理清單將停止下載。您確定嗎？</value>\n  </data>\n  <data name=\"PackagesPage_DownloadInProgress_Title\" xml:space=\"preserve\">\n    <value>下載進行中</value>\n  </data>\n  <data name=\"Filter\" xml:space=\"preserve\">\n    <value>篩選……</value>\n  </data>\n  <data name=\"PackagesPage_MachineType\" xml:space=\"preserve\">\n    <value>裝置類型</value>\n  </data>\n  <data name=\"PackagesPage_OperatingSystem\" xml:space=\"preserve\">\n    <value>作業系統</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource\" xml:space=\"preserve\">\n    <value>主要（推薦）</value>\n  </data>\n  <data name=\"PackagesPage_PrimarySource_Message\" xml:space=\"preserve\">\n    <value>與 Lenovo Vantage 相同</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource\" xml:space=\"preserve\">\n    <value>次要</value>\n  </data>\n  <data name=\"PackagesPage_SecondarySource_Message\" xml:space=\"preserve\">\n    <value>與 Lenovo PC Support 相同</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Category\" xml:space=\"preserve\">\n    <value>類別</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Date\" xml:space=\"preserve\">\n    <value>日期</value>\n  </data>\n  <data name=\"PackagesPage_Sort_Name\" xml:space=\"preserve\">\n    <value>名稱</value>\n  </data>\n  <data name=\"PackagesPage_Source\" xml:space=\"preserve\">\n    <value>來源</value>\n  </data>\n  <data name=\"PackagesPage_Title\" xml:space=\"preserve\">\n    <value>下載</value>\n  </data>\n  <data name=\"Paste\" xml:space=\"preserve\">\n    <value>貼上</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>選擇效能模式。</value>\n  </data>\n  <data name=\"PowerModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>電源模式</value>\n  </data>\n  <data name=\"PowerModeControl_Message\" xml:space=\"preserve\">\n    <value>選擇效能模式。\n您可以透過快捷鍵 Fn+Q 快速變更。</value>\n  </data>\n  <data name=\"PowerModeControl_Settings\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"PowerModeControl_Title\" xml:space=\"preserve\">\n    <value>電源模式</value>\n  </data>\n  <data name=\"PowerModeControl_Warning\" xml:space=\"preserve\">\n    <value>尚未連接電源供應器時，電源模式可能無法正確地的運作。</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_DefaultPowerPlan\" xml:space=\"preserve\">\n    <value>預設</value>\n  </data>\n  <data name=\"WindowsPowerPlansWindow_Title\" xml:space=\"preserve\">\n    <value>Windows 電源計劃</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>調整鍵盤背光預設。</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>鍵盤背光</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightBrightnessCardControl_Brightness\" xml:space=\"preserve\">\n    <value>亮度</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset1\" xml:space=\"preserve\">\n    <value>預設 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset2\" xml:space=\"preserve\">\n    <value>預設 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset3\" xml:space=\"preserve\">\n    <value>預設 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Preset4\" xml:space=\"preserve\">\n    <value>預設 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_PresetOff\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone1\" xml:space=\"preserve\">\n    <value>區域 1</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone2\" xml:space=\"preserve\">\n    <value>區域 2</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone3\" xml:space=\"preserve\">\n    <value>區域 3</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightControl_Zone4\" xml:space=\"preserve\">\n    <value>區域 4</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightEffectCardControl_Title\" xml:space=\"preserve\">\n    <value>特效</value>\n  </data>\n  <data name=\"RGBKeyboardBacklightSpeedCardControl_Title\" xml:space=\"preserve\">\n    <value>速度</value>\n  </data>\n  <data name=\"ReadmeWindow_Title\" xml:space=\"preserve\">\n    <value>讀我檔案（Readme）</value>\n  </data>\n  <data name=\"Refresh\" xml:space=\"preserve\">\n    <value>重新整理</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>變更內部顯示器更新率。\n\n警告：如果已關閉內部顯示器，則此功能將無法正確地執行。</value>\n  </data>\n  <data name=\"RefreshRateAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>更新率</value>\n  </data>\n  <data name=\"RefreshRateControl_Message\" xml:space=\"preserve\">\n    <value>變更內部顯示器更新率。</value>\n  </data>\n  <data name=\"RefreshRateControl_Title\" xml:space=\"preserve\">\n    <value>更新率</value>\n  </data>\n  <data name=\"Rename\" xml:space=\"preserve\">\n    <value>重新命名</value>\n  </data>\n  <data name=\"RestartLater\" xml:space=\"preserve\">\n    <value>稍後重新啟動</value>\n  </data>\n  <data name=\"RestartNow\" xml:space=\"preserve\">\n    <value>立刻重新啟動</value>\n  </data>\n  <data name=\"Revert\" xml:space=\"preserve\">\n    <value>重設</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExeArguments\" xml:space=\"preserve\">\n    <value>參數</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ExePath\" xml:space=\"preserve\">\n    <value>執行路徑</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>執行腳本或應用程式ˋ。\n首先請確保您的腳本能夠正確的執行。</value>\n  </data>\n  <data name=\"RunAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>執行</value>\n  </data>\n  <data name=\"Save\" xml:space=\"preserve\">\n    <value>儲存</value>\n  </data>\n  <data name=\"Saving\" xml:space=\"preserve\">\n    <value>儲存中……</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Description\" xml:space=\"preserve\">\n    <value>選擇一個或更多快捷動作來循環執行。</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_List_Empty\" xml:space=\"preserve\">\n    <value>尚未定義快捷功能。</value>\n  </data>\n  <data name=\"SelectSmartKeyPipelinesWindow_ShowThisApp\" xml:space=\"preserve\">\n    <value>顯示此應用程式</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Description\" xml:space=\"preserve\">\n    <value>變更應用程式的主題色彩。</value>\n  </data>\n  <data name=\"SettingsPage_AccentColor_Title\" xml:space=\"preserve\">\n    <value>主題色彩</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Message\" xml:space=\"preserve\">\n    <value>開機後最小化到系統匣。</value>\n  </data>\n  <data name=\"SettingsPage_Autorun_Title\" xml:space=\"preserve\">\n    <value>開機啟動</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone 可能沒有被正確地停用。</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>無法停用 Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Message\" xml:space=\"preserve\">\n    <value>在不解除安裝 Legion Zone 及相關服務的情況下停用它們。\n變更此選項後建議重新啟動。</value>\n  </data>\n  <data name=\"SettingsPage_DisableLegionZone_Title\" xml:space=\"preserve\">\n    <value>停用 Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys 可能沒有被正確地停用</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>無法停用 Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Message\" xml:space=\"preserve\">\n    <value>在不解除安裝 Lenovo Hotkeys 及相關服務的情況下停用它們。\n如果停用，此應用程式將處理 Fn 快捷鍵。\n變更此選項後建議重新啟動。</value>\n  </data>\n  <data name=\"SettingsPage_DisableLenovoHotkeys_Title\" xml:space=\"preserve\">\n    <value>停用 Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage 與（或）ImController 可能沒有被正確地停用</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>無法停用 Lenovo Vantage 與（或）ImController</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Message\" xml:space=\"preserve\">\n    <value>在不解除安裝 Lenovo Vantage 和 ImController 的情況下停用它們。\n變更此選項後建議重新啟動。</value>\n  </data>\n  <data name=\"SettingsPage_DisableVantage_Title\" xml:space=\"preserve\">\n    <value>停用 Lenovo Vantage 和 ImController</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Message\" xml:space=\"preserve\">\n    <value>Legion Zone 可能沒有被正確地啟用。</value>\n  </data>\n  <data name=\"SettingsPage_EnableLegionZone_Error_Title\" xml:space=\"preserve\">\n    <value>無法啟用 Legion Zone</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys 可能沒有被正確地啟用</value>\n  </data>\n  <data name=\"SettingsPage_EnableLenovoHotkeys_Error_Title\" xml:space=\"preserve\">\n    <value>無法啟用 Lenovo Hotkeys</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Message\" xml:space=\"preserve\">\n    <value>Lenovo Vantage 與（或）ImController 可能沒有被正確地啟用</value>\n  </data>\n  <data name=\"SettingsPage_EnableVantage_Error_Title\" xml:space=\"preserve\">\n    <value>無法啟用 Lenovo Vantage 與（或）ImController</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Message\" xml:space=\"preserve\">\n    <value>您可以排除更新率，使用 Fn+R 快捷鍵切換更加實用。</value>\n  </data>\n  <data name=\"SettingsPage_ExcludeRefreshRates_Title\" xml:space=\"preserve\">\n    <value>排除更新率</value>\n  </data>\n  <data name=\"SettingsPage_Language_Message\" xml:space=\"preserve\">\n    <value>選擇語言。</value>\n  </data>\n  <data name=\"SettingsPage_Language_Title\" xml:space=\"preserve\">\n    <value>語言</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Message\" xml:space=\"preserve\">\n    <value>保持最小化到系統匣。對系統匣圖示點擊右鍵以關閉應用程式。</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeOnClose_Title\" xml:space=\"preserve\">\n    <value>關閉時最小化</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Message\" xml:space=\"preserve\">\n    <value>設定哪些通知要顯示。</value>\n  </data>\n  <data name=\"SettingsPage_Notifications_Title\" xml:space=\"preserve\">\n    <value>通知</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Title\" xml:space=\"preserve\">\n    <value>電源計劃</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Message\" xml:space=\"preserve\">\n    <value>指派雙重點擊 Fn+F9 的快捷功能。</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeyDoublePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key 次要動作</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Message\" xml:space=\"preserve\">\n    <value>指派點擊 Fn+F9 的快捷功能。</value>\n  </data>\n  <data name=\"SettingsPage_SmartKeySinglePressAction_Title\" xml:space=\"preserve\">\n    <value>Smart Key 動作</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Description\" xml:space=\"preserve\">\n    <value>設定淺色、深色模式，或跟隨系統。</value>\n  </data>\n  <data name=\"SettingsPage_Theme_Title\" xml:space=\"preserve\">\n    <value>主題</value>\n  </data>\n  <data name=\"SettingsPage_Title\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>調整鍵盤背光亮度。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightBrightnessAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>鍵盤背光亮度</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_AddEffect\" xml:space=\"preserve\">\n    <value>新增特效</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Title\" xml:space=\"preserve\">\n    <value>無法套用設定檔</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ApplyProfileError_Message\" xml:space=\"preserve\">\n    <value>無法套用燈光設定檔。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Brightness_Title\" xml:space=\"preserve\">\n    <value>亮度</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_DeselectAll_ToolTip\" xml:space=\"preserve\">\n    <value>取消選擇所有區域</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Effects\" xml:space=\"preserve\">\n    <value>特效</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Message\" xml:space=\"preserve\">\n    <value>無法匯出設定檔</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ExportProfileError_Title\" xml:space=\"preserve\">\n    <value>無法匯出設定檔</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Message\" xml:space=\"preserve\">\n    <value>無法匯入設定檔</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ImportProfileError_Title\" xml:space=\"preserve\">\n    <value>無法匯入設定檔</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_NoEffects_Text\" xml:space=\"preserve\">\n    <value>尚未新增特效。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_ResetToDefault_Tooltip\" xml:space=\"preserve\">\n    <value>重設為預設</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SelectAll_ToolTip\" xml:space=\"preserve\">\n    <value>選擇所有區域</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_SwitchKeyboardLayout_ToolTip\" xml:space=\"preserve\">\n    <value>切換鍵盤配置</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title\" xml:space=\"preserve\">\n    <value>方向</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Color_Title\" xml:space=\"preserve\">\n    <value>顏色</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Colors_Title\" xml:space=\"preserve\">\n    <value>顏色</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Direction_Title\" xml:space=\"preserve\">\n    <value>方向</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Title\" xml:space=\"preserve\">\n    <value>特效</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\" xml:space=\"preserve\">\n    <value>此效果將被套用到整個鍵盤並替換其他效果。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Speed_Title\" xml:space=\"preserve\">\n    <value>速度</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Add\" xml:space=\"preserve\">\n    <value>新增特效</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightEditEffectWindow_Title_Edit\" xml:space=\"preserve\">\n    <value>編輯特效</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>調整鍵盤背光設定檔。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>鍵盤背光設定檔。</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_AllZones\" xml:space=\"preserve\">\n    <value>所有按鍵區域</value>\n  </data>\n  <data name=\"SpectrumKeyboardEffectControl_Description_Zones\" xml:space=\"preserve\">\n    <value>{0} 區</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunrise\" xml:space=\"preserve\">\n    <value>日出</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Sunset\" xml:space=\"preserve\">\n    <value>日落</value>\n  </data>\n  <data name=\"TimeAutomationPipelineTriggerTabItemContent_Time\" xml:space=\"preserve\">\n    <value>時間</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Message\" xml:space=\"preserve\">\n    <value>混合模式允許在內建顯示卡和獨立顯示卡之間切換。\n需要重新啟動。</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Message\" xml:space=\"preserve\">\n    <value>變更混合模式（Hybrid Mode）需要重新啟動。您想要現在重新啟動嗎？</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_RestartRequired_Title\" xml:space=\"preserve\">\n    <value>需要重新啟動</value>\n  </data>\n  <data name=\"ToggleHybridModeControl_Title\" xml:space=\"preserve\">\n    <value>混合模式（Hybrid Mode）</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>停用觸控板。</value>\n  </data>\n  <data name=\"TouchpadLockAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>鎖定觸控板</value>\n  </data>\n  <data name=\"TouchpadLockControl_Message\" xml:space=\"preserve\">\n    <value>停用觸控板。</value>\n  </data>\n  <data name=\"TouchpadLockControl_Title\" xml:space=\"preserve\">\n    <value>鎖定觸控板</value>\n  </data>\n  <data name=\"TryAgain\" xml:space=\"preserve\">\n    <value>再試一次</value>\n  </data>\n  <data name=\"UnexpectedException\" xml:space=\"preserve\">\n    <value>發生了非預期的例外狀況：\n{0}</value>\n  </data>\n  <data name=\"Unnamed\" xml:space=\"preserve\">\n    <value>未命名</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer\" xml:space=\"preserve\">\n    <value>您可以選擇繼續，風險自負，但請記住，某些功能可能無法使用或正常運作。\n\n如果您選擇繼續，將自動啟用記錄檔。</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_GitHub\" xml:space=\"preserve\">\n    <value>在 Github 上查看專案頁面以獲得更多資訊。</value>\n  </data>\n  <data name=\"UnsupportedWindow_Disclaimer_Logs\" xml:space=\"preserve\">\n    <value>記錄檔資料夾</value>\n  </data>\n  <data name=\"UnsupportedWindow_MachineType\" xml:space=\"preserve\">\n    <value>裝置類型</value>\n  </data>\n  <data name=\"UnsupportedWindow_Message\" xml:space=\"preserve\">\n    <value>Lenovo Legion 工具套件尚未在您的裝置上經過測試。</value>\n  </data>\n  <data name=\"UnsupportedWindow_Model\" xml:space=\"preserve\">\n    <value>型號</value>\n  </data>\n  <data name=\"UnsupportedWindow_Title\" xml:space=\"preserve\">\n    <value>尚未受支援的裝置</value>\n  </data>\n  <data name=\"UnsupportedWindow_Vendor\" xml:space=\"preserve\">\n    <value>製造商</value>\n  </data>\n  <data name=\"Update\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"UpdateWindow_Title\" xml:space=\"preserve\">\n    <value>已有可供使用的更新</value>\n  </data>\n  <data name=\"UpdateWindow_WhatsNew\" xml:space=\"preserve\">\n    <value>有什麼新功能？</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>調整鍵盤背光亮度</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>鍵盤背光</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>您可以透過 Fn+Space 變更亮度。</value>\n  </data>\n  <data name=\"WhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>鍵盤背光</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>啟用或停用 Windows 鍵。</value>\n  </data>\n  <data name=\"WinKeyAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>Windows 鍵</value>\n  </data>\n  <data name=\"WinKeyControl_Message\" xml:space=\"preserve\">\n    <value>僅在內建鍵盤生效。</value>\n  </data>\n  <data name=\"WinKeyControl_Title\" xml:space=\"preserve\">\n    <value>鎖定 Windows 鍵</value>\n  </data>\n  <data name=\"Yes\" xml:space=\"preserve\">\n    <value>是</value>\n  </data>\n  <data name=\"MicrophoneControl_Title\" xml:space=\"preserve\">\n    <value>麥克風</value>\n  </data>\n  <data name=\"MicrophoneControl_Message\" xml:space=\"preserve\">\n    <value>關閉此選項將會使所有麥克風靜音。</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>麥克風</value>\n  </data>\n  <data name=\"MicrophoneAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>關閉此選項將會使所有麥克風靜音。</value>\n  </data>\n  <data name=\"ResolutionControl_Title\" xml:space=\"preserve\">\n    <value>解析度</value>\n  </data>\n  <data name=\"ResolutionControl_Message\" xml:space=\"preserve\">\n    <value>變更內部顯示器解析度。</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>解析度</value>\n  </data>\n  <data name=\"ResolutionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>變更內部顯示器解析度。\n\n警告：如果已關閉內部顯示器，則此功能將無法正確地執行。</value>\n  </data>\n  <data name=\"DpiScaleControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleControl_Message\" xml:space=\"preserve\">\n    <value>變更內部顯示器比例。</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>DPI</value>\n  </data>\n  <data name=\"DpiScaleAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>變更內部顯示器比例。\n\n警告：如果已關閉內部顯示器，則此功能將無法正確地執行。</value>\n  </data>\n  <data name=\"DashboardPage_Display_Title\" xml:space=\"preserve\">\n    <value>顯示</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Title\" xml:space=\"preserve\">\n    <value>鍵盤背光</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightControl_Message\" xml:space=\"preserve\">\n    <value>您可以透過 Fn+Space 開啟或關閉背光。</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>鍵盤背光</value>\n  </data>\n  <data name=\"OneLevelWhiteKeyboardBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>開啟或關閉背光。</value>\n  </data>\n  <data name=\"PackagesPage_NoMatchingDownloads\" xml:space=\"preserve\">\n    <value>沒有找到符合的下載</value>\n  </data>\n  <data name=\"PackagesPage_OnlyShowUpdates\" xml:space=\"preserve\">\n    <value>僅顯示更新</value>\n  </data>\n  <data name=\"EditDashboardWindow_Title\" xml:space=\"preserve\">\n    <value>客製化控制面板</value>\n  </data>\n  <data name=\"Load\" xml:space=\"preserve\">\n    <value>重設</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Title\" xml:space=\"preserve\">\n    <value>建立群組</value>\n  </data>\n  <data name=\"EditDashboardWindow_CreateGroup_Message\" xml:space=\"preserve\">\n    <value>名稱</value>\n  </data>\n  <data name=\"EditDashboardWindow_Disclaimer_Message\" xml:space=\"preserve\">\n    <value>根據裝置的狀態和組態設定，某些功能可能不會出現在控制面板上。</value>\n  </data>\n  <data name=\"DashboardPage_Customize\" xml:space=\"preserve\">\n    <value>客製化</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Title\" xml:space=\"preserve\">\n    <value>關閉顯示器</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_Message\" xml:space=\"preserve\">\n    <value>關閉所有可供使用的顯示器。\n移動滑鼠或點擊鍵盤按鍵以喚醒顯示器。</value>\n  </data>\n  <data name=\"TurnOffMonitorsControl_TurnOff\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>關閉顯示器</value>\n  </data>\n  <data name=\"TurnOffMonitorsAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>關閉所有可供使用的顯示器。</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Title\" xml:space=\"preserve\">\n    <value>編輯群組名稱</value>\n  </data>\n  <data name=\"EditDashboardGroupControl_EditGroup_Message\" xml:space=\"preserve\">\n    <value>名稱</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOn\" xml:space=\"preserve\">\n    <value>開啟 Legion 圖示燈光</value>\n  </data>\n  <data name=\"Notification_PanelLogoLightingOff\" xml:space=\"preserve\">\n    <value>關閉 Legion 圖示燈光</value>\n  </data>\n  <data name=\"Notification_PortLightingOn\" xml:space=\"preserve\">\n    <value>開啟介面指示燈</value>\n  </data>\n  <data name=\"Notification_PortLightingOff\" xml:space=\"preserve\">\n    <value>關閉介面指示燈</value>\n  </data>\n  <data name=\"PackageControl_RebootRequired\" xml:space=\"preserve\">\n    <value>需要重新啟動</value>\n  </data>\n  <data name=\"PackageControl_ShutdownRequired\" xml:space=\"preserve\">\n    <value>需要關機</value>\n  </data>\n  <data name=\"PackageControl_RebootRecommended\" xml:space=\"preserve\">\n    <value>建議重新啟動</value>\n  </data>\n  <data name=\"SaveAndClose\" xml:space=\"preserve\">\n    <value>儲存 &amp; 關閉</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>客製化模式預設</value>\n  </data>\n  <data name=\"GodModePresetAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>切換到客製化模式預設。\n此設定僅在啟用客製化模式時才會生效。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Title\" xml:space=\"preserve\">\n    <value>預設名稱</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_EditPreset_Message\" xml:space=\"preserve\">\n    <value>名稱</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_ActivePreset_Title\" xml:space=\"preserve\">\n    <value>活動預設</value>\n  </data>\n  <data name=\"AboutPage_ApplicationFolders\" xml:space=\"preserve\">\n    <value>應用程式資料夾</value>\n  </data>\n  <data name=\"AboutPage_Data\" xml:space=\"preserve\">\n    <value>Data</value>\n  </data>\n  <data name=\"AboutPage_Temp\" xml:space=\"preserve\">\n    <value>Temp</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Title\" xml:space=\"preserve\">\n    <value>固定顯示亮度</value>\n  </data>\n  <data name=\"SettingsPage_SynchronizeBrightnessToAllPowerPlans_Message\" xml:space=\"preserve\">\n    <value>當啟用後，變更 Windows 電源計劃時仍將保持亮度不變。</value>\n  </data>\n  <data name=\"Notification_UpdateAvailable\" xml:space=\"preserve\">\n    <value>已有可供使用的更新 {0}！</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL\" xml:space=\"preserve\">\n    <value>峰值功率限制</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL\" xml:space=\"preserve\">\n    <value>APU 功率限制（SPPT）</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_LongTermPL_Description\" xml:space=\"preserve\">\n    <value>CPU 持續功率限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_ShortTermPL_Description\" xml:space=\"preserve\">\n    <value>CPU 短時間峰值功率限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PeakPL_Description\" xml:space=\"preserve\">\n    <value>CPU 瞬間功率限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_CrossLoading_Description\" xml:space=\"preserve\">\n    <value>CPU 和 GPU 達到最大負載時，CPU 可以達到的最大功率。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_APUsPPT_PL_Description\" xml:space=\"preserve\">\n    <value>CPU 在一定的延遲後可以達到的最大功率限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>在降低頻率和功率之前，CPU 可以達到的最高溫度。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_DynamicBoost_Description\" xml:space=\"preserve\">\n    <value>基於 CPU 的功率，最大可以借用 GPU 的額外功率。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_CTGP_Description\" xml:space=\"preserve\">\n    <value>基本功率上，最大可以分配給 GPU 的額外功率。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TempLimit_Description\" xml:space=\"preserve\">\n    <value>在降低頻率和功率之前，GPU 可以達到的最高溫度。</value>\n  </data>\n  <data name=\"Default\" xml:space=\"preserve\">\n    <value>預設</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau\" xml:space=\"preserve\">\n    <value>短時間功率持續時間限制</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_CPU_PL1Tau_Description\" xml:space=\"preserve\">\n    <value>允許 CPU 使用短時間功率限制進行加速的時間量。當 Tau 到期時，將使用長時間功率限制。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl\" xml:space=\"preserve\">\n    <value>連接電源時的總處理器功率目標。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description\" xml:space=\"preserve\">\n    <value>CPU 觸發 GPU 動態功率調整點。</value>\n  </data>\n  <data name=\"Create\" xml:space=\"preserve\">\n    <value>建立</value>\n  </data>\n  <data name=\"AddAutomationStepWindow_Title\" xml:space=\"preserve\">\n    <value>新增條件</value>\n  </data>\n  <data name=\"CreateAutomationPipelineWindow_Title\" xml:space=\"preserve\">\n    <value>建立功能</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerMode\" xml:space=\"preserve\">\n    <value>電源模式</value>\n  </data>\n  <data name=\"StatusTrayPopup_Preset\" xml:space=\"preserve\">\n    <value>預設</value>\n  </data>\n  <data name=\"StatusTrayPopup_DiscreteGPU\" xml:space=\"preserve\">\n    <value>獨立 GPU</value>\n  </data>\n  <data name=\"StatusTrayPopup_PowerState\" xml:space=\"preserve\">\n    <value>電源狀態</value>\n  </data>\n  <data name=\"StatusTrayPopup_Battery\" xml:space=\"preserve\">\n    <value>電池</value>\n  </data>\n  <data name=\"StatusTrayPopup_Mode\" xml:space=\"preserve\">\n    <value>模式</value>\n  </data>\n  <data name=\"StatusTrayPopup_DischargeRate\" xml:space=\"preserve\">\n    <value>釋放功率</value>\n  </data>\n  <data name=\"StatusTrayPopup_UpdateAvailable\" xml:space=\"preserve\">\n    <value>已有可供使用的更新！</value>\n  </data>\n  <data name=\"SymbolRegularPicker_Title\" xml:space=\"preserve\">\n    <value>選擇圖示</value>\n  </data>\n  <data name=\"AutomationPage_ChangeIcon\" xml:space=\"preserve\">\n    <value>變更圖示</value>\n  </data>\n  <data name=\"BatteryPage_LowLevel\" xml:space=\"preserve\">\n    <value>電池低電量</value>\n  </data>\n  <data name=\"AutomationPipelineTriggerConfigurationWindow_Title\" xml:space=\"preserve\">\n    <value>組態設定</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Title\" xml:space=\"preserve\">\n    <value>偵測到 S0 Lower Power Model</value>\n  </data>\n  <data name=\"PowerPlansWindow_AoAcWarning_Message\" xml:space=\"preserve\">\n    <value>Windows 回報裝置支援新式待命（Modern Standby）。使用平衡以外的電源計劃可能導致未預期的行為。</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlans_Message\" xml:space=\"preserve\">\n    <value>選擇電源模式變更時要套用的 Windows 電源計劃。</value>\n  </data>\n  <data name=\"SettingsPage_Power_Title\" xml:space=\"preserve\">\n    <value>電源</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerPlansControlPanel_Title\" xml:space=\"preserve\">\n    <value>開啟 Windows 控制台中的電源計劃選項</value>\n  </data>\n  <data name=\"PoweredOff\" xml:space=\"preserve\">\n    <value>已關閉</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>匯入鍵盤背光設定檔</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>匯入並套用背光組態設定到目前的設定檔。</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightImportProfileAutomationStepControl_Path\" xml:space=\"preserve\">\n    <value>路徑</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_After\" xml:space=\"preserve\">\n    <value>在 {0} 之後</value>\n  </data>\n  <data name=\"MultipleTriggersAutomationPipelineTrigger_DisplayName\" xml:space=\"preserve\">\n    <value>多選觸發條件……</value>\n    <comment>Allows the user to merge multiple triggers for the execution of selected actions.</comment>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_Title\" xml:space=\"preserve\">\n    <value>GPU 超頻設定</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>核心頻率偏移</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title\" xml:space=\"preserve\">\n    <value>記憶體頻率偏移</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Title\" xml:space=\"preserve\">\n    <value>GPU 超頻</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUControl_Message\" xml:space=\"preserve\">\n    <value>藉由對獨立 GPU 超頻以提升效能。</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU 超頻</value>\n  </data>\n  <data name=\"OverclockDiscreteGPUAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>藉由對獨立 GPU 超頻以提升效能。\n\n警告：如果獨立顯示卡無法使用，則此功能將無法正確地執行。</value>\n  </data>\n  <data name=\"PortsBacklightControl_Title\" xml:space=\"preserve\">\n    <value>介面指示燈</value>\n  </data>\n  <data name=\"PortsBacklightControl_Message\" xml:space=\"preserve\">\n    <value>開啟或關閉筆記型電腦的介面顯示燈。</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>介面指示燈</value>\n  </data>\n  <data name=\"PortsBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>開啟或關閉筆記型電腦的介面顯示燈。</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Title\" xml:space=\"preserve\">\n    <value>面板圖示背光</value>\n  </data>\n  <data name=\"PanelLogoBacklightControl_Message\" xml:space=\"preserve\">\n    <value>開啟或關閉筆記型電腦的背蓋背光。</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>面板圖示背光</value>\n  </data>\n  <data name=\"PanelLogoBacklightAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>開啟或關閉筆記型電腦的背蓋背光。</value>\n  </data>\n  <data name=\"GHz\" xml:space=\"preserve\">\n    <value>GHz</value>\n  </data>\n  <data name=\"MHz\" xml:space=\"preserve\">\n    <value>MHz</value>\n  </data>\n  <data name=\"SensorsControl_Maximum\" xml:space=\"preserve\">\n    <value>最大：{0}</value>\n  </data>\n  <data name=\"SensorsControl_CPU_Title\" xml:space=\"preserve\">\n    <value>CPU</value>\n  </data>\n  <data name=\"SensorsControl_Utilization_Title\" xml:space=\"preserve\">\n    <value>使用率</value>\n  </data>\n  <data name=\"SensorsControl_CoreClock_Title\" xml:space=\"preserve\">\n    <value>核心時脈</value>\n  </data>\n  <data name=\"SensorsControl_Temperature_Title\" xml:space=\"preserve\">\n    <value>溫度</value>\n  </data>\n  <data name=\"SensorsControl_Fan_Title\" xml:space=\"preserve\">\n    <value>風扇</value>\n  </data>\n  <data name=\"SensorsControl_GPU_Title\" xml:space=\"preserve\">\n    <value>GPU</value>\n  </data>\n  <data name=\"SensorsControl_MemoryClock_Title\" xml:space=\"preserve\">\n    <value>記憶體時脈</value>\n  </data>\n  <data name=\"SensorsControl_RefreshInterval\" xml:space=\"preserve\">\n    <value>重新整理間隔</value>\n  </data>\n  <data name=\"InstantBootControl_Title\" xml:space=\"preserve\">\n    <value>快速啟動</value>\n  </data>\n  <data name=\"InstantBootControl_Message\" xml:space=\"preserve\">\n    <value>當電源連接後啟動筆記型電腦。</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>快速啟動</value>\n  </data>\n  <data name=\"InstantBootAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>當電源連接後啟動筆記型電腦。</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Title\" xml:space=\"preserve\">\n    <value>無法變更電源模式</value>\n  </data>\n  <data name=\"PowerModeUnavailableWithoutACException_Message\" xml:space=\"preserve\">\n    <value>當未連接電源供應器時無法啟用 {0}。</value>\n    <comment>For example: \"{Performance} power mode is not available without AC power.\"</comment>\n  </data>\n  <data name=\"EditDashboardWindow_Sensors\" xml:space=\"preserve\">\n    <value>感測器</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title\" xml:space=\"preserve\">\n    <value>無法變更 GPU 運作模式</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message\" xml:space=\"preserve\">\n    <value>如果 dGPU（獨立顯示卡）沒有變更模式，請等幾秒後再次嘗試。\n如果仍然沒有得到回應，請重新啟動您的筆記型電腦。</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_IGPUOnly\" xml:space=\"preserve\">\n    <value>dGPU（獨立顯示卡）目前使用中</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_IGPUOnly\" xml:space=\"preserve\">\n    <value>當 dGPU（獨立顯示卡）未使用時將自動中斷連接。</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Title_Auto\" xml:space=\"preserve\">\n    <value>dGPU（獨立顯示卡）目前正在使用或筆記型電腦未使用電池電源</value>\n  </data>\n  <data name=\"IGPUModeChangeException_Message_Auto\" xml:space=\"preserve\">\n    <value>未使用筆記型電腦或使用電池供電時，dGPU（獨立顯示卡）將自動中斷連接。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_VantageWarning_Title\" xml:space=\"preserve\">\n    <value>當 Lenovo Vantage 或其他服務正在執行時，客製化模式設定將無法被正確地套用。</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_LegionZoneWarning_Title\" xml:space=\"preserve\">\n    <value>當 LegionZone 或其他服務正在執行時，客製化模式設定將無法被正確地套用。</value>\n  </data>\n  <data name=\"DGPU_Connected_Title\" xml:space=\"preserve\">\n    <value>dGPU（獨立顯示卡）已連接</value>\n  </data>\n  <data name=\"DGPU_Disconnected_Title\" xml:space=\"preserve\">\n    <value>dGPU（獨立顯示卡）已中斷連接</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>GPU 運作模式</value>\n  </data>\n  <data name=\"ComboBoxHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>根據您的使用場景和電源情況選擇顯示卡的執行模式。\n切換模式可能需要重新啟動。</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>混合模式（Hybrid）</value>\n  </data>\n  <data name=\"ToggleHybridModeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>混合模式允許在內建顯示卡和獨立顯示卡之間切換。\n需要重新啟動。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationDuration_Title\" xml:space=\"preserve\">\n    <value>持續時間</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Updates_Title\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl\" xml:space=\"preserve\">\n    <value>GPU 到 CPU Dynamic Boost</value>\n  </data>\n  <data name=\"GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description\" xml:space=\"preserve\">\n    <value>這是根據 GPU 使用情況可以從 GPU 分配給 CPU 的最大額外功率。該值越高，使用此 CPU 的應用程式的效能越好。</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Title\" xml:space=\"preserve\">\n    <value>啟動商標</value>\n  </data>\n  <data name=\"SettingsPage_BootLogo_Message\" xml:space=\"preserve\">\n    <value>客製化系統啟動時的商標圖片。</value>\n  </data>\n  <data name=\"BootLogoWindow_Title\" xml:space=\"preserve\">\n    <value>啟動商標</value>\n  </data>\n  <data name=\"BootLogoWindow_DefaultLogoSet\" xml:space=\"preserve\">\n    <value>已設定為預設啟動商標</value>\n  </data>\n  <data name=\"BootLogoWindow_CustomLogoSet\" xml:space=\"preserve\">\n    <value>已設定為預設啟動商標</value>\n  </data>\n  <data name=\"BootLogoWindow_Status\" xml:space=\"preserve\">\n    <value>狀態</value>\n  </data>\n  <data name=\"RevertToDefault\" xml:space=\"preserve\">\n    <value>回復為預設</value>\n  </data>\n  <data name=\"BootLogoWindow_Customize\" xml:space=\"preserve\">\n    <value>客製化</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_Automation\" xml:space=\"preserve\">\n    <value>功能</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_NotificationText\" xml:space=\"preserve\">\n    <value>通知文字</value>\n  </data>\n  <data name=\"NotificationAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>顯示通知</value>\n  </data>\n  <data name=\"AutomationPipelineControl_SubtitlePart_Preset\" xml:space=\"preserve\">\n    <value>預設</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Title\" xml:space=\"preserve\">\n    <value>智慧鎖定 Fn 鍵</value>\n  </data>\n  <data name=\"SettingsPage_SmartFnLock_Message\" xml:space=\"preserve\">\n    <value>按下 Alt、Ctrl 或 Shift 鍵時，Fn 將會暫時解除鎖定。</value>\n  </data>\n  <data name=\"Off\" xml:space=\"preserve\">\n    <value>關閉</value>\n  </data>\n  <data name=\"BootLogoWindow_Description\" xml:space=\"preserve\">\n    <value>客製化啟動商標必須恰好為 {0} 像素。\n支援的格式有：{1}。</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Title\" xml:space=\"preserve\">\n    <value>過夜電池充電</value>\n  </data>\n  <data name=\"BatteryNightChargeModeControl_Message\" xml:space=\"preserve\">\n    <value>啟用後，該裝置在過夜插入時將充電到 80%，並在您早上使用裝置時完成充電到 100%。</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>過夜電池充電</value>\n  </data>\n  <data name=\"BatteryNightChargeAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>啟用後，該裝置在過夜插入時將充電到 80%，並在您早上使用裝置時完成充電到 100%。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Size\" xml:space=\"preserve\">\n    <value>無效的圖片尺寸。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Invalid_Image_Format\" xml:space=\"preserve\">\n    <value>無效的圖片格式。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Mount_EFI_Partition\" xml:space=\"preserve\">\n    <value>無法掛載 EFI 分割區。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege\" xml:space=\"preserve\">\n    <value>無法設定 UEFI 權限。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition\" xml:space=\"preserve\">\n    <value>EFI 分割區空間不足。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomFailed\" xml:space=\"preserve\">\n    <value>客製化商標無法被設定：{0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultFailed\" xml:space=\"preserve\">\n    <value>預設商標無法被設定：{0}</value>\n  </data>\n  <data name=\"BootLogoWindow_SetDefaultSuccess\" xml:space=\"preserve\">\n    <value>設定為預設啟動商標。</value>\n  </data>\n  <data name=\"BootLogoWindow_SetCustomSuccess\" xml:space=\"preserve\">\n    <value>設定為客製化啟動商標。</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_NetworkName\" xml:space=\"preserve\">\n    <value>網路名稱（SSID）</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName\" xml:space=\"preserve\">\n    <value>複製目前的網路名稱</value>\n  </data>\n  <data name=\"WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork\" xml:space=\"preserve\">\n    <value>將任何 Wi-Fi 網路留空。</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Title\" xml:space=\"preserve\">\n    <value>HWiNFO64</value>\n  </data>\n  <data name=\"SettingsPage_HWiNFO_Message\" xml:space=\"preserve\">\n    <value>與 HWiNFO64 共享風扇速度、電池溫度等。變更此選項後，您可能需要重新啟動 HWiNFO64。</value>\n  </data>\n  <data name=\"SettingsPage_Integrations_Title\" xml:space=\"preserve\">\n    <value>整合</value>\n  </data>\n  <data name=\"Settings\" xml:space=\"preserve\">\n    <value>設定</value>\n  </data>\n  <data name=\"Information\" xml:space=\"preserve\">\n    <value>資訊</value>\n  </data>\n  <data name=\"PackagesPage_DownloadTo\" xml:space=\"preserve\">\n    <value>下載資料夾</value>\n  </data>\n  <data name=\"PackagesPage_OpenDownloadTo\" xml:space=\"preserve\">\n    <value>開啟下載資料夾</value>\n  </data>\n  <data name=\"PackageControl_Download\" xml:space=\"preserve\">\n    <value>下載</value>\n  </data>\n  <data name=\"PackageControl_OpenReadme\" xml:space=\"preserve\">\n    <value>開啟讀我檔案（README）</value>\n  </data>\n  <data name=\"SpectrumKeyboardBacklightControl_Preset\" xml:space=\"preserve\">\n    <value>預設</value>\n  </data>\n  <data name=\"DeviceInformationWindow_Refresh\" xml:space=\"preserve\">\n    <value>重新整理</value>\n  </data>\n  <data name=\"AbstractAutomationStepControl_Delete\" xml:space=\"preserve\">\n    <value>刪除</value>\n  </data>\n  <data name=\"PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes\" xml:space=\"preserve\">\n    <value>設定執行間隔（分鐘）</value>\n    <comment>A prompt that is used both to ask the user to input an integer, representing the number of minutes between two periodic actions are triggered, and to inform the user what have they set once they are done configuring the action.</comment>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Message\" xml:space=\"preserve\">\n    <value>系統啟動時，重設電池部分「電池使用時間」的計數器。</value>\n  </data>\n  <data name=\"SettingsPage_OnBatterySinceReset_Title\" xml:space=\"preserve\">\n    <value>啟動時，重設「電池使用時間」</value>\n  </data>\n  <data name=\"TurnOffWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>關閉 Wi-Fi</value>\n  </data>\n  <data name=\"TurnOnWiFiAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>開啟 Wi-Fi</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently\" xml:space=\"preserve\">\n    <value>靜音地執行</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished\" xml:space=\"preserve\">\n    <value>等待直到任務完成</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessRunSilently_Description\" xml:space=\"preserve\">\n    <value>在不建立控制台視窗的情況下，執行控制台應用程式。</value>\n  </data>\n  <data name=\"RunAutomationStepControl_ProcessWaitUntilFinished_Description\" xml:space=\"preserve\">\n    <value>等待直到程式或腳本完成執行</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>當開啟靜音後，所有活動的音訊輸出裝置都將會被靜音。</value>\n  </data>\n  <data name=\"SpeakerAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>喇叭</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Title\" xml:space=\"preserve\">\n    <value>最小化到系統匣</value>\n  </data>\n  <data name=\"SettingsPage_MinimizeToTray_Message\" xml:space=\"preserve\">\n    <value>保持最小化到系統匣而不是工作列。</value>\n  </data>\n  <data name=\"WindowsPowerModesWindow_Title\" xml:space=\"preserve\">\n    <value>Windows 電源模式</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Title\" xml:space=\"preserve\">\n    <value>使用 Fn+Q 切換到客製化模式</value>\n  </data>\n  <data name=\"Settings_GodModeFnQSwitchable_Message\" xml:space=\"preserve\">\n    <value>允許使用 Fn+Q 快速切換到客製化模式。</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Title\" xml:space=\"preserve\">\n    <value>電源模式同步</value>\n  </data>\n  <data name=\"SettingsPage_PowerModeMapping_Message\" xml:space=\"preserve\">\n    <value>當變更電源模式時，自動地變更 Windows 電源計劃或 Windows 電源模式。</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Title\" xml:space=\"preserve\">\n    <value>Windows 電源模式</value>\n  </data>\n  <data name=\"SettingsPage_WindowsPowerModes_Message\" xml:space=\"preserve\">\n    <value>選擇電源模式變更時要套用的 Windows 電源模式。</value>\n  </data>\n  <data name=\"CompatibilityCheckError_Message\" xml:space=\"preserve\">\n    <value>讀取裝置資訊時發生錯誤。</value>\n  </data>\n  <data name=\"MainWindow_NavigationItem_Macro\" xml:space=\"preserve\">\n    <value>巨集</value>\n  </data>\n  <data name=\"MacroPage_Title\" xml:space=\"preserve\">\n    <value>巨集</value>\n  </data>\n  <data name=\"MacroSequenceControl_Repeat_Title\" xml:space=\"preserve\">\n    <value>重複</value>\n  </data>\n  <data name=\"MacroSequenceControl_IgnoreDelays_Title\" xml:space=\"preserve\">\n    <value>忽略延遲</value>\n  </data>\n  <data name=\"Clear\" xml:space=\"preserve\">\n    <value>清除</value>\n  </data>\n  <data name=\"MacroSequenceControl_Record\" xml:space=\"preserve\">\n    <value>記錄</value>\n  </data>\n  <data name=\"MacroSequenceControl_StopRecording\" xml:space=\"preserve\">\n    <value>停止記錄</value>\n  </data>\n  <data name=\"MacroSequenceControl_DontRepeat\" xml:space=\"preserve\">\n    <value>不重複</value>\n  </data>\n  <data name=\"MacroPage_Enable_Subtitle\" xml:space=\"preserve\">\n    <value>巨集功能一定要在 Lenovo Legion 工具套件執行時才可以運作。</value>\n  </data>\n  <data name=\"MacroPage_Enable_Title\" xml:space=\"preserve\">\n    <value>啟用</value>\n  </data>\n  <data name=\"MacroPage_Subtitle\" xml:space=\"preserve\">\n    <value>您可以記錄一系列的按鍵操作並使用鍵盤上的數字鍵呼叫它們。</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>巨集</value>\n  </data>\n  <data name=\"MacroAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>啟用或停用巨集。</value>\n  </data>\n  <data name=\"MacroSequenceControl_InterruptOnOtherKey_Title\" xml:space=\"preserve\">\n    <value>當按下其他按鍵後中斷</value>\n  </data>\n  <data name=\"Hide\" xml:space=\"preserve\">\n    <value>隱藏</value>\n  </data>\n  <data name=\"HideAll\" xml:space=\"preserve\">\n    <value>隱藏全部</value>\n  </data>\n  <data name=\"DevicePipelineTriggerTabItemContent_Devices\" xml:space=\"preserve\">\n    <value>裝置</value>\n  </data>\n  <data name=\"DeselectAll\" xml:space=\"preserve\">\n    <value>取消全部選擇</value>\n  </data>\n  <data name=\"SelectAll\" xml:space=\"preserve\">\n    <value>選取全部</value>\n  </data>\n  <data name=\"MacroSequenceControl_Keyboard\" xml:space=\"preserve\">\n    <value>僅限鍵盤</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouse\" xml:space=\"preserve\">\n    <value>鍵盤與滑鼠按鍵</value>\n  </data>\n  <data name=\"MacroSequenceControl_KeyboardMouseMovement\" xml:space=\"preserve\">\n    <value>所有輸入</value>\n  </data>\n  <data name=\"MacroSequenceControl_RecordingOptions\" xml:space=\"preserve\">\n    <value>記錄選項</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Preparing_Title\" xml:space=\"preserve\">\n    <value>將在 3 秒內進行記錄……</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Title\" xml:space=\"preserve\">\n    <value>正在記錄……</value>\n  </data>\n  <data name=\"MacroRecordingWindow_Recording_Message\" xml:space=\"preserve\">\n    <value>按下 ESC 鍵停止記錄。</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlySelected\" xml:space=\"preserve\">\n    <value>僅顯示已選擇的裝置</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable\" xml:space=\"preserve\">\n    <value>僅顯示可移動的裝置</value>\n  </data>\n  <data name=\"DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected\" xml:space=\"preserve\">\n    <value>僅顯示已連接的裝置</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Title\" xml:space=\"preserve\">\n    <value>命令列介面（CLI）</value>\n  </data>\n  <data name=\"SettingsPage_CLI_Message\" xml:space=\"preserve\">\n    <value>啟用命令列介面，允許使用命令列進行控制。</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Title\" xml:space=\"preserve\">\n    <value>新增命令列介面（CLI）至 PATH 變數</value>\n  </data>\n  <data name=\"SettingsPage_CLIAddToPath_Message\" xml:space=\"preserve\">\n    <value>新增命令列介面（CLI）至使用者 PATH 環境變數。</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Title\" xml:space=\"preserve\">\n    <value>溫度</value>\n  </data>\n  <data name=\"SettingsPage_Temperature_Message\" xml:space=\"preserve\">\n    <value>選擇溫度感應器使用的單位。</value>\n  </data>\n  <data name=\"MainWindows_FnKeysRunning\" xml:space=\"preserve\">\n    <value>Lenovo Hotkeys 正在背景執行。</value>\n  </data>\n  <data name=\"MainWindow_LegionZoneRunning\" xml:space=\"preserve\">\n    <value>Legion Zone 正在背景執行。</value>\n  </data>\n  <data name=\"MainWindows_VantageRunning\" xml:space=\"preserve\">\n    <value>Lenovo Vantage 與（或）ImController 正在背景執行。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Message\" xml:space=\"preserve\">\n    <value>在所有連接到裝置的顯示器上顯示通知。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationOnAllScreens_Title\" xml:space=\"preserve\">\n    <value>在所有顯示器上顯示通知</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdatesButton_Content\" xml:space=\"preserve\">\n    <value>檢查</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Started_Title\" xml:space=\"preserve\">\n    <value>正在檢查更新⋯⋯</value>\n  </data>\n  <data name=\"SettingsPage_CheckUpdates_Title\" xml:space=\"preserve\">\n    <value>檢查更新</value>\n  </data>\n  <data name=\"SettingsPage_Update_Title\" xml:space=\"preserve\">\n    <value>更新</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message\" xml:space=\"preserve\">\n    <value>已達到 API 訪問頻率上限，請稍後再試。</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Title\" xml:space=\"preserve\">\n    <value>無法檢查更新。</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Error_Unknown_Message\" xml:space=\"preserve\">\n    <value>發生錯誤，請稍後再試一次。</value>\n  </data>\n  <data name=\"MainWindow_CheckForUpdates_Success_Title\" xml:space=\"preserve\">\n    <value>沒有找到更新</value>\n  </data>\n  <data name=\"SettingsPage_UpdateCheckFrequency_Title\" xml:space=\"preserve\">\n    <value>自動檢查更新</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Title\" xml:space=\"preserve\">\n    <value>沒有找到更新目錄</value>\n  </data>\n  <data name=\"PackagesPage_UpdateCatalogNotFound_Message\" xml:space=\"preserve\">\n    <value>嘗試從其他資源獲得更新</value>\n  </data>\n  <data name=\"PackagesPage_Error_Title\" xml:space=\"preserve\">\n    <value>發生錯誤</value>\n  </data>\n  <data name=\"PackagesPage_Error_CheckInternet_Message\" xml:space=\"preserve\">\n    <value>檢查您的網路連線是否正常。</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>播放聲音</value>\n  </data>\n  <data name=\"PlaySoundAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>支援像 wav 或 mp3 等音訊格式。</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Title\" xml:space=\"preserve\">\n    <value>快捷功能</value>\n  </data>\n  <data name=\"QuickActionAutomationStepControl_Message\" xml:space=\"preserve\">\n    <value>執行已儲存的快捷功能。</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Title\" xml:space=\"preserve\">\n    <value>通知保持置頂</value>\n  </data>\n  <data name=\"NotificationsSettingsWindow_NotificationAlwaysOnTop_Message\" xml:space=\"preserve\">\n    <value>保持通知顯示在頂端。\n這不會影響其他全螢幕視窗，但您將無法點擊這些通知。</value>\n  </data>\n</root>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Settings/DashboardSettings.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.Settings;\n\nnamespace LenovoLegionToolkit.WPF.Settings;\n\npublic class DashboardSettings() : AbstractSettings<DashboardSettings.DashboardSettingsStore>(\"dashboard.json\")\n{\n    public class DashboardSettingsStore\n    {\n        public bool ShowSensors { get; set; } = true;\n        public int SensorsRefreshIntervalSeconds { get; set; } = 1;\n        public DashboardGroup[]? Groups { get; set; }\n    }\n\n    protected override DashboardSettingsStore Default => new();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Structs.cs",
    "content": "﻿using System;\nusing System.Windows;\nusing LenovoLegionToolkit.WPF.Resources;\n\nnamespace LenovoLegionToolkit.WPF;\n\npublic readonly struct DashboardGroup(DashboardGroupType type, string? customName, params DashboardItem[] items)\n{\n    public static readonly DashboardGroup[] DefaultGroups =\n    [\n        new(DashboardGroupType.Power, null,\n            DashboardItem.PowerMode,\n            DashboardItem.BatteryMode,\n            DashboardItem.BatteryNightChargeMode,\n            DashboardItem.AlwaysOnUsb,\n            DashboardItem.InstantBoot,\n            DashboardItem.FlipToStart),\n        new(DashboardGroupType.Graphics, null,\n            DashboardItem.HybridMode,\n            DashboardItem.DiscreteGpu,\n            DashboardItem.OverclockDiscreteGpu),\n        new(DashboardGroupType.Display, null,\n            DashboardItem.Resolution,\n            DashboardItem.RefreshRate,\n            DashboardItem.DpiScale,\n            DashboardItem.Hdr,\n            DashboardItem.OverDrive,\n            DashboardItem.TurnOffMonitors),\n        new(DashboardGroupType.Other, null,\n            DashboardItem.Microphone,\n            DashboardItem.WhiteKeyboardBacklight,\n            DashboardItem.PanelLogoBacklight,\n            DashboardItem.PortsBacklight,\n            DashboardItem.TouchpadLock,\n            DashboardItem.FnLock,\n            DashboardItem.WinKeyLock)\n    ];\n\n    public DashboardGroupType Type { get; } = type;\n\n    public string? CustomName { get; } = type == DashboardGroupType.Custom ? customName : null;\n\n    public DashboardItem[] Items { get; } = items;\n\n    public string GetName() => Type switch\n    {\n        DashboardGroupType.Power => Resource.DashboardPage_Power_Title,\n        DashboardGroupType.Graphics => Resource.DashboardPage_Graphics_Title,\n        DashboardGroupType.Display => Resource.DashboardPage_Display_Title,\n        DashboardGroupType.Other => Resource.DashboardPage_Other_Title,\n        DashboardGroupType.Custom => CustomName ?? string.Empty,\n        _ => throw new InvalidOperationException($\"Invalid type {Type}\"),\n    };\n\n    public override string ToString() =>\n        $\"{nameof(Type)}: {Type},\" +\n        $\" {nameof(CustomName)}: {CustomName},\" +\n        $\" {nameof(Items)}: {string.Join(\",\", Items)}\";\n}\n\npublic readonly struct ScreenInfo(Rect workArea, uint dpiX, uint dpiY, bool isPrimary)\n{\n    public Rect WorkArea { get; } = workArea;\n    public uint DpiX { get; } = dpiX;\n    public uint DpiY { get; } = dpiY;\n    public bool IsPrimary { get; } = isPrimary;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Styles/Badge.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\">\n\n    <!--  ReSharper disable Xaml.StaticResourceNotResolved  -->\n\n    <Style TargetType=\"{x:Type custom:Badge}\">\n        <Setter Property=\"Foreground\">\n            <Setter.Value>\n                <SolidColorBrush Color=\"{DynamicResource TextFillColorPrimary}\" />\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Background\">\n            <Setter.Value>\n                <SolidColorBrush Color=\"{DynamicResource SystemAccentColorSecondary}\" />\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"BorderBrush\" Value=\"Transparent\" />\n        <Setter Property=\"Padding\" Value=\"4\" />\n        <Setter Property=\"Focusable\" Value=\"False\" />\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"True\" />\n        <Setter Property=\"OverridesDefaultStyle\" Value=\"True\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type custom:Badge}\">\n                    <Border\n                        x:Name=\"Border\"\n                        Padding=\"{TemplateBinding Padding}\"\n                        Background=\"{TemplateBinding Background}\"\n                        BorderBrush=\"{TemplateBinding BorderBrush}\"\n                        BorderThickness=\"1\"\n                        CornerRadius=\"4\">\n                        <ContentPresenter />\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"Appearance\" Value=\"Primary\">\n                            <Setter Property=\"Foreground\">\n                                <Setter.Value>\n                                    <SolidColorBrush Color=\"{DynamicResource TextOnAccentFillColorPrimary}\" />\n                                </Setter.Value>\n                            </Setter>\n                        </Trigger>\n                        <Trigger Property=\"Appearance\" Value=\"Transparent\">\n                            <Setter Property=\"BorderBrush\" Value=\"{DynamicResource ControlElevationBorderBrush}\" />\n                            <Setter TargetName=\"Border\" Property=\"Background\" Value=\"Transparent\" />\n                        </Trigger>\n                        <Trigger Property=\"Appearance\" Value=\"Secondary\">\n                            <Setter Property=\"BorderBrush\" Value=\"{DynamicResource ControlElevationBorderBrush}\" />\n                            <Setter TargetName=\"Border\" Property=\"Background\" Value=\"{DynamicResource ControlFillColorDefaultBrush}\" />\n                        </Trigger>\n                        <Trigger Property=\"Appearance\" Value=\"Info\">\n                            <Setter TargetName=\"Border\" Property=\"Background\" Value=\"{DynamicResource PaletteLightBlueBrush}\" />\n                        </Trigger>\n                        <Trigger Property=\"Appearance\" Value=\"Caution\">\n                            <Setter TargetName=\"Border\" Property=\"Background\" Value=\"{DynamicResource PaletteOrangeBrush}\" />\n                        </Trigger>\n                        <Trigger Property=\"Appearance\" Value=\"Danger\">\n                            <Setter TargetName=\"Border\" Property=\"Background\" Value=\"{DynamicResource PaletteRedBrush}\" />\n                        </Trigger>\n                        <Trigger Property=\"Appearance\" Value=\"Success\">\n                            <Setter TargetName=\"Border\" Property=\"Background\" Value=\"{DynamicResource PaletteGreenBrush}\" />\n                        </Trigger>\n                        <Trigger Property=\"Appearance\" Value=\"Dark\">\n                            <Setter TargetName=\"Border\" Property=\"Background\" Value=\"{DynamicResource ControlStrongFillColorDarkBrush}\" />\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource TextFillColorLightPrimaryBrush}\" />\n                            <Setter Property=\"BorderBrush\" Value=\"{DynamicResource ControlElevationBorderBrush}\" />\n                        </Trigger>\n                        <Trigger Property=\"Appearance\" Value=\"Light\">\n                            <Setter TargetName=\"Border\" Property=\"Background\" Value=\"{DynamicResource ControlStrongFillColorLightBrush}\" />\n                            <Setter Property=\"Foreground\" Value=\"{DynamicResource TextFillColorDarkPrimaryBrush}\" />\n                            <Setter Property=\"BorderBrush\" Value=\"{DynamicResource ControlElevationBorderBrush}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n\n    <!--  ReSharper restore Xaml.StaticResourceNotResolved  -->\n\n</ResourceDictionary>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Styles/CardAction.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\">\n\n    <!--  ReSharper disable Xaml.StaticResourceNotResolved  -->\n\n    <Style BasedOn=\"{StaticResource DefaultUiCardActionStyle}\" TargetType=\"{x:Type custom:CardAction}\" />\n\n    <!--  ReSharper restore Xaml.StaticResourceNotResolved  -->\n\n</ResourceDictionary>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Styles/CardControl.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\">\n\n    <!--  ReSharper disable Xaml.StaticResourceNotResolved  -->\n\n    <Style BasedOn=\"{StaticResource DefaultUiCardControlStyle}\" TargetType=\"{x:Type custom:CardControl}\" />\n\n    <!--  ReSharper restore Xaml.StaticResourceNotResolved  -->\n\n</ResourceDictionary>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Styles/CardExpander.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\">\n\n    <!--  ReSharper disable Xaml.StaticResourceNotResolved  -->\n\n    <Style BasedOn=\"{StaticResource DefaultUiCardExpanderStyle}\" TargetType=\"{x:Type custom:CardExpander}\" />\n\n    <!--  ReSharper restore Xaml.StaticResourceNotResolved  -->\n\n</ResourceDictionary>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Styles/DynamicScrollBar.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\">\n\n    <!--  ReSharper disable Xaml.StaticResourceNotResolved  -->\n\n    <ControlTemplate x:Key=\"DynamicVerticalScrollBar\" TargetType=\"{x:Type wpfui:DynamicScrollBar}\">\n        <Grid>\n            <Grid.RowDefinitions>\n                <RowDefinition MaxHeight=\"14\" />\n                <RowDefinition Height=\"0.00001*\" />\n                <RowDefinition MaxHeight=\"14\" />\n            </Grid.RowDefinitions>\n            <RepeatButton\n                x:Name=\"PART_ButtonScrollUp\"\n                Grid.Row=\"0\"\n                Command=\"ScrollBar.LineUpCommand\"\n                Content=\"{x:Static wpfui:SymbolRegular.ChevronUp24}\"\n                Opacity=\"0\"\n                Style=\"{StaticResource DynamicScrollBarLineButton}\" />\n            <Track\n                x:Name=\"PART_Track\"\n                Grid.Row=\"1\"\n                Width=\"6\"\n                IsDirectionReversed=\"True\"\n                Opacity=\"0\">\n                <Track.DecreaseRepeatButton>\n                    <RepeatButton Command=\"ScrollBar.PageUpCommand\" Style=\"{StaticResource DynamicScrollBarPageButton}\" />\n                </Track.DecreaseRepeatButton>\n                <Track.Thumb>\n                    <!--\n                        TODO: Need to add a custom Thumb with a corner radius that will increase when OnMouseOver is triggered.\n                    -->\n                    <Thumb\n                        Margin=\"0\"\n                        Padding=\"0\"\n                        Style=\"{StaticResource DynamicScrollBarThumb}\" />\n                </Track.Thumb>\n                <Track.IncreaseRepeatButton>\n                    <RepeatButton Command=\"ScrollBar.PageDownCommand\" Style=\"{StaticResource DynamicScrollBarPageButton}\" />\n                </Track.IncreaseRepeatButton>\n            </Track>\n            <RepeatButton\n                x:Name=\"PART_ButtonScrollDown\"\n                Grid.Row=\"2\"\n                Command=\"ScrollBar.LineDownCommand\"\n                Content=\"{x:Static wpfui:SymbolRegular.ChevronDown24}\"\n                Opacity=\"0\"\n                Style=\"{StaticResource DynamicScrollBarLineButton}\" />\n        </Grid>\n        <ControlTemplate.Triggers>\n            <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                <Trigger.EnterActions>\n                    <BeginStoryboard>\n                        <Storyboard>\n                            <DoubleAnimation\n                                Storyboard.TargetName=\"PART_Track\"\n                                Storyboard.TargetProperty=\"Width\"\n                                From=\"6\"\n                                To=\"10\"\n                                Duration=\"{StaticResource DynamicScrollAnimationDuration}\" />\n                            <DoubleAnimation\n                                Storyboard.TargetName=\"PART_ButtonScrollUp\"\n                                Storyboard.TargetProperty=\"Opacity\"\n                                From=\"0.0\"\n                                To=\"1.0\"\n                                Duration=\"{StaticResource DynamicScrollAnimationDuration}\" />\n                            <DoubleAnimation\n                                Storyboard.TargetName=\"PART_ButtonScrollDown\"\n                                Storyboard.TargetProperty=\"Opacity\"\n                                From=\"0.0\"\n                                To=\"1.0\"\n                                Duration=\"{StaticResource DynamicScrollAnimationDuration}\" />\n                        </Storyboard>\n                    </BeginStoryboard>\n                </Trigger.EnterActions>\n                <Trigger.ExitActions>\n                    <BeginStoryboard>\n                        <Storyboard>\n                            <DoubleAnimation\n                                Storyboard.TargetName=\"PART_Track\"\n                                Storyboard.TargetProperty=\"Width\"\n                                From=\"10\"\n                                To=\"6\"\n                                Duration=\"{StaticResource DynamicScrollAnimationDuration}\" />\n                            <DoubleAnimation\n                                Storyboard.TargetName=\"PART_ButtonScrollUp\"\n                                Storyboard.TargetProperty=\"Opacity\"\n                                From=\"1.0\"\n                                To=\"0.0\"\n                                Duration=\"{StaticResource DynamicScrollAnimationDuration}\" />\n                            <DoubleAnimation\n                                Storyboard.TargetName=\"PART_ButtonScrollDown\"\n                                Storyboard.TargetProperty=\"Opacity\"\n                                From=\"1.0\"\n                                To=\"0.0\"\n                                Duration=\"{StaticResource DynamicScrollAnimationDuration}\" />\n                        </Storyboard>\n                    </BeginStoryboard>\n                </Trigger.ExitActions>\n            </Trigger>\n            <DataTrigger Binding=\"{Binding RelativeSource={RelativeSource AncestorType=wpfui:DynamicScrollViewer, AncestorLevel=1}, Path=IsMouseOver}\" Value=\"True\">\n                <DataTrigger.EnterActions>\n                    <BeginStoryboard>\n                        <Storyboard>\n                            <DoubleAnimation\n                                Storyboard.TargetName=\"PART_Track\"\n                                Storyboard.TargetProperty=\"Opacity\"\n                                From=\"0.0\"\n                                To=\"1.0\"\n                                Duration=\"{StaticResource DynamicScrollAnimationDuration}\" />\n                        </Storyboard>\n                    </BeginStoryboard>\n                </DataTrigger.EnterActions>\n                <DataTrigger.ExitActions>\n                    <BeginStoryboard>\n                        <Storyboard>\n                            <DoubleAnimation\n                                Storyboard.TargetName=\"PART_Track\"\n                                Storyboard.TargetProperty=\"Opacity\"\n                                From=\"1.0\"\n                                To=\"0.0\"\n                                Duration=\"{StaticResource DynamicScrollAnimationDuration}\" />\n                        </Storyboard>\n                    </BeginStoryboard>\n                </DataTrigger.ExitActions>\n            </DataTrigger>\n        </ControlTemplate.Triggers>\n    </ControlTemplate>\n\n    <Style BasedOn=\"{StaticResource UiDynamicScrollBar}\" TargetType=\"{x:Type wpfui:DynamicScrollBar}\">\n        <Style.Triggers>\n            <Trigger Property=\"Orientation\" Value=\"Vertical\">\n                <Setter Property=\"Template\" Value=\"{StaticResource DynamicVerticalScrollBar}\" />\n            </Trigger>\n        </Style.Triggers>\n    </Style>\n\n    <!--  ReSharper restore Xaml.StaticResourceNotResolved  -->\n\n</ResourceDictionary>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Styles/InfoBar.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\">\n\n    <!--  ReSharper disable Xaml.StaticResourceNotResolved  -->\n\n    <Thickness x:Key=\"InfoBarPadding\">14,8,14,8</Thickness>\n    <Thickness x:Key=\"InfoBarBorderThemeThickness\">1</Thickness>\n\n    <Style TargetType=\"{x:Type custom:InfoBar}\">\n        <Setter Property=\"Background\">\n            <Setter.Value>\n                <SolidColorBrush Color=\"{DynamicResource ControlFillColorDefault}\" />\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Foreground\">\n            <Setter.Value>\n                <SolidColorBrush Color=\"{DynamicResource TextFillColorPrimary}\" />\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Padding\" Value=\"{StaticResource InfoBarPadding}\" />\n        <Setter Property=\"HorizontalAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"VerticalContentAlignment\" Value=\"Center\" />\n        <Setter Property=\"BorderBrush\" Value=\"{DynamicResource ControlElevationBorderBrush}\" />\n        <Setter Property=\"BorderThickness\" Value=\"{StaticResource InfoBarBorderThemeThickness}\" />\n        <Setter Property=\"FontSize\" Value=\"{DynamicResource ControlContentThemeFontSize}\" />\n        <Setter Property=\"FontWeight\" Value=\"Normal\" />\n        <Setter Property=\"Border.CornerRadius\" Value=\"{DynamicResource ControlCornerRadius}\" />\n        <Setter Property=\"Focusable\" Value=\"True\" />\n        <Setter Property=\"KeyboardNavigation.IsTabStop\" Value=\"True\" />\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"True\" />\n        <Setter Property=\"OverridesDefaultStyle\" Value=\"True\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type controls:InfoBar}\">\n                    <Grid x:Name=\"InfoBarRoot\">\n                        <Border\n                            x:Name=\"ContentBorder\"\n                            Padding=\"16,14,16,10\"\n                            HorizontalAlignment=\"{TemplateBinding HorizontalAlignment}\"\n                            VerticalAlignment=\"{TemplateBinding VerticalAlignment}\"\n                            Background=\"{TemplateBinding Background}\"\n                            BorderBrush=\"{TemplateBinding BorderBrush}\"\n                            BorderThickness=\"{TemplateBinding BorderThickness}\"\n                            CornerRadius=\"{TemplateBinding Border.CornerRadius}\">\n                            <Grid>\n                                <Grid.ColumnDefinitions>\n                                    <ColumnDefinition Width=\"Auto\" />\n                                    <ColumnDefinition Width=\"*\" />\n                                    <ColumnDefinition Width=\"Auto\" />\n                                </Grid.ColumnDefinitions>\n                                <Border Margin=\"0,2,14,0\" VerticalAlignment=\"Top\">\n                                    <controls:SymbolIcon\n                                        x:Name=\"SymbolIcon\"\n                                        VerticalAlignment=\"Top\"\n                                        Filled=\"True\"\n                                        FontSize=\"16\" />\n                                </Border>\n\n                                <WrapPanel Grid.Column=\"1\" VerticalAlignment=\"Top\">\n                                    <TextBlock\n                                        Margin=\"0,0,14,0\"\n                                        ScrollViewer.CanContentScroll=\"False\"\n                                        Text=\"{TemplateBinding Title}\"\n                                        TextElement.FontSize=\"{TemplateBinding FontSize}\"\n                                        TextElement.FontWeight=\"SemiBold\"\n                                        TextWrapping=\"Wrap\" />\n\n                                    <TextBlock\n                                        Margin=\"0\"\n                                        ScrollViewer.CanContentScroll=\"False\"\n                                        Text=\"{TemplateBinding Message}\"\n                                        TextElement.FontSize=\"{TemplateBinding FontSize}\"\n                                        TextWrapping=\"Wrap\" />\n                                </WrapPanel>\n\n                                <Border\n                                    Grid.Column=\"2\"\n                                    Margin=\"12,-2,0,0\"\n                                    VerticalAlignment=\"Top\">\n                                    <controls:Button\n                                        x:Name=\"CloseButton\"\n                                        Padding=\"4\"\n                                        Background=\"Transparent\"\n                                        BorderThickness=\"0\"\n                                        Command=\"{Binding Path=TemplateButtonCommand, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}\"\n                                        Icon=\"Dismiss24\"\n                                        IsEnabled=\"True\" />\n                                </Border>\n                            </Grid>\n                        </Border>\n                    </Grid>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsClosable\" Value=\"False\">\n                            <Setter TargetName=\"CloseButton\" Property=\"Visibility\" Value=\"Collapsed\" />\n                        </Trigger>\n\n                        <Trigger Property=\"IsOpen\" Value=\"True\">\n                            <Setter TargetName=\"InfoBarRoot\" Property=\"Visibility\" Value=\"Visible\" />\n                        </Trigger>\n                        <Trigger Property=\"IsOpen\" Value=\"False\">\n                            <Setter TargetName=\"InfoBarRoot\" Property=\"Visibility\" Value=\"Collapsed\" />\n                        </Trigger>\n\n                        <Trigger Property=\"Severity\" Value=\"Informational\">\n                            <Setter TargetName=\"SymbolIcon\" Property=\"Foreground\">\n                                <Setter.Value>\n                                    <SolidColorBrush Color=\"{DynamicResource SystemAccentColorSecondary}\" />\n                                </Setter.Value>\n                            </Setter>\n                            <Setter TargetName=\"SymbolIcon\" Property=\"Symbol\" Value=\"Info24\" />\n                            <Setter TargetName=\"ContentBorder\" Property=\"Background\" Value=\"{DynamicResource SystemFillColorNeutralBackgroundBrush}\" />\n                        </Trigger>\n                        <Trigger Property=\"Severity\" Value=\"Success\">\n                            <Setter TargetName=\"SymbolIcon\" Property=\"Foreground\" Value=\"{DynamicResource SystemFillColorSuccessBrush}\" />\n                            <Setter TargetName=\"SymbolIcon\" Property=\"Symbol\" Value=\"CheckmarkCircle24\" />\n                            <Setter TargetName=\"ContentBorder\" Property=\"Background\" Value=\"{DynamicResource SystemFillColorSuccessBackgroundBrush}\" />\n                        </Trigger>\n                        <Trigger Property=\"Severity\" Value=\"Warning\">\n                            <Setter TargetName=\"SymbolIcon\" Property=\"Foreground\" Value=\"{DynamicResource SystemFillColorCautionBrush}\" />\n                            <Setter TargetName=\"SymbolIcon\" Property=\"Symbol\" Value=\"ErrorCircle24\" />\n                            <Setter TargetName=\"ContentBorder\" Property=\"Background\" Value=\"{DynamicResource SystemFillColorCautionBackgroundBrush}\" />\n                        </Trigger>\n                        <Trigger Property=\"Severity\" Value=\"Error\">\n                            <Setter TargetName=\"SymbolIcon\" Property=\"Foreground\" Value=\"{DynamicResource SystemFillColorCriticalBrush}\" />\n                            <Setter TargetName=\"SymbolIcon\" Property=\"Symbol\" Value=\"DismissCircle24\" />\n                            <Setter TargetName=\"ContentBorder\" Property=\"Background\" Value=\"{DynamicResource SystemFillColorCriticalBackgroundBrush}\" />\n                        </Trigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <!--  ReSharper restore Xaml.StaticResourceNotResolved  -->\n\n</ResourceDictionary>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Styles/NavigationStore.xaml",
    "content": "﻿<ResourceDictionary\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:Wpf.Ui.Controls;assembly=Wpf.Ui\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:navigation=\"clr-namespace:Wpf.Ui.Controls.Navigation;assembly=Wpf.Ui\">\n\n    <!--  ReSharper disable Xaml.StaticResourceNotResolved  -->\n\n    <Style x:Key=\"NavigationStoreItem\" TargetType=\"{x:Type controls:NavigationItem}\">\n        <Setter Property=\"MinWidth\" Value=\"60\" />\n        <Setter Property=\"MaxWidth\" Value=\"80\" />\n        <Setter Property=\"MinHeight\" Value=\"60\" />\n        <Setter Property=\"Margin\" Value=\"0,0,0,4\" />\n        <Setter Property=\"Padding\" Value=\"0\" />\n        <Setter Property=\"Cursor\" Value=\"Hand\" />\n        <Setter Property=\"IconSize\" Value=\"24\" />\n        <Setter Property=\"VerticalAlignment\" Value=\"Center\" />\n        <Setter Property=\"HorizontalContentAlignment\" Value=\"Stretch\" />\n        <Setter Property=\"Background\">\n            <Setter.Value>\n                <SolidColorBrush Color=\"{DynamicResource ControlFillColorDefault}\" />\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"Foreground\">\n            <Setter.Value>\n                <SolidColorBrush Color=\"{DynamicResource TextFillColorSecondary}\" />\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"IconForeground\">\n            <Setter.Value>\n                <SolidColorBrush Color=\"{DynamicResource TextFillColorSecondary}\" />\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"BorderBrush\">\n            <Setter.Value>\n                <SolidColorBrush Opacity=\"0.0\" Color=\"{DynamicResource ControlStrokeColorDefault}\" />\n            </Setter.Value>\n        </Setter>\n        <Setter Property=\"FocusVisualStyle\" Value=\"{DynamicResource DefaultControlFocusVisualStyle}\" />\n        <Setter Property=\"KeyboardNavigation.IsTabStop\" Value=\"True\" />\n        <Setter Property=\"Focusable\" Value=\"True\" />\n        <Setter Property=\"IsTabStop\" Value=\"True\" />\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"True\" />\n        <Setter Property=\"OverridesDefaultStyle\" Value=\"True\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type controls:NavigationItem}\">\n                    <Border\n                        x:Name=\"MainBorder\"\n                        Padding=\"4\"\n                        HorizontalAlignment=\"Stretch\"\n                        Background=\"Transparent\"\n                        BorderBrush=\"{TemplateBinding BorderBrush}\"\n                        BorderThickness=\"1\"\n                        CornerRadius=\"4\">\n                        <Grid>\n                            <Rectangle\n                                x:Name=\"ActiveRectangle\"\n                                Width=\"4\"\n                                Height=\"24\"\n                                Margin=\"-4,0,0,0\"\n                                HorizontalAlignment=\"Left\"\n                                VerticalAlignment=\"Center\"\n                                Opacity=\"0.0\"\n                                RadiusX=\"2\"\n                                RadiusY=\"2\">\n                                <Rectangle.Fill>\n                                    <SolidColorBrush Color=\"{DynamicResource SystemAccentColorSecondary}\" />\n                                </Rectangle.Fill>\n                            </Rectangle>\n                            <Grid HorizontalAlignment=\"Stretch\">\n                                <Grid.RowDefinitions>\n                                    <RowDefinition Height=\"*\" />\n                                    <RowDefinition Height=\"Auto\" />\n                                </Grid.RowDefinitions>\n                                <controls:SymbolIcon\n                                    x:Name=\"ElementIcon\"\n                                    Grid.Row=\"0\"\n                                    Margin=\"0\"\n                                    FontSize=\"{TemplateBinding IconSize}\"\n                                    Foreground=\"{TemplateBinding IconForeground}\"\n                                    Symbol=\"{TemplateBinding Icon}\" />\n\n                                <Image\n                                    x:Name=\"ElementImage\"\n                                    Grid.Row=\"0\"\n                                    Width=\"24\"\n                                    Margin=\"0\"\n                                    RenderOptions.BitmapScalingMode=\"HighQuality\"\n                                    Source=\"{TemplateBinding Image}\" />\n\n                                <Grid\n                                    x:Name=\"ContentGrid\"\n                                    Grid.Row=\"1\"\n                                    Margin=\"0,2,0,0\">\n                                    <ContentPresenter x:Name=\"ElementContentPresenter\" HorizontalAlignment=\"Center\">\n                                        <ContentPresenter.Content>\n                                            <TextBlock\n                                                FontSize=\"10\"\n                                                Foreground=\"{TemplateBinding Foreground}\"\n                                                Text=\"{TemplateBinding Content}\"\n                                                TextAlignment=\"Center\"\n                                                TextWrapping=\"Wrap\" />\n                                        </ContentPresenter.Content>\n                                    </ContentPresenter>\n                                </Grid>\n                            </Grid>\n                        </Grid>\n\n                    </Border>\n                    <ControlTemplate.Triggers>\n                        <Trigger Property=\"IsActive\" Value=\"True\">\n                            <Setter TargetName=\"ActiveRectangle\" Property=\"Opacity\" Value=\"1.0\" />\n                            <Setter TargetName=\"ElementIcon\" Property=\"Filled\" Value=\"True\" />\n                            <Setter TargetName=\"MainBorder\" Property=\"Background\">\n                                <Setter.Value>\n                                    <SolidColorBrush Color=\"{DynamicResource ControlFillColorDefault}\" />\n                                </Setter.Value>\n                            </Setter>\n                            <Setter TargetName=\"ElementIcon\" Property=\"Foreground\">\n                                <Setter.Value>\n                                    <SolidColorBrush Color=\"{DynamicResource SystemAccentColorSecondary}\" />\n                                </Setter.Value>\n                            </Setter>\n                            <Setter TargetName=\"ElementContentPresenter\" Property=\"Margin\" Value=\"0\" />\n                            <Trigger.EnterActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimation\n                                            Storyboard.TargetName=\"ContentGrid\"\n                                            Storyboard.TargetProperty=\"MaxHeight\"\n                                            From=\"30\"\n                                            To=\"0\"\n                                            Duration=\"0:0:.16\" />\n                                        <DoubleAnimation\n                                            Storyboard.TargetName=\"ContentGrid\"\n                                            Storyboard.TargetProperty=\"Opacity\"\n                                            From=\"1\"\n                                            To=\"0\"\n                                            Duration=\"0:0:.16\" />\n                                        <DoubleAnimation\n                                            Storyboard.TargetName=\"MainBorder\"\n                                            Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Opacity)\"\n                                            From=\"0\"\n                                            To=\"1\"\n                                            Duration=\"0:0:.16\" />\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </Trigger.EnterActions>\n                            <Trigger.ExitActions>\n                                <BeginStoryboard>\n                                    <Storyboard>\n                                        <DoubleAnimation\n                                            Storyboard.TargetName=\"ContentGrid\"\n                                            Storyboard.TargetProperty=\"MaxHeight\"\n                                            From=\"0\"\n                                            To=\"30\"\n                                            Duration=\"0:0:.16\" />\n                                        <DoubleAnimation\n                                            Storyboard.TargetName=\"ContentGrid\"\n                                            Storyboard.TargetProperty=\"Opacity\"\n                                            From=\"0\"\n                                            To=\"1\"\n                                            Duration=\"0:0:.16\" />\n                                        <DoubleAnimation\n                                            Storyboard.TargetName=\"MainBorder\"\n                                            Storyboard.TargetProperty=\"(Border.BorderBrush).(SolidColorBrush.Opacity)\"\n                                            From=\"1\"\n                                            To=\"0\"\n                                            Duration=\"0:0:.16\" />\n                                    </Storyboard>\n                                </BeginStoryboard>\n                            </Trigger.ExitActions>\n                        </Trigger>\n                        <Trigger Property=\"Icon\" Value=\"Empty\">\n                            <Setter TargetName=\"ElementIcon\" Property=\"Visibility\" Value=\"Collapsed\" />\n                        </Trigger>\n                        <Trigger Property=\"Image\" Value=\"{x:Null}\">\n                            <Setter TargetName=\"ElementImage\" Property=\"Visibility\" Value=\"Collapsed\" />\n                        </Trigger>\n                        <Trigger Property=\"IsMouseOver\" Value=\"True\">\n                            <Setter TargetName=\"MainBorder\" Property=\"Background\">\n                                <Setter.Value>\n                                    <SolidColorBrush Opacity=\"0.5\" Color=\"{DynamicResource ControlFillColorDefault}\" />\n                                </Setter.Value>\n                            </Setter>\n                        </Trigger>\n                        <MultiTrigger>\n                            <MultiTrigger.Conditions>\n                                <Condition Property=\"IsMouseOver\" Value=\"True\" />\n                                <Condition Property=\"IsActive\" Value=\"False\" />\n                            </MultiTrigger.Conditions>\n                            <MultiTrigger.Setters>\n                                <Setter TargetName=\"ElementIcon\" Property=\"Foreground\">\n                                    <Setter.Value>\n                                        <SolidColorBrush Color=\"{DynamicResource TextFillColorPrimary}\" />\n                                    </Setter.Value>\n                                </Setter>\n                                <Setter TargetName=\"ContentGrid\" Property=\"TextElement.Foreground\">\n                                    <Setter.Value>\n                                        <SolidColorBrush Color=\"{DynamicResource TextFillColorPrimary}\" />\n                                    </Setter.Value>\n                                </Setter>\n                            </MultiTrigger.Setters>\n                        </MultiTrigger>\n                    </ControlTemplate.Triggers>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n    </Style>\n\n    <Style TargetType=\"{x:Type controls:NavigationStore}\">\n        <Setter Property=\"Background\" Value=\"Transparent\" />\n        <Setter Property=\"MinWidth\" Value=\"60\" />\n        <Setter Property=\"MaxWidth\" Value=\"80\" />\n        <Setter Property=\"Focusable\" Value=\"False\" />\n        <Setter Property=\"SnapsToDevicePixels\" Value=\"True\" />\n        <Setter Property=\"OverridesDefaultStyle\" Value=\"True\" />\n        <Setter Property=\"Template\">\n            <Setter.Value>\n                <ControlTemplate TargetType=\"{x:Type controls:NavigationStore}\">\n                    <controls:DynamicScrollViewer\n                        Margin=\"0\"\n                        Padding=\"0\"\n                        HorizontalScrollBarVisibility=\"Disabled\">\n                        <Grid HorizontalAlignment=\"Left\">\n                            <Grid.RowDefinitions>\n                                <RowDefinition Height=\"*\" />\n                                <RowDefinition Height=\"Auto\" />\n                            </Grid.RowDefinitions>\n\n                            <ItemsControl\n                                Grid.Row=\"0\"\n                                MinWidth=\"60\"\n                                MaxWidth=\"80\"\n                                Focusable=\"False\"\n                                ItemsSource=\"{TemplateBinding Items}\"\n                                KeyboardNavigation.DirectionalNavigation=\"Contained\"\n                                ScrollViewer.HorizontalScrollBarVisibility=\"Disabled\"\n                                ScrollViewer.VerticalScrollBarVisibility=\"Disabled\">\n                                <ItemsControl.ItemsPanel>\n                                    <ItemsPanelTemplate>\n                                        <StackPanel\n                                            MinWidth=\"0\"\n                                            Margin=\"0\"\n                                            HorizontalAlignment=\"Left\" />\n                                    </ItemsPanelTemplate>\n                                </ItemsControl.ItemsPanel>\n                            </ItemsControl>\n\n                            <ItemsControl\n                                Grid.Row=\"1\"\n                                Focusable=\"False\"\n                                ItemsSource=\"{TemplateBinding Footer}\"\n                                KeyboardNavigation.DirectionalNavigation=\"Contained\"\n                                ScrollViewer.HorizontalScrollBarVisibility=\"Disabled\"\n                                ScrollViewer.VerticalScrollBarVisibility=\"Disabled\">\n                                <ItemsControl.ItemsPanel>\n                                    <ItemsPanelTemplate>\n                                        <StackPanel\n                                            MinWidth=\"0\"\n                                            Margin=\"0\"\n                                            HorizontalAlignment=\"Left\" />\n                                    </ItemsPanelTemplate>\n                                </ItemsControl.ItemsPanel>\n                            </ItemsControl>\n                        </Grid>\n                    </controls:DynamicScrollViewer>\n                </ControlTemplate>\n            </Setter.Value>\n        </Setter>\n        <Style.Resources>\n            <Style BasedOn=\"{StaticResource NavigationStoreItem}\" TargetType=\"{x:Type custom:NavigationItem}\" />\n            <Style BasedOn=\"{StaticResource NavigationStoreItem}\" TargetType=\"{x:Type controls:NavigationItem}\" />\n            <Style BasedOn=\"{StaticResource NavigationStoreHeader}\" TargetType=\"{x:Type navigation:NavigationHeader}\" />\n        </Style.Resources>\n    </Style>\n\n    <!--  ReSharper restore Xaml.StaticResourceNotResolved  -->\n\n</ResourceDictionary>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/FullscreenHelper.cs",
    "content": "﻿using System;\nusing System.Diagnostics;\nusing System.Windows.Forms;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic static class FullscreenHelper\n{\n    public static unsafe bool IsAnyApplicationFullscreen()\n    {\n        try\n        {\n            var desktopWindowHandle = PInvoke.GetDesktopWindow();\n            var shellWindowHandle = PInvoke.GetShellWindow();\n\n            var foregroundWindowHandle = PInvoke.GetForegroundWindow();\n            if (foregroundWindowHandle == HWND.Null)\n                return false;\n            if (foregroundWindowHandle == desktopWindowHandle)\n                return false;\n            if (foregroundWindowHandle == shellWindowHandle)\n                return false;\n\n            if (!PInvoke.GetWindowRect(foregroundWindowHandle, out var appBounds))\n                return false;\n\n            var screenBounds = Screen.FromHandle(foregroundWindowHandle).Bounds;\n            var coversFullScreen = appBounds.bottom - appBounds.top == screenBounds.Height && appBounds.right - appBounds.left == screenBounds.Width;\n            if (!coversFullScreen)\n                return false;\n\n            var processId = 0u;\n            _ = PInvoke.GetWindowThreadProcessId(foregroundWindowHandle, &processId);\n            var process = Process.GetProcessById((int)processId);\n            return process.ProcessName != \"explorer\";\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't check if application is full screen.\", ex);\n\n            return false;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/LocalizationHelper.cs",
    "content": "﻿using System;\nusing System.Globalization;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing Humanizer;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Windows.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic static class LocalizationHelper\n{\n    private static readonly string LanguagePath = Path.Combine(Folders.AppData, \"lang\");\n\n    private static readonly CultureInfo DefaultLanguage = new(\"en\");\n\n    public static readonly CultureInfo[] Languages = [\n        DefaultLanguage,\n        new(\"ar\"),\n        new(\"bg\"),\n        new(\"cs\"),\n        new(\"de\"),\n        new(\"el\"),\n        new(\"es\"),\n        new(\"fr\"),\n        new(\"hu\"),\n        new(\"it\"),\n        new(\"ja\"),\n        new(\"lv\"),\n        new(\"nl-nl\"),\n        new(\"pl\"),\n        new(\"pt\"),\n        new(\"pt-br\"),\n        new(\"ro\"),\n        new(\"ru\"),\n        new(\"sk\"),\n        new(\"tr\"),\n        new(\"uk\"),\n        new(\"vi\"),\n        new(\"zh-hans\"),\n        new(\"zh-hant\"),\n        new(\"uz-latn-uz\") // HACK: Karakalpak is not a recognized culture by msbuild, so we use this one as workaround instead.\n    ];\n\n    public static FlowDirection Direction => Resource.Culture?.TextInfo.IsRightToLeft ?? false\n        ? FlowDirection.RightToLeft\n        : FlowDirection.LeftToRight;\n\n    private static string? _dateFormat;\n\n    public static string ShortDateFormat\n    {\n        get\n        {\n            if (_dateFormat is not null)\n                return _dateFormat;\n\n            _dateFormat = GetSystemShortDateFormat() ?? \"dd/M/yyyy\";\n            return _dateFormat;\n        }\n    }\n\n    public static string LanguageDisplayName(CultureInfo culture)\n    {\n        var name = culture.NativeName.Transform(culture, To.TitleCase);\n\n        if (culture.IetfLanguageTag.Equals(\"uz-latn-uz\", StringComparison.InvariantCultureIgnoreCase))\n            name = \"Karakalpak\";\n\n        return ForceLeftToRight(name);\n    }\n\n    public static string ForceLeftToRight(string str)\n    {\n        if (Resource.Culture?.TextInfo.IsRightToLeft ?? false)\n            return \"\\u200e\" + str + \"\\u200e\";\n        return str;\n    }\n\n    public static async Task SetLanguageAsync(bool interactive = false)\n    {\n        CultureInfo? cultureInfo = null;\n\n        if (interactive && await GetLanguageFromFile() is null)\n        {\n            var window = new LanguageSelectorWindow(Languages, DefaultLanguage);\n            window.Show();\n            cultureInfo = await window.ShouldContinue;\n            if (cultureInfo is not null)\n                await SaveLanguageToFileAsync(cultureInfo);\n        }\n\n        cultureInfo ??= await GetLanguageAsync();\n\n        SetLanguageInternal(cultureInfo);\n    }\n\n    public static async Task SetLanguageAsync(CultureInfo cultureInfo)\n    {\n        await SaveLanguageToFileAsync(cultureInfo);\n        SetLanguageInternal(cultureInfo);\n    }\n\n    public static async Task<CultureInfo> GetLanguageAsync()\n    {\n        var cultureInfo = await GetLanguageFromFile();\n        if (cultureInfo is null)\n        {\n            cultureInfo = DefaultLanguage;\n            await SaveLanguageToFileAsync(cultureInfo);\n        }\n        return cultureInfo;\n    }\n\n    private static async Task<CultureInfo?> GetLanguageFromFile()\n    {\n        try\n        {\n            var name = await File.ReadAllTextAsync(LanguagePath);\n            var cultureInfo = new CultureInfo(name);\n            if (!Languages.Contains(cultureInfo))\n                throw new InvalidOperationException(\"Unknown language\");\n            return cultureInfo;\n        }\n        catch\n        {\n            return null;\n        }\n    }\n\n    private static Task SaveLanguageToFileAsync(CultureInfo cultureInfo) => File.WriteAllTextAsync(LanguagePath, cultureInfo.Name);\n\n    private static void SetLanguageInternal(CultureInfo cultureInfo)\n    {\n        Thread.CurrentThread.CurrentCulture = new CultureInfo(\"en\");\n        CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(\"en\");\n\n        Thread.CurrentThread.CurrentUICulture = cultureInfo;\n        CultureInfo.DefaultThreadCurrentUICulture = cultureInfo;\n\n        Resource.Culture = cultureInfo;\n        Lib.Resources.Resource.Culture = cultureInfo;\n        Lib.Automation.Resources.Resource.Culture = cultureInfo;\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Applied culture: {cultureInfo.Name}\");\n    }\n\n    private static unsafe string? GetSystemShortDateFormat()\n    {\n        var ptr = IntPtr.Zero;\n        try\n        {\n            var length = PInvoke.GetLocaleInfoEx(null, PInvoke.LOCALE_SSHORTDATE, null, 0);\n            if (length == 0)\n                return null;\n\n            ptr = Marshal.AllocHGlobal(sizeof(char) * length);\n            var charPtr = new PWSTR((char*)ptr.ToPointer());\n\n            length = PInvoke.GetLocaleInfoEx(null, PInvoke.LOCALE_SSHORTDATE, charPtr, length);\n            return length == 0 ? null : charPtr.ToString();\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/MainThreadDispatcher.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic class MainThreadDispatcher : IMainThreadDispatcher\n{\n    public void Dispatch(Action callback) => Application.Current.Dispatcher.Invoke(callback);\n\n    public Task DispatchAsync(Func<Task> callback) => Application.Current.Dispatcher.Invoke(callback);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/MesageBoxHelper.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\nusing MessageBox = Wpf.Ui.Controls.MessageBox;\nusing TextBox = Wpf.Ui.Controls.TextBox;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic static class MessageBoxHelper\n{\n    public static Task<bool> ShowAsync(DependencyObject dependencyObject,\n        string title,\n        string message,\n        string? leftButton = null,\n        string? rightButton = null\n    )\n    {\n        var window = Window.GetWindow(dependencyObject)\n                     ?? Application.Current.MainWindow\n                     ?? throw new InvalidOperationException(\"Cannot show message without window\");\n        return ShowAsync(window, title, message, leftButton, rightButton);\n    }\n\n    public static Task<bool> ShowAsync(Window window,\n        string title,\n        string message,\n        string? primaryButton = null,\n        string? secondaryButton = null)\n    {\n        var tcs = new TaskCompletionSource<bool>();\n\n        var messageBox = new MessageBox\n        {\n            Owner = window,\n            Title = title,\n            Content = new TextBlock\n            {\n                Text = message,\n                TextWrapping = TextWrapping.Wrap,\n            },\n            ButtonLeftName = primaryButton ?? Resource.Yes,\n            ButtonRightName = secondaryButton ?? Resource.No,\n            ShowInTaskbar = false,\n            Topmost = false,\n            ResizeMode = ResizeMode.NoResize,\n        };\n        messageBox.ButtonLeftClick += (_, _) =>\n        {\n            tcs.SetResult(true);\n            messageBox.Close();\n        };\n        messageBox.ButtonRightClick += (_, _) =>\n        {\n            tcs.SetResult(false);\n            messageBox.Close();\n        };\n        messageBox.Closing += (_, _) =>\n        {\n            tcs.TrySetResult(false);\n        };\n        messageBox.Show();\n\n        return tcs.Task;\n    }\n\n    public static Task<string?> ShowInputAsync(\n        DependencyObject dependencyObject,\n        string title,\n        string? placeholder = null,\n        string? text = null,\n        string? primaryButton = null,\n        string? secondaryButton = null,\n        bool allowEmpty = false\n    )\n    {\n        var window = Window.GetWindow(dependencyObject)\n                     ?? Application.Current.MainWindow\n                     ?? throw new InvalidOperationException(\"Cannot show message without window\");\n        return ShowInputAsync(window, title, placeholder, text, primaryButton, secondaryButton, allowEmpty);\n    }\n\n    public static Task<string?> ShowInputAsync(\n        Window window,\n        string title,\n        string? placeholder = null,\n        string? text = null,\n        string? primaryButton = null,\n        string? secondaryButton = null,\n        bool allowEmpty = false\n    )\n    {\n        var tcs = new TaskCompletionSource<string?>();\n\n        var textBox = new TextBox\n        {\n            MaxLines = 1,\n            MaxLength = 50,\n            PlaceholderText = placeholder,\n            TextWrapping = TextWrapping.Wrap\n        };\n        var messageBox = new MessageBox\n        {\n            Owner = window,\n            Title = title,\n            Content = textBox,\n            ButtonLeftAppearance = ControlAppearance.Transparent,\n            ButtonLeftName = primaryButton ?? Resource.OK,\n            ButtonRightName = secondaryButton ?? Resource.Cancel,\n            ShowInTaskbar = false,\n            Topmost = false,\n            MinHeight = 160,\n            MaxHeight = 160,\n            ResizeMode = ResizeMode.NoResize,\n        };\n\n        textBox.TextChanged += (_, _) =>\n        {\n            var isEmpty = !allowEmpty && string.IsNullOrWhiteSpace(textBox.Text);\n            messageBox.ButtonLeftAppearance = isEmpty ? ControlAppearance.Transparent : ControlAppearance.Primary;\n        };\n        messageBox.ButtonLeftClick += (_, _) =>\n        {\n            // ReSharper disable once ConditionalAccessQualifierIsNonNullableAccordingToAPIContract\n            var content = textBox.Text?.Trim();\n            var newText = string.IsNullOrWhiteSpace(content) ? null : content;\n            if (!allowEmpty && newText is null)\n                return;\n            tcs.SetResult(newText);\n            messageBox.Close();\n        };\n        messageBox.ButtonRightClick += (_, _) =>\n        {\n            tcs.SetResult(null);\n            messageBox.Close();\n        };\n        messageBox.Closing += (_, _) =>\n        {\n            tcs.TrySetResult(null);\n        };\n        messageBox.Show();\n\n        textBox.Text = text ?? string.Empty;\n        textBox.SelectionStart = text?.Length ?? 0;\n        textBox.SelectionLength = 0;\n\n        FocusManager.SetFocusedElement(window, textBox);\n\n        return tcs.Task;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/NotificationsManager.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Threading;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Windows;\nusing LenovoLegionToolkit.WPF.Windows.Utils;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic class NotificationsManager\n{\n    private static Dispatcher Dispatcher => Application.Current.Dispatcher;\n\n    private readonly ApplicationSettings _settings;\n\n    private List<INotificationWindow?> _windows = [];\n\n    public NotificationsManager(ApplicationSettings settings)\n    {\n        _settings = settings;\n\n        MessagingCenter.Subscribe<NotificationMessage>(this, OnNotificationReceived);\n    }\n\n    private void OnNotificationReceived(NotificationMessage notification)\n    {\n        Dispatcher.Invoke(() =>\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Notification {notification} received\");\n\n            if (_settings.Store.DontShowNotifications)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Notifications are disabled.\");\n\n                return;\n            }\n\n            if (FullscreenHelper.IsAnyApplicationFullscreen() && !_settings.Store.NotificationAlwaysOnTop)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Some application is in fullscreen.\");\n\n                return;\n            }\n\n            var allow = notification.Type switch\n            {\n                NotificationType.ACAdapterConnected => _settings.Store.Notifications.ACAdapter,\n                NotificationType.ACAdapterConnectedLowWattage => _settings.Store.Notifications.ACAdapter,\n                NotificationType.ACAdapterDisconnected => _settings.Store.Notifications.ACAdapter,\n                NotificationType.AutomationNotification => _settings.Store.Notifications.AutomationNotification,\n                NotificationType.CapsLockOn => _settings.Store.Notifications.CapsNumLock,\n                NotificationType.CapsLockOff => _settings.Store.Notifications.CapsNumLock,\n                NotificationType.CameraOn => _settings.Store.Notifications.CameraLock,\n                NotificationType.CameraOff => _settings.Store.Notifications.CameraLock,\n                NotificationType.FnLockOn => _settings.Store.Notifications.FnLock,\n                NotificationType.FnLockOff => _settings.Store.Notifications.FnLock,\n                NotificationType.MicrophoneOn => _settings.Store.Notifications.Microphone,\n                NotificationType.MicrophoneOff => _settings.Store.Notifications.Microphone,\n                NotificationType.NumLockOn => _settings.Store.Notifications.CapsNumLock,\n                NotificationType.NumLockOff => _settings.Store.Notifications.CapsNumLock,\n                NotificationType.PanelLogoLightingOn => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.PanelLogoLightingOff => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.PortLightingOn => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.PortLightingOff => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.PowerModeQuiet => _settings.Store.Notifications.PowerMode,\n                NotificationType.PowerModeBalance => _settings.Store.Notifications.PowerMode,\n                NotificationType.PowerModePerformance => _settings.Store.Notifications.PowerMode,\n                NotificationType.PowerModeGodMode => _settings.Store.Notifications.PowerMode,\n                NotificationType.RefreshRate => _settings.Store.Notifications.RefreshRate,\n                NotificationType.RGBKeyboardBacklightOff => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.RGBKeyboardBacklightChanged => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.SmartKeyDoublePress => _settings.Store.Notifications.SmartKey,\n                NotificationType.SmartKeySinglePress => _settings.Store.Notifications.SmartKey,\n                NotificationType.SpectrumBacklightChanged => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.SpectrumBacklightOff => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.SpectrumBacklightPresetChanged => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.TouchpadOn => _settings.Store.Notifications.TouchpadLock,\n                NotificationType.TouchpadOff => _settings.Store.Notifications.TouchpadLock,\n                NotificationType.UpdateAvailable => _settings.Store.Notifications.UpdateAvailable,\n                NotificationType.WhiteKeyboardBacklightOff => _settings.Store.Notifications.KeyboardBacklight,\n                NotificationType.WhiteKeyboardBacklightChanged => _settings.Store.Notifications.KeyboardBacklight,\n                _ => throw new ArgumentException(nameof(notification.Type))\n            };\n\n            if (!allow)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Notification type {notification.Type} is disabled.\");\n\n                return;\n            }\n\n            var symbol = notification.Type switch\n            {\n                NotificationType.ACAdapterConnected => SymbolRegular.BatteryCharge24,\n                NotificationType.ACAdapterConnectedLowWattage => SymbolRegular.BatteryCharge24,\n                NotificationType.ACAdapterDisconnected => SymbolRegular.BatteryCharge24,\n                NotificationType.AutomationNotification => SymbolRegular.Rocket24,\n                NotificationType.CapsLockOn => SymbolRegular.KeyboardShiftUppercase24,\n                NotificationType.CapsLockOff => SymbolRegular.KeyboardShiftUppercase24,\n                NotificationType.CameraOn => SymbolRegular.Camera24,\n                NotificationType.CameraOff => SymbolRegular.Camera24,\n                NotificationType.FnLockOn => SymbolRegular.Keyboard24,\n                NotificationType.FnLockOff => SymbolRegular.Keyboard24,\n                NotificationType.MicrophoneOn => SymbolRegular.Mic24,\n                NotificationType.MicrophoneOff => SymbolRegular.Mic24,\n                NotificationType.NumLockOn => SymbolRegular.Keyboard12324,\n                NotificationType.NumLockOff => SymbolRegular.Keyboard12324,\n                NotificationType.PanelLogoLightingOn => SymbolRegular.LightbulbCircle24,\n                NotificationType.PanelLogoLightingOff => SymbolRegular.LightbulbCircle24,\n                NotificationType.PortLightingOn => SymbolRegular.UsbPlug24,\n                NotificationType.PortLightingOff => SymbolRegular.UsbPlug24,\n                NotificationType.PowerModeQuiet => SymbolRegular.Gauge24,\n                NotificationType.PowerModeBalance => SymbolRegular.Gauge24,\n                NotificationType.PowerModePerformance => SymbolRegular.Gauge24,\n                NotificationType.PowerModeGodMode => SymbolRegular.Gauge24,\n                NotificationType.RefreshRate => SymbolRegular.DesktopPulse24,\n                NotificationType.RGBKeyboardBacklightOff => SymbolRegular.Lightbulb24,\n                NotificationType.RGBKeyboardBacklightChanged => SymbolRegular.Lightbulb24,\n                NotificationType.SmartKeyDoublePress => SymbolRegular.StarEmphasis24,\n                NotificationType.SmartKeySinglePress => SymbolRegular.Star24,\n                NotificationType.SpectrumBacklightChanged => SymbolRegular.Lightbulb24,\n                NotificationType.SpectrumBacklightOff => SymbolRegular.Lightbulb24,\n                NotificationType.SpectrumBacklightPresetChanged => SymbolRegular.Lightbulb24,\n                NotificationType.TouchpadOn => SymbolRegular.Tablet24,\n                NotificationType.TouchpadOff => SymbolRegular.Tablet24,\n                NotificationType.UpdateAvailable => SymbolRegular.ArrowSync24,\n                NotificationType.WhiteKeyboardBacklightOff => SymbolRegular.Lightbulb24,\n                NotificationType.WhiteKeyboardBacklightChanged => SymbolRegular.Lightbulb24,\n                _ => throw new ArgumentException(nameof(notification.Type))\n            };\n\n            SymbolRegular? overlaySymbol = notification.Type switch\n            {\n                NotificationType.ACAdapterDisconnected => SymbolRegular.Line24,\n                NotificationType.CapsLockOff => SymbolRegular.Line24,\n                NotificationType.CameraOff => SymbolRegular.Line24,\n                NotificationType.FnLockOff => SymbolRegular.Line24,\n                NotificationType.MicrophoneOff => SymbolRegular.Line24,\n                NotificationType.NumLockOff => SymbolRegular.Line24,\n                NotificationType.PanelLogoLightingOff => SymbolRegular.Line24,\n                NotificationType.PortLightingOff => SymbolRegular.Line24,\n                NotificationType.RGBKeyboardBacklightOff => SymbolRegular.Line24,\n                NotificationType.SpectrumBacklightOff => SymbolRegular.Line24,\n                NotificationType.TouchpadOff => SymbolRegular.Line24,\n                NotificationType.WhiteKeyboardBacklightOff => SymbolRegular.Line24,\n                _ => null,\n            };\n\n            var text = notification.Type switch\n            {\n                NotificationType.ACAdapterConnected => Resource.Notification_ACAdapterConnected,\n                NotificationType.ACAdapterConnectedLowWattage => Resource.Notification_ACAdapterConnectedLowWattage,\n                NotificationType.ACAdapterDisconnected => Resource.Notification_ACAdapterDisconnected,\n                NotificationType.AutomationNotification => string.Format(\"{0}\", notification.Args),\n                NotificationType.CapsLockOn => Resource.Notification_CapsLockOn,\n                NotificationType.CapsLockOff => Resource.Notification_CapsLockOff,\n                NotificationType.CameraOn => Resource.Notification_CameraOn,\n                NotificationType.CameraOff => Resource.Notification_CameraOff,\n                NotificationType.FnLockOn => Resource.Notification_FnLockOn,\n                NotificationType.FnLockOff => Resource.Notification_FnLockOff,\n                NotificationType.MicrophoneOn => Resource.Notification_MicrophoneOn,\n                NotificationType.MicrophoneOff => Resource.Notification_MicrophoneOff,\n                NotificationType.NumLockOn => Resource.Notification_NumLockOn,\n                NotificationType.NumLockOff => Resource.Notification_NumLockOff,\n                NotificationType.PanelLogoLightingOn => Resource.Notification_PanelLogoLightingOn,\n                NotificationType.PanelLogoLightingOff => Resource.Notification_PanelLogoLightingOff,\n                NotificationType.PortLightingOn => Resource.Notification_PortLightingOn,\n                NotificationType.PortLightingOff => Resource.Notification_PortLightingOff,\n                NotificationType.PowerModeQuiet => string.Format(\"{0}\", notification.Args),\n                NotificationType.PowerModeBalance => string.Format(\"{0}\", notification.Args),\n                NotificationType.PowerModePerformance => string.Format(\"{0}\", notification.Args),\n                NotificationType.PowerModeGodMode => string.Format(\"{0}\", notification.Args),\n                NotificationType.RefreshRate => string.Format(\"{0}\", notification.Args),\n                NotificationType.RGBKeyboardBacklightOff => string.Format(\"{0}\", notification.Args),\n                NotificationType.RGBKeyboardBacklightChanged => string.Format(\"{0}\", notification.Args),\n                NotificationType.SmartKeyDoublePress => string.Format(\"{0}\", notification.Args),\n                NotificationType.SmartKeySinglePress => string.Format(\"{0}\", notification.Args),\n                NotificationType.SpectrumBacklightChanged => string.Format(Resource.Notification_SpectrumKeyboardBacklight_Brightness, notification.Args),\n                NotificationType.SpectrumBacklightOff => string.Format(Resource.Notification_SpectrumKeyboardBacklight_Backlight, notification.Args),\n                NotificationType.SpectrumBacklightPresetChanged => string.Format(Resource.Notification_SpectrumKeyboardBacklight_Profile, notification.Args),\n                NotificationType.TouchpadOn => Resource.Notification_TouchpadOn,\n                NotificationType.TouchpadOff => Resource.Notification_TouchpadOff,\n                NotificationType.UpdateAvailable => string.Format(Resource.Notification_UpdateAvailable, notification.Args),\n                NotificationType.WhiteKeyboardBacklightOff => string.Format(Resource.Notification_WhiteKeyboardBacklight, notification.Args),\n                NotificationType.WhiteKeyboardBacklightChanged => string.Format(Resource.Notification_WhiteKeyboardBacklight, notification.Args),\n                _ => throw new ArgumentException(nameof(notification.Type))\n            };\n\n            Action<SymbolIcon>? symbolTransform = notification.Type switch\n            {\n                NotificationType.PowerModeQuiet => si => si.Foreground = PowerModeState.Quiet.GetSolidColorBrush(),\n                NotificationType.PowerModePerformance => si => si.Foreground = PowerModeState.Performance.GetSolidColorBrush(),\n                NotificationType.PowerModeGodMode => si => si.Foreground = PowerModeState.GodMode.GetSolidColorBrush(),\n                _ => null\n            };\n\n            Action? clickAction = notification.Type switch\n            {\n                NotificationType.UpdateAvailable => UpdateAvailableAction,\n                _ => null\n            };\n\n            if (symbolTransform is null && overlaySymbol is not null)\n                symbolTransform = si =>\n                    si.SetResourceReference(Control.ForegroundProperty, \"TextFillColorSecondaryBrush\");\n\n            ShowNotification(symbol, overlaySymbol, symbolTransform, text, clickAction);\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Notification {notification} shown.\");\n        });\n    }\n\n    private void ShowNotification(SymbolRegular symbol, SymbolRegular? overlaySymbol, Action<SymbolIcon>? symbolTransform, string text, Action? clickAction)\n    {\n        if (App.Current.MainWindow is not MainWindow mainWindow)\n            return;\n\n        if (_windows.Count != 0)\n        {\n            foreach (var window in _windows)\n                window?.Close(true);\n\n            _windows.Clear();\n        }\n\n        ScreenHelper.UpdateScreenInfos();\n        if (_settings.Store.NotificationOnAllScreens)\n        {\n            foreach (var screen in ScreenHelper.Screens)\n            {\n                var nw = new NotificationWindow(symbol, overlaySymbol, symbolTransform, text, clickAction, screen, _settings.Store.NotificationPosition) { Owner = mainWindow };\n                if (_settings.Store.NotificationAlwaysOnTop)\n                {\n                    var bitmap = nw.GetBitmapView();\n                    var nwaot = new NotificationAoTWindow(bitmap, screen, _settings.Store.NotificationPosition);\n                    nwaot.Show(_settings.Store.NotificationDuration switch\n                    {\n                        NotificationDuration.Short => 500,\n                        NotificationDuration.Long => 2500,\n                        NotificationDuration.Normal => 1000,\n                        _ => throw new ArgumentException(nameof(_settings.Store.NotificationDuration))\n                    });\n                    _windows.Add(nwaot);\n                }\n                else\n                {\n                    nw.Show(_settings.Store.NotificationDuration switch\n                    {\n                        NotificationDuration.Short => 500,\n                        NotificationDuration.Long => 2500,\n                        NotificationDuration.Normal => 1000,\n                        _ => throw new ArgumentException(nameof(_settings.Store.NotificationDuration))\n                    });\n                    _windows.Add(nw);\n                }\n            }\n        }\n        else\n        {\n            var primaryScreen = ScreenHelper.PrimaryScreen;\n            if (!primaryScreen.HasValue)\n                return;\n\n            var nw = new NotificationWindow(symbol, overlaySymbol, symbolTransform, text, clickAction, primaryScreen.Value, _settings.Store.NotificationPosition) { Owner = mainWindow };\n            if (_settings.Store.NotificationAlwaysOnTop)\n            {\n                var bitmap = nw.GetBitmapView();\n                var nwaot = new NotificationAoTWindow(bitmap, primaryScreen.Value, _settings.Store.NotificationPosition);\n                nwaot.Show(_settings.Store.NotificationDuration switch\n                {\n                    NotificationDuration.Short => 500,\n                    NotificationDuration.Long => 2500,\n                    NotificationDuration.Normal => 1000,\n                    _ => throw new ArgumentException(nameof(_settings.Store.NotificationDuration))\n                });\n                _windows.Add(nwaot);\n            }\n            else\n            {\n                nw.Show(_settings.Store.NotificationDuration switch\n                {\n                    NotificationDuration.Short => 500,\n                    NotificationDuration.Long => 2500,\n                    NotificationDuration.Normal => 1000,\n                    _ => throw new ArgumentException(nameof(_settings.Store.NotificationDuration))\n                });\n                _windows.Add(nw);\n            }\n        }\n    }\n\n    private static void UpdateAvailableAction()\n    {\n        if (App.Current.MainWindow is not MainWindow mainWindow)\n            return;\n\n        mainWindow.BringToForeground();\n        mainWindow.ShowUpdateWindow();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/NotifyIcon.cs",
    "content": "﻿using System;\nusing System.Drawing;\nusing System.Runtime.InteropServices;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Controls.Primitives;\nusing System.Windows.Forms;\nusing System.Windows.Interop;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.UI.Shell;\nusing Windows.Win32.UI.WindowsAndMessaging;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic class NotifyIcon : NativeWindow, IDisposable\n{\n    private const uint TRAY_MESSAGE_ID = PInvoke.WM_USER + 1069;\n\n    private static readonly uint TaskbarCreatedMessage = PInvoke.RegisterWindowMessage(\"TaskbarCreated\");\n\n    private static uint _nextId;\n\n    private readonly object _lock = new();\n    private readonly uint _id = ++_nextId;\n\n    private bool _added;\n    private CancellationTokenSource? _showToolTipCancellationTokenSource;\n\n    private bool _visible;\n    public bool Visible\n    {\n        set\n        {\n            _visible = value;\n            UpdateIcon();\n        }\n    }\n\n    private Icon? _icon;\n    public Icon? Icon\n    {\n        set\n        {\n            _icon = value;\n            UpdateIcon();\n\n        }\n    }\n\n    private string? _text;\n    public string? Text\n    {\n        set\n        {\n            _text = value;\n            UpdateIcon();\n        }\n    }\n\n    private UiWindow? _currentToolTipWindow;\n\n    private Func<Task<UiWindow>>? _toolTipWindow;\n    public Func<Task<UiWindow>>? ToolTipWindow\n    {\n        set\n        {\n            _toolTipWindow = value;\n            UpdateIcon();\n        }\n    }\n\n    public ContextMenu? ContextMenu { get; set; }\n\n    public event EventHandler? OnClick;\n\n    public NotifyIcon()\n    {\n        UpdateIcon();\n    }\n\n    protected override void WndProc(ref Message m)\n    {\n        switch ((uint)m.Msg)\n        {\n            case TRAY_MESSAGE_ID:\n                switch ((uint)m.LParam & 0xFFFF)\n                {\n                    case PInvoke.NIN_POPUPOPEN:\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"NIN_POPUPOPEN\");\n                        ShowToolTipAsync();\n                        break;\n                    case PInvoke.NIN_POPUPCLOSE:\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"NIN_POPUPCLOSE\");\n                        HideToolTip();\n                        break;\n                    case PInvoke.WM_LBUTTONUP:\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"WM_LBUTTONUP\");\n                        HideToolTip();\n                        HideContextMenu();\n                        OnClick?.Invoke(this, EventArgs.Empty);\n                        break;\n                    case PInvoke.WM_RBUTTONUP:\n                        if (Log.Instance.IsTraceEnabled)\n                            Log.Instance.Trace($\"WM_RBUTTONUP\");\n                        HideToolTip();\n                        ShowContextMenu();\n                        break;\n                }\n                break;\n            case PInvoke.WM_DESTROY:\n                _visible = false;\n                UpdateIcon();\n                break;\n            default:\n                if (m.Msg == TaskbarCreatedMessage && _visible)\n                {\n                    _visible = true;\n                    _added = false;\n                    UpdateIcon();\n                }\n\n                DefWndProc(ref m);\n                break;\n        }\n    }\n\n    private async void ShowToolTipAsync()\n    {\n        if (_toolTipWindow is null)\n            return;\n\n        if (_showToolTipCancellationTokenSource is not null)\n            await _showToolTipCancellationTokenSource.CancelAsync();\n        _showToolTipCancellationTokenSource = new();\n\n        var token = _showToolTipCancellationTokenSource.Token;\n\n        try\n        {\n            await Task.Delay(TimeSpan.FromMilliseconds(500), token);\n\n            if (ContextMenu is not null && ContextMenu.IsOpen)\n                return;\n\n            _currentToolTipWindow?.Close();\n            _currentToolTipWindow = await _toolTipWindow();\n\n            token.ThrowIfCancellationRequested();\n\n            _currentToolTipWindow?.Show();\n        }\n        catch (OperationCanceledException)\n        {\n            _currentToolTipWindow?.Close();\n            _currentToolTipWindow = null;\n        }\n        catch (Exception ex)\n        {\n            _currentToolTipWindow?.Close();\n            _currentToolTipWindow = null;\n\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to show tooltip.\", ex);\n        }\n    }\n\n    private void HideToolTip()\n    {\n        if (_toolTipWindow is null)\n            return;\n\n        _showToolTipCancellationTokenSource?.Cancel();\n\n        _currentToolTipWindow?.Hide();\n        _currentToolTipWindow = null;\n    }\n\n    private void ShowContextMenu()\n    {\n        if (ContextMenu is null)\n            return;\n\n        ContextMenu.Placement = PlacementMode.Mouse;\n        ContextMenu.PlacementRectangle = Rect.Empty;\n        ContextMenu.PlacementTarget = null;\n        ContextMenu.IsOpen = true;\n\n        if (PresentationSource.FromVisual(ContextMenu) is HwndSource source && source.Handle != IntPtr.Zero)\n            PInvoke.SetForegroundWindow(new HWND(source.Handle));\n    }\n\n    private void HideContextMenu()\n    {\n        if (ContextMenu is null || !ContextMenu.IsOpen)\n            return;\n\n        ContextMenu.IsOpen = false;\n    }\n\n    private void UpdateIcon()\n    {\n        lock (_lock)\n        {\n            var data = new NOTIFYICONDATAW\n            {\n                cbSize = (uint)Marshal.SizeOf<NOTIFYICONDATAW>(),\n                uID = _id,\n                uCallbackMessage = TRAY_MESSAGE_ID,\n                uFlags = NOTIFY_ICON_DATA_FLAGS.NIF_MESSAGE | NOTIFY_ICON_DATA_FLAGS.NIF_TIP,\n                szTip = \" \"\n            };\n\n            if (_visible && Handle == IntPtr.Zero)\n                CreateHandle(new CreateParams());\n\n            data.hWnd = new HWND(Handle);\n\n            if (_icon is not null)\n            {\n                data.uFlags |= NOTIFY_ICON_DATA_FLAGS.NIF_ICON;\n                data.hIcon = new HICON(_icon.Handle);\n            }\n\n            if (_text is not null && _toolTipWindow is null)\n            {\n                data.uFlags |= NOTIFY_ICON_DATA_FLAGS.NIF_SHOWTIP;\n                data.szTip = _text;\n            }\n\n            switch (_visible, _added)\n            {\n                case (true, false):\n                    PInvoke.Shell_NotifyIcon(NOTIFY_ICON_MESSAGE.NIM_ADD, data);\n                    data.Anonymous = new() { uVersion = 4 };\n                    PInvoke.Shell_NotifyIcon(NOTIFY_ICON_MESSAGE.NIM_SETVERSION, data);\n                    _added = true;\n                    break;\n                case (true, true):\n                    PInvoke.Shell_NotifyIcon(NOTIFY_ICON_MESSAGE.NIM_MODIFY, data);\n                    break;\n                case (false, true):\n                    PInvoke.Shell_NotifyIcon(NOTIFY_ICON_MESSAGE.NIM_DELETE, data);\n                    _added = false;\n                    break;\n            }\n        }\n    }\n\n    public void Dispose()\n    {\n        GC.SuppressFinalize(this);\n\n        HideContextMenu();\n        HideToolTip();\n\n        _visible = false;\n        UpdateIcon();\n\n        _icon?.Dispose();\n\n        _icon = null;\n        _text = null;\n        _toolTipWindow = null;\n        ContextMenu = null;\n\n        ReleaseHandle();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/ScreenHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing System.Windows;\nusing Windows.Win32;\nusing Windows.Win32.Graphics.Gdi;\nusing Windows.Win32.UI.HiDpi;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic static class ScreenHelper\n{\n    public static List<ScreenInfo> Screens { get; } = [];\n\n    public static ScreenInfo? PrimaryScreen => Screens.FirstOrDefault(s => s.IsPrimary);\n\n    public static void UpdateScreenInfos()\n    {\n        Screens.Clear();\n        EnumDisplayMonitors(IntPtr.Zero, IntPtr.Zero, MonitorEnumProc, IntPtr.Zero);\n    }\n\n    [DllImport(\"user32.dll\")]\n    private static extern bool EnumDisplayMonitors(IntPtr hdc, IntPtr lprcClip, EnumDisplayMonitorsDelegate lpfnEnum, IntPtr dwData);\n\n    private delegate bool EnumDisplayMonitorsDelegate(HMONITOR hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData);\n\n    private static bool MonitorEnumProc(HMONITOR hMonitor, IntPtr hdcMonitor, ref Rect lprcMonitor, IntPtr dwData)\n    {\n        MONITORINFO monitorInfo = new() { cbSize = (uint)Marshal.SizeOf<MONITORINFO>() };\n\n        if (!PInvoke.GetMonitorInfo(hMonitor, ref monitorInfo))\n            return true;\n\n#pragma warning disable CA1416\n        if (!PInvoke.GetDpiForMonitor(hMonitor, MONITOR_DPI_TYPE.MDT_EFFECTIVE_DPI, out var dpiX, out var dpiY).Succeeded)\n#pragma warning restore CA1416\n            return true;\n\n        var workArea = monitorInfo.rcWork;\n        var multiplierX = 96d / dpiX;\n        var multiplierY = 96d / dpiY;\n\n        Screens.Add(new ScreenInfo(\n            new Rect(workArea.X, workArea.Y, workArea.Width * multiplierX, workArea.Height * multiplierY),\n            dpiX, dpiY,\n            (monitorInfo.dwFlags & PInvoke.MONITORINFOF_PRIMARY) != 0\n        ));\n\n        return true;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/SmartKeyHelper.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.Utils;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\ninternal class SmartKeyHelper\n{\n    private readonly TimeSpan _smartKeyDoublePressInterval = TimeSpan.FromMilliseconds(500);\n\n    private DateTime _lastSmartKeyPress = DateTime.MinValue;\n    private CancellationTokenSource? _smartKeyDoublePressCancellationTokenSource;\n\n    private readonly ApplicationSettings _settings = IoCContainer.Resolve<ApplicationSettings>();\n    private readonly FnKeysDisabler _fnKeysDisabler = IoCContainer.Resolve<FnKeysDisabler>();\n    private readonly SpecialKeyListener _specialKeyListener = IoCContainer.Resolve<SpecialKeyListener>();\n    private readonly AutomationProcessor _automationProcessor = IoCContainer.Resolve<AutomationProcessor>();\n\n    public Action? BringToForeground { get; set; }\n\n    private static SmartKeyHelper? _instance;\n\n    public static SmartKeyHelper Instance => _instance ??= new SmartKeyHelper();\n\n    private SmartKeyHelper()\n    {\n        _specialKeyListener.Changed += SpecialKeyListener_Changed;\n    }\n\n    private async void SpecialKeyListener_Changed(object? sender, SpecialKeyListener.ChangedEventArgs e)\n    {\n        if (e.SpecialKey != SpecialKey.FnF9)\n            return;\n\n        if (await _fnKeysDisabler.GetStatusAsync() == SoftwareStatus.Enabled)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Ignoring Fn+F9 FnKeys are enabled.\");\n\n            return;\n        }\n\n        if (_smartKeyDoublePressCancellationTokenSource is not null)\n            await _smartKeyDoublePressCancellationTokenSource.CancelAsync();\n        _smartKeyDoublePressCancellationTokenSource = new CancellationTokenSource();\n\n        var token = _smartKeyDoublePressCancellationTokenSource.Token;\n\n        _ = Task.Run(async () =>\n        {\n            var now = DateTime.UtcNow;\n            var diff = now - _lastSmartKeyPress;\n            _lastSmartKeyPress = now;\n\n            if (diff < _smartKeyDoublePressInterval)\n            {\n                await ProcessSpecialKey(true);\n                return;\n            }\n\n            await Task.Delay(_smartKeyDoublePressInterval, token);\n            await ProcessSpecialKey(false);\n        }, token);\n    }\n\n    private async Task ProcessSpecialKey(bool isDoublePress)\n    {\n        var currentGuid = isDoublePress\n            ? _settings.Store.SmartKeyDoublePressActionId\n            : _settings.Store.SmartKeySinglePressActionId;\n        var actionList = isDoublePress\n            ? _settings.Store.SmartKeyDoublePressActionList\n            : _settings.Store.SmartKeySinglePressActionList;\n\n        if (!currentGuid.HasValue)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Bringing to foreground after {(isDoublePress ? \"double\" : \"single\")} Fn+F9 press.\");\n            BringToForeground?.Invoke();\n            return;\n        }\n\n        if (currentGuid.Value == Guid.Empty)\n            return;\n\n        if (actionList.IsEmpty())\n            actionList.Add(currentGuid.Value);\n\n        var currentIndex = Math.Max(0, actionList.IndexOf(currentGuid.Value));\n        var nextIndex = (currentIndex + 1) % actionList.Count;\n\n        currentGuid = actionList[currentIndex];\n\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Running action {currentGuid} after {(isDoublePress ? \"double\" : \"single\")} Fn+F9 press.\");\n\n        try\n        {\n            var pipelines = await _automationProcessor.GetPipelinesAsync();\n            var pipeline = pipelines.FirstOrDefault(p => p.Id == currentGuid);\n            if (pipeline is not null)\n            {\n                if (Log.Instance.IsTraceEnabled)\n                    Log.Instance.Trace($\"Running action {currentGuid} after {(isDoublePress ? \"double\" : \"single\")} Fn+F9 press.\");\n\n                await _automationProcessor.RunNowAsync(pipeline.Id);\n\n                MessagingCenter.Publish(new NotificationMessage(isDoublePress ? NotificationType.SmartKeyDoublePress : NotificationType.SmartKeySinglePress, pipeline.Name ?? string.Empty));\n            }\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Running action {currentGuid} after {(isDoublePress ? \"double\" : \"single\")} Fn+F9 press failed.\", ex);\n        }\n\n        if (isDoublePress)\n        {\n            _settings.Store.SmartKeyDoublePressActionList = actionList;\n            _settings.Store.SmartKeyDoublePressActionId = actionList[nextIndex];\n        }\n        else\n        {\n            _settings.Store.SmartKeySinglePressActionList = actionList;\n            _settings.Store.SmartKeySinglePressActionId = actionList[nextIndex];\n        }\n\n        _settings.SynchronizeStore();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/SnackbarHelper.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.WPF.Windows;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic static class SnackbarHelper\n{\n    public static async Task ShowAsync(string title, string? message = null, SnackbarType type = SnackbarType.Success)\n    {\n        var mainWindow = Application.Current.MainWindow as MainWindow;\n        var snackBar = mainWindow?.Snackbar;\n\n        if (snackBar is null)\n            return;\n\n        SetupSnackbarAppearance(snackBar, title, message, type);\n        SetTitleAndMessage(snackBar, title, message);\n        await snackBar.HideAsync();\n        await snackBar.ShowAsync();\n    }\n\n    public static void Show(string title, string? message = null, SnackbarType type = SnackbarType.Success)\n    {\n        var mainWindow = Application.Current.MainWindow as MainWindow;\n        var snackBar = mainWindow?.Snackbar;\n\n        if (snackBar is null)\n            return;\n\n        SetupSnackbarAppearance(snackBar, title, message, type);\n        SetTitleAndMessage(snackBar, title, message);\n        snackBar.Show();\n    }\n\n    private static void SetupSnackbarAppearance(Snackbar snackBar, string title, string? message, SnackbarType type)\n    {\n        snackBar.Appearance = type switch\n        {\n            SnackbarType.Warning => ControlAppearance.Caution,\n            SnackbarType.Error => ControlAppearance.Danger,\n            _ => ControlAppearance.Secondary\n        };\n        snackBar.Icon = type switch\n        {\n            SnackbarType.Warning => SymbolRegular.Warning24,\n            SnackbarType.Error => SymbolRegular.ErrorCircle24,\n            SnackbarType.Info => SymbolRegular.Info24,\n            _ => SymbolRegular.Checkmark24\n        };\n        snackBar.Timeout = type switch\n        {\n            SnackbarType.Success => 2000,\n            _ => Math.Clamp(GetTextLengthInMilliseconds(title, message), 5000, 10000)\n        };\n        snackBar.CloseButtonEnabled = type switch\n        {\n            SnackbarType.Success => false,\n            _ => true\n        };\n    }\n\n    private static void SetTitleAndMessage(FrameworkElement snackBar, string title, string? message)\n    {\n        if (snackBar.FindName(\"_snackbarTitle\") is TextBlock snackbarTitle)\n            snackbarTitle.Text = title;\n\n        if (snackBar.FindName(\"_snackbarMessage\") is TextBlock snackbarMessage)\n        {\n            snackbarMessage.Visibility = string.IsNullOrEmpty(message) ? Visibility.Collapsed : Visibility.Visible;\n            snackbarMessage.Text = message;\n        }\n    }\n\n    private static int GetTextLengthInMilliseconds(string title, string? message)\n    {\n        var length = 2 + (title.Length + (message?.Length ?? 0)) % 10;\n        return length * 1000;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/SpectrumScreenCapture.cs",
    "content": "﻿using System.Drawing;\nusing System.Drawing.Drawing2D;\nusing System.Drawing.Imaging;\nusing System.Threading;\nusing System.Windows.Forms;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic class SpectrumScreenCapture : SpectrumKeyboardBacklightController.IScreenCapture\n{\n    private const PixelFormat PIXEL_FORMAT = PixelFormat.Format32bppRgb;\n\n    public void CaptureScreen(ref RGBColor[,] buffer, int width, int height, CancellationToken token)\n    {\n        var screen = Screen.PrimaryScreen?.Bounds ?? default;\n\n        using var targetImage = new Bitmap(width, height, PIXEL_FORMAT);\n\n        using (var image = new Bitmap(screen.Width, screen.Height, PIXEL_FORMAT))\n        {\n            using (var graphics = Graphics.FromImage(image))\n                graphics.CopyFromScreen(screen.Left, screen.Top, 0, 0, screen.Size);\n\n            token.ThrowIfCancellationRequested();\n\n            using var targetGraphics = Graphics.FromImage(targetImage);\n            targetGraphics.InterpolationMode = InterpolationMode.Bicubic;\n            targetGraphics.DrawImage(image, new Rectangle(0, 0, width, height));\n        }\n\n        token.ThrowIfCancellationRequested();\n\n        for (var x = 0; x < width; x++)\n        {\n            for (var y = 0; y < height; y++)\n            {\n                var pixel = targetImage.GetPixel(x, y);\n                buffer[x, y] = new RGBColor(pixel.R, pixel.G, pixel.B);\n\n                token.ThrowIfCancellationRequested();\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/ThemeManager.cs",
    "content": "﻿using System;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic class ThemeManager\n{\n    private static readonly RGBColor DefaultAccentColor = new(255, 33, 33);\n\n    private readonly ApplicationSettings _settings;\n    private readonly SystemThemeListener _listener;\n\n    public event EventHandler? ThemeApplied;\n\n    public ThemeManager(SystemThemeListener systemThemeListener, ApplicationSettings settings)\n    {\n        _listener = systemThemeListener;\n        _settings = settings;\n\n        _listener.Changed += (_, _) => Application.Current.Dispatcher.Invoke(Apply);\n    }\n\n    public void Apply()\n    {\n        SetTheme();\n        SetColor();\n\n        ThemeApplied?.Invoke(this, EventArgs.Empty);\n    }\n\n    public RGBColor GetAccentColor()\n    {\n        switch (_settings.Store.AccentColorSource)\n        {\n            case AccentColorSource.Custom:\n                return _settings.Store.AccentColor ?? DefaultAccentColor;\n            case AccentColorSource.System:\n                try\n                {\n                    return SystemTheme.GetAccentColor();\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Couldn't check system accent color; using default.\", ex);\n\n                    return DefaultAccentColor;\n                }\n            default:\n                return DefaultAccentColor;\n        }\n    }\n\n    private bool IsDarkMode()\n    {\n        var theme = _settings.Store.Theme;\n\n        switch (theme)\n        {\n            case Theme.Dark:\n                return true;\n            case Theme.Light:\n                return false;\n            case Theme.System:\n                try\n                {\n                    return SystemTheme.IsDarkMode();\n                }\n                catch (Exception ex)\n                {\n                    if (Log.Instance.IsTraceEnabled)\n                        Log.Instance.Trace($\"Couldn't check system theme; assuming Dark Mode.\", ex);\n\n                    return true;\n                }\n            default:\n                return true;\n        }\n    }\n\n    private void SetTheme()\n    {\n        var theme = IsDarkMode() ? Wpf.Ui.Appearance.ThemeType.Dark : Wpf.Ui.Appearance.ThemeType.Light;\n        Wpf.Ui.Appearance.Theme.Apply(theme, Wpf.Ui.Appearance.BackgroundType.Mica, false);\n    }\n\n    private void SetColor()\n    {\n        var accentColor = GetAccentColor().ToColor();\n        Wpf.Ui.Appearance.Accent.Apply(systemAccent: accentColor,\n            primaryAccent: accentColor,\n            secondaryAccent: accentColor,\n            tertiaryAccent: accentColor);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Utils/TrayHelper.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline;\nusing LenovoLegionToolkit.WPF.Assets;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Windows.Utils;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing Wpf.Ui.Controls.Interfaces;\nusing MenuItem = Wpf.Ui.Controls.MenuItem;\n\nnamespace LenovoLegionToolkit.WPF.Utils;\n\npublic class TrayHelper : IDisposable\n{\n    private const string NAVIGATION_TAG = \"navigation\";\n    private const string STATIC_TAG = \"static\";\n    private const string AUTOMATION_TAG = \"automation\";\n\n    private readonly ThemeManager _themeManager = IoCContainer.Resolve<ThemeManager>();\n    private readonly AutomationProcessor _automationProcessor = IoCContainer.Resolve<AutomationProcessor>();\n\n    private readonly ContextMenu _contextMenu = new()\n    {\n        FontSize = 14\n    };\n\n    private readonly Action _bringToForeground;\n\n    private NotifyIcon? _notifyIcon;\n\n    public TrayHelper(INavigation navigation, Action bringToForeground, bool trayTooltipEnabled)\n    {\n        _bringToForeground = bringToForeground;\n\n        InitializeStaticItems(navigation);\n\n        var notifyIcon = new NotifyIcon\n        {\n            Icon = AssetResources.icon,\n            Text = Resource.AppName\n        };\n\n        if (trayTooltipEnabled)\n            notifyIcon.ToolTipWindow = async () => await StatusWindow.CreateAsync();\n\n        notifyIcon.ContextMenu = _contextMenu;\n        notifyIcon.OnClick += (_, _) => _bringToForeground();\n        _notifyIcon = notifyIcon;\n\n        _themeManager.ThemeApplied += (_, _) => _contextMenu.Resources = App.Current.Resources;\n    }\n\n    public async Task InitializeAsync()\n    {\n        var pipelines = await _automationProcessor.GetPipelinesAsync();\n        pipelines = pipelines.Where(p => p.Trigger is null).ToList();\n        SetAutomationItems(pipelines);\n\n        _automationProcessor.PipelinesChanged += (_, p) => SetAutomationItems(p);\n    }\n\n    private void InitializeStaticItems(INavigation navigation)\n    {\n        foreach (var navigationItem in navigation.Items.OfType<NavigationItem>())\n        {\n            var navigationMenuItem = new MenuItem\n            {\n                SymbolIcon = navigationItem.Icon,\n                Header = navigationItem.Content,\n                Tag = NAVIGATION_TAG\n            };\n            navigationMenuItem.Click += async (_, _) =>\n            {\n                _contextMenu.IsOpen = false;\n                _bringToForeground();\n\n                await Task.Delay(TimeSpan.FromMilliseconds(500));\n                navigation.Navigate(navigationItem.PageTag);\n            };\n            _contextMenu.Items.Add(navigationMenuItem);\n        }\n\n        _contextMenu.Items.Add(new Separator { Tag = NAVIGATION_TAG });\n\n        var openMenuItem = new MenuItem { Header = Resource.Open, Tag = STATIC_TAG };\n        openMenuItem.Click += (_, _) =>\n        {\n            _contextMenu.IsOpen = false;\n            _bringToForeground();\n        };\n        _contextMenu.Items.Add(openMenuItem);\n\n        var closeMenuItem = new MenuItem { Header = Resource.Close, Tag = STATIC_TAG };\n        closeMenuItem.Click += async (_, _) =>\n        {\n            _contextMenu.IsOpen = false;\n            await App.Current.ShutdownAsync();\n        };\n        _contextMenu.Items.Add(closeMenuItem);\n    }\n\n    private void SetAutomationItems(List<AutomationPipeline> pipelines)\n    {\n        foreach (var item in _contextMenu.Items.OfType<Control>().Where(mi => AUTOMATION_TAG.Equals(mi.Tag)).ToArray())\n            _contextMenu.Items.Remove(item);\n\n        pipelines = pipelines.Where(p => p.Trigger is null).Reverse().ToList();\n\n        if (pipelines.Count != 0)\n            _contextMenu.Items.Insert(0, new Separator { Tag = AUTOMATION_TAG });\n\n        foreach (var pipeline in pipelines)\n        {\n            var icon = Enum.TryParse<SymbolRegular>(pipeline.IconName, out var iconParsed)\n                ? iconParsed\n                : SymbolRegular.Play24;\n\n            var item = new MenuItem\n            {\n                SymbolIcon = icon,\n                Header = pipeline.Name ?? Resource.Unnamed,\n                Tag = AUTOMATION_TAG\n            };\n            item.Click += async (_, _) =>\n            {\n                try\n                {\n                    await _automationProcessor.RunNowAsync(pipeline);\n                }\n                catch {  /* Ignored. */ }\n            };\n\n            _contextMenu.Items.Insert(0, item);\n        }\n    }\n\n    public void MakeVisible()\n    {\n        if (_notifyIcon is null)\n            return;\n\n        _notifyIcon.Visible = true;\n    }\n\n    public void Dispose()\n    {\n        GC.SuppressFinalize(this);\n\n        if (_notifyIcon is not null)\n            _notifyIcon.Visible = false;\n\n        _notifyIcon?.Dispose();\n        _notifyIcon = null;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/AddAutomationStepWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.AddAutomationStepWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.AddAutomationStepWindow_Title}\"\n    Width=\"600\"\n    Height=\"570\"\n    MinWidth=\"500\"\n    MinHeight=\"400\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.AddAutomationStepWindow_Title}\" />\n\n        </Grid>\n\n        <wpfui:DynamicScrollViewer Grid.Row=\"1\" Margin=\"12,0,0,12\">\n            <StackPanel x:Name=\"_content\" Margin=\"0,0,12,0\" />\n        </wpfui:DynamicScrollViewer>\n\n        <Grid Grid.Row=\"2\" Margin=\"0,0,12,12\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:Button\n                Grid.Column=\"1\"\n                MinWidth=\"100\"\n                Margin=\"8,0,0,0\"\n                Click=\"CancelButton_Click\"\n                Content=\"{x:Static resources:Resource.Cancel}\" />\n\n        </Grid>\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/AddAutomationStepWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.WPF.Controls;\nusing LenovoLegionToolkit.WPF.Controls.Automation;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing CardControl = LenovoLegionToolkit.WPF.Controls.Custom.CardControl;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation;\n\npublic partial class AddAutomationStepWindow\n{\n    private readonly List<AbstractAutomationStepControl> _controls;\n    private readonly Action<AbstractAutomationStepControl> _addStepControl;\n\n    public AddAutomationStepWindow(List<AbstractAutomationStepControl> controls, Action<AbstractAutomationStepControl> addStepControl)\n    {\n        _controls = controls;\n        _addStepControl = addStepControl;\n\n        InitializeComponent();\n\n        IsVisibleChanged += AddAutomationStepWindow_IsVisibleChanged;\n    }\n\n    private async void AddAutomationStepWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private void CancelButton_Click(object sender, RoutedEventArgs e) => Close();\n\n    private Task RefreshAsync()\n    {\n        _content.Children.Clear();\n\n        foreach (var control in _controls)\n            _content.Children.Add(CreateCardControl(control));\n\n        return Task.CompletedTask;\n    }\n\n    private CardControl CreateCardControl(AbstractAutomationStepControl stepControl)\n    {\n        var control = new CardControl\n        {\n            Icon = stepControl.Icon,\n            Header = new CardHeaderControl\n            {\n                Title = stepControl.Title,\n                Accessory = new SymbolIcon { Symbol = SymbolRegular.ChevronRight24 }\n            },\n            Margin = new(0, 8, 0, 0),\n        };\n\n        control.Click += (_, _) =>\n        {\n            _addStepControl(stepControl);\n            Close();\n        };\n\n        return control;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/AutomationPipelineTriggerConfigurationWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.AutomationPipelineTriggerConfigurationWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.AutomationPipelineTriggerConfigurationWindow_Title}\"\n    Width=\"500\"\n    Height=\"600\"\n    MinWidth=\"500\"\n    MinHeight=\"600\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Initialized=\"AutomationPipelineTriggerConfigurationWindow_Initialized\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n    <Grid>\n\n        <Grid>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <wpfui:TitleBar\n                Grid.Row=\"0\"\n                CanMaximize=\"false\"\n                ShowMaximize=\"false\"\n                ShowMinimize=\"false\"\n                UseSnapLayout=\"false\" />\n\n            <Grid\n                Grid.Row=\"0\"\n                Height=\"24\"\n                Margin=\"12,8,12,8\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <TextBlock\n                    Grid.Column=\"0\"\n                    VerticalAlignment=\"Center\"\n                    FontSize=\"12\"\n                    IsHitTestVisible=\"False\"\n                    Text=\"{x:Static resources:Resource.AutomationPipelineTriggerConfigurationWindow_Title}\" />\n\n            </Grid>\n\n            <TabControl\n                x:Name=\"_tabControl\"\n                Grid.Row=\"1\"\n                Margin=\"16\" />\n\n            <Grid Grid.Row=\"2\" Margin=\"0,0,12,12\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <wpfui:Button\n                    Grid.Column=\"1\"\n                    MinWidth=\"100\"\n                    Margin=\"8,0,0,0\"\n                    Appearance=\"Primary\"\n                    Click=\"SaveButton_Click\"\n                    Content=\"{x:Static resources:Resource.Save}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"2\"\n                    MinWidth=\"100\"\n                    Margin=\"8,0,0,0\"\n                    Click=\"CancelButton_Click\"\n                    Content=\"{x:Static resources:Resource.Cancel}\" />\n\n            </Grid>\n        </Grid>\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/AutomationPipelineTriggerConfigurationWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation;\n\npublic partial class AutomationPipelineTriggerConfigurationWindow\n{\n    private readonly IEnumerable<IAutomationPipelineTrigger> _triggers;\n\n    public event EventHandler<IAutomationPipelineTrigger>? OnSave;\n\n    public AutomationPipelineTriggerConfigurationWindow(IEnumerable<IAutomationPipelineTrigger> triggers)\n    {\n        _triggers = triggers;\n\n        InitializeComponent();\n    }\n\n    private void AutomationPipelineTriggerConfigurationWindow_Initialized(object? sender, EventArgs e)\n    {\n        foreach (var trigger in _triggers)\n        {\n            var content = Create(trigger);\n            if (content is not null)\n            {\n                var header = new StackPanel { Orientation = Orientation.Horizontal };\n                header.Children.Add(new SymbolIcon { Symbol = trigger.Icon(), Margin = new(8, 0, 0, 0) });\n                header.Children.Add(new TextBlock { Text = trigger.DisplayName, Margin = new(4, 0, 8, 0) });\n\n                var tabItem = new TabItem\n                {\n                    Header = header,\n                    Content = content\n                };\n                AutomationProperties.SetName(tabItem, trigger.DisplayName);\n                _tabControl.Items.Add(tabItem);\n            }\n            else\n            {\n                _tabControl.Items.Add(new TabItem\n                {\n                    Visibility = Visibility.Collapsed,\n                    Tag = trigger\n                });\n            }\n        }\n\n        if (_tabControl.Items.Count < 2)\n            return;\n\n        _tabControl.SelectedIndex = (_tabControl.Items[0] as TabItem)?.Content is null ? 1 : 0;\n    }\n\n    private void SaveButton_Click(object sender, RoutedEventArgs e)\n    {\n        var triggers = _tabControl.Items\n            .OfType<TabItem>()\n            .Select(c =>\n            {\n                if (c.Content is IAutomationPipelineTriggerTabItemContent<IAutomationPipelineTrigger> content)\n                    return content.GetTrigger();\n\n                if (c.Tag is IAutomationPipelineTrigger trigger)\n                    return trigger;\n\n                return null;\n            })\n            .OfType<IAutomationPipelineTrigger>()\n            .ToArray();\n\n        var result = triggers.Length > 1\n            ? new AndAutomationPipelineTrigger(triggers)\n            : triggers.FirstOrDefault();\n\n        if (result is not null)\n            OnSave?.Invoke(this, result);\n\n        Close();\n    }\n\n    private void CancelButton_Click(object sender, RoutedEventArgs e)\n    {\n        Close();\n    }\n\n    public static bool IsValid(IEnumerable<IAutomationPipelineTrigger> triggers) => triggers.Any(IsValid);\n\n    private static bool IsValid(IAutomationPipelineTrigger trigger) => trigger switch\n    {\n        IDeviceAutomationPipelineTrigger => true,\n        IGodModePresetChangedAutomationPipelineTrigger => true,\n        IPeriodicAutomationPipelineTrigger t1 when t1.Period > TimeSpan.Zero => true,\n        IProcessesAutomationPipelineTrigger => true,\n        IPowerModeAutomationPipelineTrigger => true,\n        ITimeAutomationPipelineTrigger => true,\n        IUserInactivityPipelineTrigger t2 when t2.InactivityTimeSpan > TimeSpan.Zero => true,\n        IWiFiConnectedPipelineTrigger => true,\n        _ => false\n    };\n\n    private static IAutomationPipelineTriggerTabItemContent<IAutomationPipelineTrigger>? Create(IAutomationPipelineTrigger trigger) => trigger switch\n    {\n        IDeviceAutomationPipelineTrigger dt => new DeviceAutomationPipelineTriggerTabItemContent(dt),\n        IGodModePresetChangedAutomationPipelineTrigger gpt => new GodModePresetPipelineTriggerTabItemContent(gpt),\n        IPeriodicAutomationPipelineTrigger pet => new PeriodicAutomationPipelineTriggerTabItemContent(pet),\n        IProcessesAutomationPipelineTrigger pt => new ProcessAutomationPipelineTriggerTabItemControl(pt),\n        IPowerModeAutomationPipelineTrigger pmt => new PowerModeAutomationPipelineTriggerTabItemContent(pmt),\n        ITimeAutomationPipelineTrigger tt => new TimeAutomationPipelineTriggerTabItemContent(tt),\n        IUserInactivityPipelineTrigger ut when ut.InactivityTimeSpan > TimeSpan.Zero => new UserInactivityPipelineTriggerTabItemContent(ut),\n        IWiFiConnectedPipelineTrigger wt => new WiFiConnectedPipelineTriggerTabItemContent(wt),\n        _ => null\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/CreateAutomationPipelineWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.CreateAutomationPipelineWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.CreateAutomationPipelineWindow_Title}\"\n    Width=\"600\"\n    Height=\"570\"\n    MinWidth=\"500\"\n    MinHeight=\"400\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.CreateAutomationPipelineWindow_Title}\" />\n\n        </Grid>\n\n        <wpfui:DynamicScrollViewer Grid.Row=\"1\" Margin=\"12,0,0,12\">\n            <StackPanel x:Name=\"_content\" Margin=\"0,0,12,0\" />\n        </wpfui:DynamicScrollViewer>\n\n        <Grid Grid.Row=\"2\" Margin=\"0,0,12,12\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:Button\n                x:Name=\"_createButton\"\n                Grid.Column=\"1\"\n                MinWidth=\"100\"\n                Margin=\"8,0,0,0\"\n                Appearance=\"Primary\"\n                Click=\"CreateButton_Click\"\n                Content=\"{x:Static resources:Resource.Create}\" />\n\n            <wpfui:Button\n                Grid.Column=\"2\"\n                MinWidth=\"100\"\n                Margin=\"8,0,0,0\"\n                Click=\"CancelButton_Click\"\n                Content=\"{x:Static resources:Resource.Cancel}\" />\n\n        </Grid>\n    </Grid>\n</local:BaseWindow>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/CreateAutomationPipelineWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.WPF.Controls;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing CardControl = LenovoLegionToolkit.WPF.Controls.Custom.CardControl;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation;\n\npublic partial class CreateAutomationPipelineWindow\n{\n    private readonly IAutomationPipelineTrigger[] _triggers =\n    [\n        new ACAdapterConnectedAutomationPipelineTrigger(),\n        new LowWattageACAdapterConnectedAutomationPipelineTrigger(),\n        new ACAdapterDisconnectedAutomationPipelineTrigger(),\n        new PowerModeAutomationPipelineTrigger(PowerModeState.Balance),\n        new GodModePresetChangedAutomationPipelineTrigger(Guid.Empty),\n        new GamesAreRunningAutomationPipelineTrigger(),\n        new GamesStopAutomationPipelineTrigger(),\n        new ProcessesAreRunningAutomationPipelineTrigger([]),\n        new ProcessesStopRunningAutomationPipelineTrigger([]),\n        new UserInactivityAutomationPipelineTrigger(TimeSpan.Zero),\n        new UserInactivityAutomationPipelineTrigger(TimeSpan.FromMinutes(1)),\n        new SessionLockAutomationPipelineTrigger(),\n        new SessionUnlockAutomationPipelineTrigger(),\n        new LidOpenedAutomationPipelineTrigger(),\n        new LidClosedAutomationPipelineTrigger(),\n        new DisplayOnAutomationPipelineTrigger(),\n        new DisplayOffAutomationPipelineTrigger(),\n        new HDROnAutomationPipelineTrigger(),\n        new HDROffAutomationPipelineTrigger(),\n        new DeviceConnectedAutomationPipelineTrigger([]),\n        new DeviceDisconnectedAutomationPipelineTrigger([]),\n        new ExternalDisplayConnectedAutomationPipelineTrigger(),\n        new ExternalDisplayDisconnectedAutomationPipelineTrigger(),\n        new WiFiConnectedAutomationPipelineTrigger([]),\n        new WiFiDisconnectedAutomationPipelineTrigger(),\n        new TimeAutomationPipelineTrigger(false, false, TimeExtensions.UtcNow, Enum.GetValues<DayOfWeek>()),\n        new PeriodicAutomationPipelineTrigger(TimeSpan.FromMinutes(1)),\n        new OnStartupAutomationPipelineTrigger(),\n        new OnResumeAutomationPipelineTrigger()\n    ];\n\n    private readonly HashSet<Type> _existingTriggerTypes;\n    private readonly Action<IAutomationPipelineTrigger> _createPipeline;\n\n    private bool _multiSelect;\n\n    public CreateAutomationPipelineWindow(HashSet<Type> existingTriggerTypes,\n        Action<IAutomationPipelineTrigger> createPipeline)\n    {\n        _existingTriggerTypes = existingTriggerTypes;\n        _createPipeline = createPipeline;\n\n        InitializeComponent();\n\n        IsVisibleChanged += CreateAutomationPipelineWindow_IsVisibleChanged;\n    }\n\n    private async void CreateAutomationPipelineWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private void CreateButton_Click(object sender, RoutedEventArgs e)\n    {\n        var triggers = _content.Children.ToArray()\n            .OfType<CardControl>()\n            .Select(c => c.Header)\n            .OfType<CardHeaderControl>()\n            .Select(c => c.Accessory)\n            .OfType<CheckBox>()\n            .Where(c => c.IsChecked ?? false)\n            .Select(c => c.Tag)\n            .OfType<IAutomationPipelineTrigger>()\n            .ToArray();\n\n        if (triggers.IsEmpty())\n            return;\n\n        var trigger = triggers.Length == 1 ? triggers[0] : new AndAutomationPipelineTrigger(triggers);\n        _createPipeline(trigger);\n\n        Close();\n    }\n\n    private void CancelButton_Click(object sender, RoutedEventArgs e) => Close();\n\n    private Task RefreshAsync()\n    {\n        _content.Children.Clear();\n\n        if (!_multiSelect)\n            _content.Children.Add(CreateMultipleSelectCardControl());\n\n        foreach (var trigger in _triggers)\n            _content.Children.Add(CreateCardControl(trigger));\n\n        _createButton.IsEnabled = false;\n        _createButton.Visibility = _multiSelect ? Visibility.Visible : Visibility.Collapsed;\n\n        return Task.CompletedTask;\n    }\n\n    private CardControl CreateMultipleSelectCardControl()\n    {\n        var control = new CardControl\n        {\n            Icon = SymbolRegular.SquareMultiple24,\n            Header = new CardHeaderControl\n            {\n                Title = Resource.MultipleTriggersAutomationPipelineTrigger_DisplayName,\n                Accessory = new SymbolIcon { Symbol = SymbolRegular.ChevronRight24 }\n            },\n            Margin = new(0, 8, 0, 0),\n        };\n\n        control.Click += async (_, _) =>\n        {\n            _multiSelect = true;\n            await RefreshAsync();\n        };\n\n        return control;\n    }\n\n    private CardControl CreateCardControl(IAutomationPipelineTrigger trigger)\n    {\n        UIElement accessory;\n\n        if (_multiSelect)\n        {\n            var checkbox = new CheckBox\n            {\n                Tag = trigger,\n                HorizontalAlignment = HorizontalAlignment.Right\n            };\n            checkbox.Click += (_, e) =>\n            {\n                RefreshCreateButton();\n                e.Handled = true;\n            };\n            accessory = checkbox;\n        }\n        else\n        {\n            accessory = new SymbolIcon { Symbol = SymbolRegular.ChevronRight24 };\n        }\n\n        var control = new CardControl\n        {\n            Icon = trigger.Icon(),\n            Header = new CardHeaderControl\n            {\n                Title = trigger.DisplayName,\n                Accessory = accessory\n            },\n            Margin = new(0, 8, 0, 0),\n        };\n\n        if (!_multiSelect && trigger is IDisallowDuplicatesAutomationPipelineTrigger)\n            control.IsEnabled = !_existingTriggerTypes.Contains(trigger.GetType());\n\n        control.Click += (_, _) =>\n        {\n            if (_multiSelect)\n            {\n                if (accessory is not CheckBox checkbox)\n                    return;\n\n                var isChecked = checkbox.IsChecked ?? false;\n                checkbox.IsChecked = !isChecked;\n                RefreshCreateButton();\n            }\n            else\n            {\n                _createPipeline(trigger);\n                Close();\n            }\n        };\n\n        return control;\n    }\n\n    private void RefreshCreateButton()\n    {\n        if (!_multiSelect)\n        {\n            _createButton.IsEnabled = false;\n            return;\n        }\n\n        var anyChecked = _content.Children.ToArray()\n            .OfType<CardControl>()\n            .Select(c => c.Header)\n            .OfType<CardHeaderControl>()\n            .Select(c => c.Accessory)\n            .OfType<CheckBox>()\n            .Any(c => c.IsChecked ?? false);\n\n        _createButton.IsEnabled = anyChecked;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/DeviceAutomationPipelineTriggerTabItemContent.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent.DeviceAutomationPipelineTriggerTabItemContent\"\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:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:ui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    Initialized=\"DeviceAutomationPipelineTriggerTabItemContent_Initialized\"\n    mc:Ignorable=\"d\">\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n        <Grid.ColumnDefinitions>\n            <ColumnDefinition Width=\"*\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n            <ColumnDefinition Width=\"Auto\" />\n        </Grid.ColumnDefinitions>\n        <ui:TextBox\n            x:Name=\"_filterTextBox\"\n            Grid.Row=\"0\"\n            Grid.Column=\"0\"\n            Margin=\"16,16,0,16\"\n            AutomationProperties.Name=\"{x:Static resources:Resource.Filter}\"\n            Icon=\"Search24\"\n            PlaceholderEnabled=\"True\"\n            PlaceholderText=\"{x:Static resources:Resource.Filter}\"\n            TextChanged=\"FilterTextBox_TextChanged\" />\n        <ui:Button\n            x:Name=\"_onlySelectedButton\"\n            Grid.Row=\"0\"\n            Grid.Column=\"1\"\n            Margin=\"16,16,0,16\"\n            VerticalAlignment=\"Stretch\"\n            Click=\"OnlySelected_Click\"\n            Icon=\"SelectAllOn24\"\n            ToolTip=\"{x:Static resources:Resource.DeviceAutomationPipelineTriggerTabItemContent_OnlySelected}\" />\n        <ui:Button\n            x:Name=\"_onlyConnectedButton\"\n            Grid.Row=\"0\"\n            Grid.Column=\"2\"\n            Margin=\"8,16,0,16\"\n            VerticalAlignment=\"Stretch\"\n            Click=\"OnlyConnectedButton_Click\"\n            Icon=\"Connected20\"\n            ToolTip=\"{x:Static resources:Resource.DeviceAutomationPipelineTriggerTabItemContent_OnlyConnected}\" />\n        <ui:Button\n            x:Name=\"_onlyRemovableButton\"\n            Grid.Row=\"0\"\n            Grid.Column=\"3\"\n            Margin=\"8,16,32,16\"\n            VerticalAlignment=\"Stretch\"\n            Click=\"OnlyRemovableButton_Click\"\n            Icon=\"ArrowEject20\"\n            ToolTip=\"{x:Static resources:Resource.DeviceAutomationPipelineTriggerTabItemContent_OnlyRemovable}\" />\n        <ScrollViewer\n            x:Name=\"_scrollViewer\"\n            Grid.Row=\"1\"\n            Grid.Column=\"0\"\n            Grid.ColumnSpan=\"4\">\n            <StackPanel x:Name=\"_content\" Margin=\"16,0,16,16\" />\n        </ScrollViewer>\n    </Grid>\n</UserControl>"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/DeviceAutomationPipelineTriggerTabItemContent.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.System;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\n\npublic partial class DeviceAutomationPipelineTriggerTabItemContent : IAutomationPipelineTriggerTabItemContent<INativeWindowsMessagePipelineTrigger>\n{\n    private readonly NativeWindowsMessageListener _listener = IoCContainer.Resolve<NativeWindowsMessageListener>();\n\n    private readonly IDeviceAutomationPipelineTrigger _trigger;\n\n    private readonly HashSet<string> _instanceIds;\n\n    private readonly List<Device> _devices = [];\n\n    private bool _onlySelected;\n    private bool _onlyConnected;\n    private bool _onlyRemovable = true;\n\n    private CancellationTokenSource? _filterDebounceCancellationTokenSource;\n\n    public DeviceAutomationPipelineTriggerTabItemContent(IDeviceAutomationPipelineTrigger trigger)\n    {\n        _trigger = trigger;\n        _instanceIds = [.. trigger.InstanceIds];\n\n        InitializeComponent();\n    }\n\n    private async void DeviceAutomationPipelineTriggerTabItemContent_Initialized(object? sender, EventArgs e)\n    {\n        RefreshButtons();\n        await LoadAsync();\n    }\n\n    private async void NativeWindowsMessageListener_Changed(object? sender, NativeWindowsMessageListener.ChangedEventArgs e)\n    {\n        if (e.Message is not NativeWindowsMessage.DeviceConnected and not NativeWindowsMessage.DeviceDisconnected)\n            return;\n\n        await LoadAsync();\n    }\n\n    private async void FilterTextBox_TextChanged(object sender, TextChangedEventArgs e)\n    {\n        try\n        {\n            if (_filterDebounceCancellationTokenSource is not null)\n                await _filterDebounceCancellationTokenSource.CancelAsync();\n\n            _filterDebounceCancellationTokenSource = new();\n\n            await Task.Delay(500, _filterDebounceCancellationTokenSource.Token);\n\n            _content.Children.Clear();\n            _scrollViewer.ScrollToHome();\n\n            Reload();\n        }\n        catch (OperationCanceledException) { }\n    }\n\n    private void OnlySelected_Click(object sender, RoutedEventArgs e)\n    {\n        _onlySelected = !_onlySelected;\n        RefreshButtons();\n        Reload();\n    }\n\n    private void OnlyConnectedButton_Click(object sender, RoutedEventArgs e)\n    {\n        _onlyConnected = !_onlyConnected;\n        RefreshButtons();\n        Reload();\n    }\n\n    private void OnlyRemovableButton_Click(object sender, RoutedEventArgs e)\n    {\n        _onlyRemovable = !_onlyRemovable;\n        RefreshButtons();\n        Reload();\n    }\n\n    private async Task LoadAsync()\n    {\n        _listener.Changed -= NativeWindowsMessageListener_Changed;\n\n        _devices.Clear();\n        _devices.AddRange(await Task.Run(Devices.GetAll));\n\n        _listener.Changed += NativeWindowsMessageListener_Changed;\n\n        Reload();\n    }\n\n    private void Reload()\n    {\n        _content.Children.Clear();\n\n        if (_devices.Count == 0)\n            return;\n\n        var devices = SortAndFilter(_devices);\n\n        foreach (var device in devices)\n        {\n            var listItem = new ListItem(device, _instanceIds.Contains(device.DeviceInstanceId));\n            listItem.Checked += (_, args) =>\n            {\n                _instanceIds.Add(device.DeviceInstanceId);\n                args.Handled = true;\n            };\n            listItem.Unchecked += (_, args) =>\n            {\n                _instanceIds.Remove(device.DeviceInstanceId);\n                if (_onlySelected)\n                    Reload();\n                args.Handled = true;\n            };\n            _content.Children.Add(listItem);\n        }\n    }\n\n    private List<Device> SortAndFilter(List<Device> devices)\n    {\n        var result = devices.AsEnumerable();\n        if (_onlySelected)\n            result = result.Where(d => _instanceIds.Contains(d.DeviceInstanceId));\n        if (_onlyConnected)\n            result = result.Where(d => !d.IsDisconnected);\n        if (_onlyRemovable)\n            result = result.Where(d => d.IsRemovable);\n\n        result = result.OrderBy(d => d.Name);\n\n        if (!string.IsNullOrWhiteSpace(_filterTextBox.Text))\n            result = result.Where(p => p.Index.Contains(_filterTextBox.Text, StringComparison.InvariantCultureIgnoreCase));\n\n        return result.ToList();\n    }\n\n    private void RefreshButtons()\n    {\n        _onlySelectedButton.Appearance = _onlySelected ? ControlAppearance.Primary : ControlAppearance.Secondary;\n        _onlyConnectedButton.Appearance = _onlyConnected ? ControlAppearance.Primary : ControlAppearance.Secondary;\n        _onlyRemovableButton.Appearance = _onlyRemovable ? ControlAppearance.Primary : ControlAppearance.Secondary;\n    }\n\n    public INativeWindowsMessagePipelineTrigger GetTrigger() => _trigger.DeepCopy([.. _instanceIds]);\n\n    private class ListItem : UserControl\n    {\n        private readonly CardControl _cardControl = new()\n        {\n            Margin = new(0, 0, 0, 8)\n        };\n\n        private readonly StackPanel _stackPanel = new()\n        {\n            Orientation = Orientation.Vertical\n        };\n\n        private readonly TextBlock _notConnected = new()\n        {\n            Margin = new(0, 0, 0, 2),\n            TextTrimming = TextTrimming.CharacterEllipsis,\n            FontSize = 12,\n            Text = \"Not connected\"\n        };\n\n        private readonly TextBlock _name = new()\n        {\n            Margin = new(0, 0, 0, 4),\n            FontWeight = FontWeights.Medium\n        };\n\n        private readonly TextBlock _description = new()\n        {\n            Margin = new(0, 0, 0, 4)\n        };\n\n        private readonly TextBlock _busReportedDeviceDescription = new()\n        {\n            Margin = new(0, 0, 0, 4)\n        };\n\n        private readonly TextBlock _deviceInstanceId = new()\n        {\n            Margin = new(0, 4, 0, 0),\n            TextTrimming = TextTrimming.CharacterEllipsis,\n            FontSize = 12\n        };\n\n        private readonly CheckBox _checkBox = new();\n\n        private readonly Device _device;\n\n        public event RoutedEventHandler Checked\n        {\n            add => _checkBox.Checked += value;\n            remove => _checkBox.Checked -= value;\n        }\n\n        public event RoutedEventHandler Unchecked\n        {\n            add => _checkBox.Unchecked += value;\n            remove => _checkBox.Unchecked -= value;\n        }\n\n        public ListItem(Device device, bool isChecked)\n        {\n            _device = device;\n\n            _checkBox.IsChecked = isChecked;\n\n            InitializeComponent();\n        }\n\n        private void InitializeComponent()\n        {\n            if (_device.IsDisconnected)\n            {\n                _notConnected.SetResourceReference(ForegroundProperty, \"SystemFillColorCautionBrush\");\n                _stackPanel.Children.Add(_notConnected);\n            }\n\n            _name.Text = _device.Name;\n            _stackPanel.Children.Add(_name);\n\n            if (_device.Description.Length > 0 && _device.Description != _device.Name)\n            {\n                _description.Text = _device.Description;\n                _stackPanel.Children.Add(_description);\n            }\n\n            if (_device.BusReportedDeviceDescription.Length > 0 &&\n                _device.BusReportedDeviceDescription != _device.Name &&\n                _device.BusReportedDeviceDescription != _device.Description)\n            {\n                _busReportedDeviceDescription.Text = _device.BusReportedDeviceDescription;\n                _stackPanel.Children.Add(_busReportedDeviceDescription);\n            }\n\n            _deviceInstanceId.Text = _device.DeviceInstanceId;\n            _deviceInstanceId.SetResourceReference(ForegroundProperty, \"TextFillColorSecondaryBrush\");\n            _stackPanel.Children.Add(_deviceInstanceId);\n\n            _cardControl.Header = _stackPanel;\n            _cardControl.Content = _checkBox;\n\n            _cardControl.Click += (_, args) =>\n            {\n                if (args.Source is CheckBox)\n                    return;\n\n                _checkBox.IsChecked = !(_checkBox.IsChecked ?? false);\n                args.Handled = true;\n            };\n\n            Content = _cardControl;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/GodModePresetPipelineTriggerTabItemContent.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent.GodModePresetPipelineTriggerTabItemContent\"\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=\"450\"\n    d:DesignWidth=\"800\"\n    Initialized=\"GodModePresetPipelineTriggerTabItemContent_Initialized\"\n    mc:Ignorable=\"d\">\n    <ScrollViewer>\n        <StackPanel x:Name=\"_content\" Margin=\"16\" />\n    </ScrollViewer>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/GodModePresetPipelineTriggerTabItemContent.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Settings;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\n\npublic partial class GodModePresetPipelineTriggerTabItemContent : IAutomationPipelineTriggerTabItemContent<IGodModePresetChangedAutomationPipelineTrigger>\n{\n    private readonly GodModeSettings _settings = IoCContainer.Resolve<GodModeSettings>();\n\n    private readonly IGodModePresetChangedAutomationPipelineTrigger _trigger;\n\n    public GodModePresetPipelineTriggerTabItemContent(IGodModePresetChangedAutomationPipelineTrigger trigger)\n    {\n        _trigger = trigger;\n\n        InitializeComponent();\n    }\n\n    public IGodModePresetChangedAutomationPipelineTrigger GetTrigger()\n    {\n        var state = _content.Children\n            .OfType<RadioButton>()\n            .Where(r => r.IsChecked ?? false)\n            .Select(r => (Guid)r.Tag)\n            .DefaultIfEmpty(Guid.Empty)\n            .FirstOrDefault();\n        return _trigger.DeepCopy(state);\n    }\n\n    private void GodModePresetPipelineTriggerTabItemContent_Initialized(object? sender, EventArgs e)\n    {\n        foreach (var (guid, preset) in _settings.Store.Presets)\n        {\n            var radio = new RadioButton\n            {\n                Content = preset.Name,\n                Tag = guid,\n                IsChecked = guid == _trigger.PresetId,\n                Margin = new(0, 0, 0, 8)\n            };\n            _content.Children.Add(radio);\n        }\n    }\n}"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/IAutomationPipelineTriggerTabItemContent.cs",
    "content": "﻿using LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\n\npublic interface IAutomationPipelineTriggerTabItemContent<out T> where T : IAutomationPipelineTrigger\n{\n    T GetTrigger();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/PeriodicActionPipelineTriggerTabItemContent.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent.PeriodicAutomationPipelineTriggerTabItemContent\"\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:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:ui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    Initialized=\"PeriodicAutomationPipelineTriggerTabItemContent_Initialized\"\n    mc:Ignorable=\"d\">\n    <StackPanel>\n        <Grid>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                Margin=\"0,0,10,0\"\n                VerticalAlignment=\"Center\"\n                Text=\"{Binding Source={x:Static resources:Resource.PeriodicActionPipelineTriggerTabItemContent_PeriodMinutes}}\" />\n\n            <TextBlock\n                Grid.Column=\"0\"\n                Margin=\"0,0,10,0\"\n                VerticalAlignment=\"Center\"\n                Text=\":\" />\n\n            <ui:NumberBox\n                x:Name=\"_periodPickerMinutes\"\n                Grid.Column=\"1\"\n                ClearButtonEnabled=\"False\"\n                MaxDecimalPlaces=\"0\"\n                Maximum=\"1440\"\n                Minimum=\"1\" />\n        </Grid>\n    </StackPanel>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/PeriodicActionPipelineTriggerTabItemContent.xaml.cs",
    "content": "﻿using System;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\n\npublic partial class PeriodicAutomationPipelineTriggerTabItemContent : IAutomationPipelineTriggerTabItemContent<IPeriodicAutomationPipelineTrigger>\n{\n    private readonly IPeriodicAutomationPipelineTrigger _trigger;\n    private readonly TimeSpan _period;\n\n    public PeriodicAutomationPipelineTriggerTabItemContent(IPeriodicAutomationPipelineTrigger trigger)\n    {\n        _trigger = trigger;\n        _period = trigger.Period;\n        InitializeComponent();\n    }\n\n    private void PeriodicAutomationPipelineTriggerTabItemContent_Initialized(object? sender, EventArgs e)\n    {\n        _periodPickerMinutes.Value = _period.TotalMinutes;\n    }\n\n    public IPeriodicAutomationPipelineTrigger GetTrigger()\n    {\n        var periodMinutes = (int)(_periodPickerMinutes.Value ?? 1);\n        return _trigger.DeepCopy(TimeSpan.FromMinutes(periodMinutes));\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/PowerModeAutomationPipelineTriggerTabItemContent.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent.PowerModeAutomationPipelineTriggerTabItemContent\"\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=\"450\"\n    d:DesignWidth=\"800\"\n    Initialized=\"PowerModeAutomationPipelineTriggerTabItemContent_Initialized\"\n    mc:Ignorable=\"d\">\n    <StackPanel x:Name=\"_content\" Margin=\"16\" />\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/PowerModeAutomationPipelineTriggerTabItemContent.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\n\npublic partial class PowerModeAutomationPipelineTriggerTabItemContent : IAutomationPipelineTriggerTabItemContent<IPowerModeAutomationPipelineTrigger>\n{\n    private readonly PowerModeFeature _feature = IoCContainer.Resolve<PowerModeFeature>();\n\n    private readonly IPowerModeAutomationPipelineTrigger _trigger;\n    private readonly PowerModeState _powerModeState;\n\n    public PowerModeAutomationPipelineTriggerTabItemContent(IPowerModeAutomationPipelineTrigger trigger)\n    {\n        _trigger = trigger;\n        _powerModeState = trigger.PowerModeState;\n\n        InitializeComponent();\n    }\n\n    public IPowerModeAutomationPipelineTrigger GetTrigger()\n    {\n        var state = _content.Children\n            .OfType<RadioButton>()\n            .Where(r => r.IsChecked ?? false)\n            .Select(r => (PowerModeState)r.Tag)\n            .DefaultIfEmpty(PowerModeState.Balance)\n            .FirstOrDefault();\n        return _trigger.DeepCopy(state);\n    }\n\n    private async void PowerModeAutomationPipelineTriggerTabItemContent_Initialized(object? sender, EventArgs eventArgs)\n    {\n        var states = await _feature.GetAllStatesAsync();\n\n        foreach (var state in states)\n        {\n            var radio = new RadioButton\n            {\n                Content = state.GetDisplayName(),\n                Tag = state,\n                IsChecked = state == _powerModeState,\n                Margin = new(0, 0, 0, 8)\n            };\n            _content.Children.Add(radio);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/ProcessAutomationPipelineTriggerTabItemControl.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent.ProcessAutomationPipelineTriggerTabItemControl\"\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:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    Initialized=\"ProcessAutomationPipelineTriggerTabItemControl_Initialized\"\n    mc:Ignorable=\"d\">\n    <Grid Margin=\"16,16,0,16\">\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:DynamicScrollViewer Grid.Row=\"0\">\n            <ItemsControl\n                x:Name=\"_list\"\n                Margin=\"0,0,16,8\"\n                HorizontalContentAlignment=\"Stretch\"\n                ScrollViewer.HorizontalScrollBarVisibility=\"Disabled\" />\n        </wpfui:DynamicScrollViewer>\n\n        <Border\n            Grid.Row=\"1\"\n            Margin=\"0,8,16,0\"\n            BorderBrush=\"{DynamicResource KeyboardFocusBorderColorBrush}\"\n            BorderThickness=\"0,1,0,0\">\n            <Grid Margin=\"0,16,0,0\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <wpfui:Button\n                    Grid.Column=\"1\"\n                    Click=\"AddButton_Click\"\n                    FontSize=\"18\"\n                    Icon=\"Add24\"\n                    ToolTip=\"{x:Static resources:Resource.Add}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"2\"\n                    Margin=\"8,0,0,0\"\n                    Click=\"DeleteAllButton_Click\"\n                    FontSize=\"18\"\n                    Icon=\"Delete24\"\n                    ToolTip=\"{x:Static resources:Resource.Delete}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"3\"\n                    Margin=\"8,0,0,0\"\n                    Click=\"CopyShortcut\"\n                    FontSize=\"18\"\n                    Icon=\"Copy24\"\n                    ToolTip=\"{x:Static resources:Resource.CopyAll}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"4\"\n                    Margin=\"8,0,0,0\"\n                    Click=\"PasteShortcut\"\n                    FontSize=\"18\"\n                    Icon=\"ClipboardPaste24\"\n                    ToolTip=\"{x:Static resources:Resource.Paste}\" />\n            </Grid>\n        </Border>\n    </Grid>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/ProcessAutomationPipelineTriggerTabItemControl.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Input;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing Microsoft.Win32;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\n\npublic partial class ProcessAutomationPipelineTriggerTabItemControl : IAutomationPipelineTriggerTabItemContent<IProcessesAutomationPipelineTrigger>\n{\n    private readonly IProcessesAutomationPipelineTrigger _trigger;\n    private readonly List<ProcessInfo> _processes;\n\n    public ProcessAutomationPipelineTriggerTabItemControl(IProcessesAutomationPipelineTrigger trigger)\n    {\n        _trigger = trigger;\n        _processes = [.. trigger.Processes];\n\n        InitializeComponent();\n    }\n\n    public IProcessesAutomationPipelineTrigger GetTrigger() => _trigger.DeepCopy([.. _processes]);\n\n    private void ProcessAutomationPipelineTriggerTabItemControl_Initialized(object? sender, EventArgs e)\n    {\n        var copyCommand = new RoutedCommand();\n        copyCommand.InputGestures.Add(new KeyGesture(Key.C, ModifierKeys.Control));\n        CommandBindings.Add(new CommandBinding(copyCommand, CopyShortcut));\n\n        var pasteCommand = new RoutedCommand();\n        pasteCommand.InputGestures.Add(new KeyGesture(Key.V, ModifierKeys.Control));\n        CommandBindings.Add(new CommandBinding(pasteCommand, PasteShortcut));\n\n        Refresh();\n    }\n\n    private void Item_OnDelete(object? sender, EventArgs e)\n    {\n        if (sender is not ListItem listItem)\n            return;\n\n        _processes.Remove(listItem.Process);\n        Refresh();\n    }\n\n    private void AddButton_Click(object sender, RoutedEventArgs e)\n    {\n        var ofd = new OpenFileDialog\n        {\n            InitialDirectory = \"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\",\n            Filter = \"Exe Files (.exe)|*.exe\",\n            CheckFileExists = true,\n        };\n\n        var result = ofd.ShowDialog() ?? false;\n        if (!result)\n            return;\n\n        var processInfo = ProcessInfo.FromPath(ofd.FileName);\n        if (_processes.Contains(processInfo))\n            return;\n\n        _processes.Add(processInfo);\n        Refresh();\n    }\n\n    private void DeleteAllButton_Click(object sender, RoutedEventArgs e)\n    {\n        _processes.Clear();\n        Refresh();\n    }\n\n    private void CopyShortcut(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            ClipboardExtensions.SetProcesses(_processes);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't copy to clipboard\", ex);\n        }\n    }\n\n    private void PasteShortcut(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            var processes = ClipboardExtensions.GetProcesses()\n                .Where(p => !_processes.Contains(p))\n                .ToArray();\n            if (processes.Length == 0)\n                return;\n\n            _processes.AddRange(processes);\n            Refresh();\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't paste from clipboard\", ex);\n        }\n    }\n\n    private void Refresh()\n    {\n        _list.Items.Clear();\n        foreach (var process in _processes.OrderBy(p => p))\n        {\n            var item = new ListItem(process);\n            item.OnDelete += Item_OnDelete;\n            _list.Items.Add(item);\n        }\n    }\n\n    private class ListItem : UserControl\n    {\n        private readonly Grid _grid = new()\n        {\n            Margin = new(8, 4, 0, 16),\n            ColumnDefinitions =\n            {\n                new() { Width = GridLength.Auto },\n                new() { Width = new(1, GridUnitType.Star) },\n                new() { Width = GridLength.Auto },\n            },\n            RowDefinitions =\n            {\n                new() { Height = GridLength.Auto },\n                new() { Height = GridLength.Auto },\n            },\n        };\n\n        private readonly Image _icon = new()\n        {\n            Width = 24,\n            Height = 24,\n            Margin = new(0, 0, 8, 0),\n        };\n\n        private readonly TextBlock _nameTextBox = new()\n        {\n            TextTrimming = TextTrimming.CharacterEllipsis,\n        };\n\n        private readonly TextBlock _pathTextBox = new()\n        {\n            TextTrimming = TextTrimming.CharacterEllipsis,\n            Margin = new(0, 4, 0, 0),\n        };\n\n        private readonly Button _deleteButton = new()\n        {\n            Icon = SymbolRegular.Delete24,\n            FontSize = 18,\n            Margin = new(8, 0, 0, 0),\n        };\n\n        public ProcessInfo Process { get; }\n\n        public event EventHandler? OnDelete;\n\n        public ListItem(ProcessInfo process)\n        {\n            Process = process;\n\n            InitializeComponent();\n        }\n\n        private void InitializeComponent()\n        {\n            _icon.Source = ImageSourceExtensions.ApplicationIcon(Process.ExecutablePath) ?? ImageSourceExtensions.FromResource(\"Assets/default_exe.png\");\n            _nameTextBox.Text = Process.Name;\n            _pathTextBox.Text = Process.ExecutablePath;\n\n            ToolTipService.SetToolTip(_pathTextBox, Process.ExecutablePath);\n\n            _pathTextBox.SetResourceReference(ForegroundProperty, \"TextFillColorSecondaryBrush\");\n\n            _deleteButton.Click += (_, _) => OnDelete?.Invoke(this, EventArgs.Empty);\n\n            Grid.SetColumn(_icon, 0);\n            Grid.SetRow(_icon, 0);\n            Grid.SetRowSpan(_icon, 2);\n\n            Grid.SetColumn(_nameTextBox, 1);\n            Grid.SetRow(_nameTextBox, 0);\n\n            Grid.SetColumn(_pathTextBox, 1);\n            Grid.SetRow(_pathTextBox, 1);\n\n            Grid.SetColumn(_deleteButton, 2);\n            Grid.SetRow(_deleteButton, 0);\n            Grid.SetRowSpan(_deleteButton, 2);\n\n            _grid.Children.Add(_icon);\n            _grid.Children.Add(_nameTextBox);\n            _grid.Children.Add(_pathTextBox);\n            _grid.Children.Add(_deleteButton);\n\n            Content = _grid;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/TimeAutomationPipelineTriggerTabItemContent.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent.TimeAutomationPipelineTriggerTabItemContent\"\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:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:system=\"clr-namespace:System;assembly=System.Runtime\"\n    xmlns:ui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    Initialized=\"TimeAutomationPipelineTriggerTabItemContent_Initialized\"\n    mc:Ignorable=\"d\">\n    <StackPanel Margin=\"16\">\n        <RadioButton\n            x:Name=\"_sunriseRadioButton\"\n            Margin=\"0,0,0,8\"\n            Click=\"RadioButton_Click\"\n            Content=\"{x:Static resources:Resource.TimeAutomationPipelineTriggerTabItemContent_Sunrise}\"\n            GroupName=\"A\" />\n\n        <RadioButton\n            x:Name=\"_sunsetRadioButton\"\n            Margin=\"0,0,0,8\"\n            Click=\"RadioButton_Click\"\n            Content=\"{x:Static resources:Resource.TimeAutomationPipelineTriggerTabItemContent_Sunset}\"\n            GroupName=\"A\" />\n\n        <RadioButton\n            x:Name=\"_timeRadioButton\"\n            Margin=\"0,0,0,8\"\n            Click=\"RadioButton_Click\"\n            Content=\"{x:Static resources:Resource.TimeAutomationPipelineTriggerTabItemContent_Time}\"\n            GroupName=\"A\" />\n        <StackPanel\n            x:Name=\"_timePickerPanel\"\n            Margin=\"28,0,0,0\"\n            VerticalAlignment=\"Center\"\n            IsEnabled=\"False\"\n            Orientation=\"Vertical\">\n            <StackPanel Orientation=\"Horizontal\">\n                <ui:NumberBox\n                    x:Name=\"_timePickerHours\"\n                    ClearButtonEnabled=\"False\"\n                    MaxDecimalPlaces=\"0\"\n                    Maximum=\"23\"\n                    Minimum=\"0\" />\n                <Label\n                    Margin=\"4,0,4,0\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\":\" />\n                <ui:NumberBox\n                    x:Name=\"_timePickerMinutes\"\n                    ClearButtonEnabled=\"False\"\n                    MaxDecimalPlaces=\"0\"\n                    Maximum=\"59\"\n                    Minimum=\"0\" />\n                <Label\n                    Margin=\"8,0,0,0\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"(HH:MM)\" />\n            </StackPanel>\n            <StackPanel x:Name=\"_daysOfWeekPanel\" Margin=\"0,16,0,0\">\n                <CheckBox Click=\"DayOfWeekCheckBox_OnClick\" Tag=\"{x:Static system:DayOfWeek.Monday}\" />\n                <CheckBox Click=\"DayOfWeekCheckBox_OnClick\" Tag=\"{x:Static system:DayOfWeek.Tuesday}\" />\n                <CheckBox Click=\"DayOfWeekCheckBox_OnClick\" Tag=\"{x:Static system:DayOfWeek.Wednesday}\" />\n                <CheckBox Click=\"DayOfWeekCheckBox_OnClick\" Tag=\"{x:Static system:DayOfWeek.Thursday}\" />\n                <CheckBox Click=\"DayOfWeekCheckBox_OnClick\" Tag=\"{x:Static system:DayOfWeek.Friday}\" />\n                <CheckBox Click=\"DayOfWeekCheckBox_OnClick\" Tag=\"{x:Static system:DayOfWeek.Saturday}\" />\n                <CheckBox Click=\"DayOfWeekCheckBox_OnClick\" Tag=\"{x:Static system:DayOfWeek.Sunday}\" />\n            </StackPanel>\n        </StackPanel>\n    </StackPanel>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/TimeAutomationPipelineTriggerTabItemContent.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Automation.Resources;\nusing LenovoLegionToolkit.Lib.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\n\npublic partial class TimeAutomationPipelineTriggerTabItemContent : IAutomationPipelineTriggerTabItemContent<ITimeAutomationPipelineTrigger>\n{\n    private readonly ITimeAutomationPipelineTrigger _trigger;\n    private readonly bool _isSunrise;\n    private readonly bool _isSunset;\n    private readonly Time? _time;\n    private readonly DayOfWeek[] _days;\n\n    public TimeAutomationPipelineTriggerTabItemContent(ITimeAutomationPipelineTrigger trigger)\n    {\n        _trigger = trigger;\n        _isSunrise = trigger.IsSunrise;\n        _isSunset = trigger.IsSunset;\n        _time = trigger.Time;\n        _days = trigger.Days;\n\n        InitializeComponent();\n        UpdateCheckBoxes();\n    }\n\n    private void UpdateCheckBoxes()\n    {\n        foreach (var checkBox in _daysOfWeekPanel.Children.OfType<CheckBox>())\n            checkBox.Content = Resource.Culture.DateTimeFormat.GetDayName((DayOfWeek)checkBox.Tag);\n    }\n\n    private void TimeAutomationPipelineTriggerTabItemContent_Initialized(object? sender, EventArgs e)\n    {\n        _sunriseRadioButton.IsChecked = _isSunrise;\n        _sunsetRadioButton.IsChecked = _isSunset;\n\n        var local = _time is not null\n            ? DateTimeExtensions.UtcFrom(_time.Value.Hour, _time.Value.Minute).ToLocalTime()\n            : DateTime.Now;\n\n        _timePickerHours.Value = local.Hour;\n        _timePickerMinutes.Value = local.Minute;\n\n        _timeRadioButton.IsChecked = _time is not null;\n        _timePickerPanel.IsEnabled = _time is not null;\n\n        var daysOfWeek = _days.Length != 0 ? _days : Enum.GetValues<DayOfWeek>();\n        foreach (var daysOfWeekCheckbox in _daysOfWeekPanel.Children.OfType<CheckBox>())\n        {\n            if (daysOfWeek.Contains((DayOfWeek)daysOfWeekCheckbox.Tag))\n                daysOfWeekCheckbox.IsChecked = true;\n        }\n    }\n\n    public ITimeAutomationPipelineTrigger GetTrigger()\n    {\n        var isSunrise = _sunriseRadioButton.IsChecked ?? false;\n        var isSunset = _sunsetRadioButton.IsChecked ?? false;\n        var time = GetSelectedTime();\n        var days = GetSelectedDays();\n\n        return _trigger.DeepCopy(isSunrise, isSunset, time, days);\n    }\n\n    private Time? GetSelectedTime()\n    {\n        if (!_timePickerPanel.IsEnabled)\n            return null;\n\n        var pickedHour = (int?)_timePickerHours.Value ?? 0;\n        var pickedMinute = (int?)_timePickerMinutes.Value ?? 0;\n\n        var utc = DateTimeExtensions.LocalFrom(pickedHour, pickedMinute).ToUniversalTime();\n        return new Time(utc.Hour, utc.Minute);\n    }\n\n    private DayOfWeek[] GetSelectedDays()\n    {\n        var days = _daysOfWeekPanel.Children\n            .OfType<CheckBox>()\n            .Where(c => c.IsChecked == true)\n            .Select(c => c.Tag)\n            .Cast<DayOfWeek>()\n            .ToArray();\n\n        if (days.IsEmpty())\n            days = Enum.GetValues<DayOfWeek>();\n\n        return days;\n    }\n\n    private void RadioButton_Click(object sender, RoutedEventArgs e)\n    {\n        _timePickerPanel.IsEnabled = _timeRadioButton.IsChecked ?? false;\n    }\n\n    private void DayOfWeekCheckBox_OnClick(object sender, RoutedEventArgs e)\n    {\n        if (sender is not CheckBox checkBox)\n            return;\n\n        var anySelected = _daysOfWeekPanel.Children\n            .OfType<CheckBox>()\n            .Any(c => c.IsChecked == true);\n\n        if (anySelected)\n            return;\n\n        checkBox.IsChecked = true;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/UserInactivityPipelineTriggerTabItemContent.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent.UserInactivityPipelineTriggerTabItemContent\"\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=\"450\"\n    d:DesignWidth=\"800\"\n    mc:Ignorable=\"d\">\n    <StackPanel>\n        <ComboBox\n            x:Name=\"_timeoutComboBox\"\n            MinWidth=\"160\"\n            Margin=\"16,16,16,16\"\n            MaxDropDownHeight=\"Auto\" />\n    </StackPanel>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/UserInactivityPipelineTriggerTabItemContent.xaml.cs",
    "content": "﻿using System;\nusing Humanizer;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.WPF.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\n\npublic partial class UserInactivityPipelineTriggerTabItemContent : IAutomationPipelineTriggerTabItemContent<IUserInactivityPipelineTrigger>\n{\n    private static readonly TimeSpan[] TimeSpans =\n    [\n        TimeSpan.FromSeconds(10),\n        TimeSpan.FromSeconds(30),\n        TimeSpan.FromMinutes(1),\n        TimeSpan.FromMinutes(2),\n        TimeSpan.FromMinutes(3),\n        TimeSpan.FromMinutes(5),\n        TimeSpan.FromMinutes(10),\n        TimeSpan.FromMinutes(15),\n        TimeSpan.FromMinutes(30)\n    ];\n\n    private readonly IUserInactivityPipelineTrigger _trigger;\n\n    public UserInactivityPipelineTriggerTabItemContent(IUserInactivityPipelineTrigger trigger)\n    {\n        _trigger = trigger;\n        InitializeComponent();\n\n        _timeoutComboBox.SetItems(TimeSpans, trigger.InactivityTimeSpan, t => t.Humanize());\n    }\n\n    public IUserInactivityPipelineTrigger GetTrigger()\n    {\n        var state = _timeoutComboBox.TryGetSelectedItem(out TimeSpan tt)\n            ? tt\n            : TimeSpan.FromSeconds(30);\n        return _trigger.DeepCopy(state);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/WiFiConnectedPipelineTriggerTabItemContent.xaml",
    "content": "﻿<UserControl\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent.WiFiConnectedPipelineTriggerTabItemContent\"\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:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:ui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    d:DesignHeight=\"450\"\n    d:DesignWidth=\"800\"\n    mc:Ignorable=\"d\">\n    <ScrollViewer>\n        <StackPanel Margin=\"16,16,0,16\">\n            <StackPanel x:Name=\"_ssidStackPanel\" />\n            <StackPanel\n                Margin=\"0,8,0,0\"\n                HorizontalAlignment=\"Right\"\n                Orientation=\"Horizontal\">\n                <ui:Button\n                    x:Name=\"_addNetworkNameButton\"\n                    Appearance=\"Primary\"\n                    Click=\"AddNetworkNameButton_OnClick\"\n                    Content=\"{x:Static resources:Resource.Add}\"\n                    Icon=\"Add24\" />\n                <ui:Button\n                    Height=\"{Binding ActualHeight, ElementName=_addNetworkNameButton}\"\n                    Margin=\"8,0,0,0\"\n                    Click=\"CopyCurrentNetworkNameButton_OnClick\"\n                    Icon=\"Wifi124\"\n                    ToolTip=\"{x:Static resources:Resource.WiFiConnectedPipelineTriggerTabItemContent_CopyCurrentNetworkName}\" />\n            </StackPanel>\n            <Label\n                Margin=\"0,16,16,0\"\n                HorizontalAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.WiFiConnectedPipelineTriggerTabItemContent_LeaveEmptyForAnyNetwork}\" />\n        </StackPanel>\n    </ScrollViewer>\n</UserControl>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Automation/TabItemContent/WiFiConnectedPipelineTriggerTabItemContent.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Data;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline.Triggers;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.System;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\nusing TextBox = Wpf.Ui.Controls.TextBox;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Automation.TabItemContent;\n\npublic partial class WiFiConnectedPipelineTriggerTabItemContent : IAutomationPipelineTriggerTabItemContent<IWiFiConnectedPipelineTrigger>\n{\n    private readonly IWiFiConnectedPipelineTrigger _trigger;\n\n    public WiFiConnectedPipelineTriggerTabItemContent(IWiFiConnectedPipelineTrigger trigger)\n    {\n        _trigger = trigger;\n\n        InitializeComponent();\n\n        trigger.Ssids\n            .DefaultIfEmpty(string.Empty)\n            .Select(CreateControl)\n            .ForEach(c => _ssidStackPanel.Children.Add(c));\n    }\n\n    public IWiFiConnectedPipelineTrigger GetTrigger()\n    {\n        var ssids = _ssidStackPanel.Children\n            .OfType<ItemControl>()\n            .Select(c => c.Text)\n            .Distinct()\n            .Where(s => !string.IsNullOrEmpty(s))\n            .ToArray();\n        return _trigger.DeepCopy(ssids);\n    }\n\n    private void AddNetworkNameButton_OnClick(object sender, RoutedEventArgs e)\n    {\n        _ssidStackPanel.Children.Add(CreateControl(string.Empty));\n    }\n\n    private void CopyCurrentNetworkNameButton_OnClick(object sender, RoutedEventArgs e)\n    {\n        var ssid = WiFi.GetConnectedNetworkSsid();\n        if (ssid is null)\n            return;\n\n        var last = _ssidStackPanel.Children\n            .OfType<ItemControl>()\n            .LastOrDefault();\n\n        if (last is not null && string.IsNullOrEmpty(last.Text))\n            last.Text = ssid;\n        else\n            _ssidStackPanel.Children.Add(CreateControl(ssid));\n    }\n\n    private UserControl CreateControl(string ssid)\n    {\n        var control = new ItemControl { Text = ssid };\n        control.Delete += (s, _) =>\n        {\n            if (s is not UIElement element)\n                return;\n\n            _ssidStackPanel.Children.Remove(element);\n\n            if (_ssidStackPanel.Children.OfType<ItemControl>().Any())\n                return;\n\n            _ssidStackPanel.Children.Add(CreateControl(string.Empty));\n        };\n        return control;\n    }\n\n    private class ItemControl : UserControl\n    {\n        private readonly TextBox _textBox = new();\n\n        private readonly Button _removeButton = new()\n        {\n            Margin = new(8, 0, 0, 0),\n            Icon = SymbolRegular.Delete24\n        };\n\n        private readonly Grid _grid = new()\n        {\n            Margin = new(0, 0, 0, 8),\n            ColumnDefinitions =\n            {\n                new() { Width = new GridLength(1, GridUnitType.Star) },\n                new() { Width = new GridLength(1, GridUnitType.Auto) }\n            }\n        };\n\n        public string Text\n        {\n            get => _textBox.Text;\n            set => _textBox.Text = value;\n        }\n\n        public event EventHandler? Delete;\n\n        public ItemControl()\n        {\n            _removeButton.SetBinding(HeightProperty, new Binding(nameof(_textBox.ActualHeight)) { Source = _textBox });\n            _removeButton.Click += (_, _) => Delete?.Invoke(this, EventArgs.Empty);\n\n            Grid.SetColumn(_textBox, 0);\n            Grid.SetColumn(_removeButton, 1);\n\n            _grid.Children.Add(_textBox);\n            _grid.Children.Add(_removeButton);\n\n            Content = _grid;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/BaseWindow.cs",
    "content": "﻿using System.Windows;\nusing System.Windows.Media;\nusing Wpf.Ui.Appearance;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Windows;\n\npublic class BaseWindow : UiWindow\n{\n    protected BaseWindow()\n    {\n        SnapsToDevicePixels = true;\n        ExtendsContentIntoTitleBar = true;\n\n        WindowBackdropType = BackgroundType.Mica;\n\n        DpiChanged += BaseWindow_DpiChanged;\n    }\n\n    private void BaseWindow_DpiChanged(object sender, DpiChangedEventArgs e) => VisualTreeHelper.SetRootDpi(this, e.NewDpi);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/AddDashboardItemWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Dashboard.AddDashboardItemWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.Add}\"\n    Width=\"600\"\n    Height=\"570\"\n    MinWidth=\"500\"\n    MinHeight=\"400\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.Add}\" />\n\n        </Grid>\n\n        <wpfui:DynamicScrollViewer Grid.Row=\"1\" Margin=\"12,0,0,12\">\n            <StackPanel x:Name=\"_content\" Margin=\"0,0,12,0\" />\n        </wpfui:DynamicScrollViewer>\n\n        <Grid Grid.Row=\"2\" Margin=\"0,0,12,12\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:Button\n                Grid.Column=\"1\"\n                MinWidth=\"100\"\n                Margin=\"8,0,0,0\"\n                Click=\"CancelButton_Click\"\n                Content=\"{x:Static resources:Resource.Cancel}\" />\n\n        </Grid>\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/AddDashboardItemWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.WPF.Controls;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\nusing CardControl = LenovoLegionToolkit.WPF.Controls.Custom.CardControl;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Dashboard;\n\npublic partial class AddDashboardItemWindow\n{\n    private readonly Func<IEnumerable<DashboardItem>> _existingItems;\n    private readonly Action<DashboardItem> _addDashboardItem;\n\n    public AddDashboardItemWindow(Func<IEnumerable<DashboardItem>> existingItems, Action<DashboardItem> addDashboardItem)\n    {\n        _existingItems = existingItems;\n        _addDashboardItem = addDashboardItem;\n\n        InitializeComponent();\n\n        IsVisibleChanged += AddAutomationStepWindow_IsVisibleChanged;\n    }\n\n    private async void AddAutomationStepWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private void CancelButton_Click(object sender, RoutedEventArgs e) => Close();\n\n    private Task RefreshAsync()\n    {\n        _content.Children.Clear();\n\n        var allItems = Enum.GetValues<DashboardItem>();\n        var existingItems = _existingItems().ToArray();\n\n        foreach (var item in allItems.Except(existingItems))\n            _content.Children.Add(CreateCardControl(item));\n\n        return Task.CompletedTask;\n    }\n\n    private CardControl CreateCardControl(DashboardItem item)\n    {\n        var control = new CardControl\n        {\n            Icon = item.GetIcon(),\n            Header = new CardHeaderControl\n            {\n                Title = item.GetTitle(),\n                Accessory = new SymbolIcon { Symbol = SymbolRegular.ChevronRight24 }\n            },\n            Margin = new(0, 8, 0, 0),\n        };\n\n        control.Click += (_, _) =>\n        {\n            _addDashboardItem(item);\n            Close();\n        };\n\n        return control;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/BalanceModeSettingsWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Dashboard.BalanceModeSettingsWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.BalanceModeSettingsWindow_Title}\"\n    MinWidth=\"400\"\n    MinHeight=\"0\"\n    MaxWidth=\"400\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"NoResize\"\n    ShowInTaskbar=\"False\"\n    SizeToContent=\"Height\"\n    WindowStartupLocation=\"CenterOwner\">\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.BalanceModeSettingsWindow_Title}\" />\n        </Grid>\n\n        <Grid Grid.Row=\"1\" Margin=\"12,0,12,12\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <StackPanel Grid.Row=\"0\">\n                <CheckBox x:Name=\"_aiModeCheckBox\" Content=\"{x:Static resources:Resource.BalanceModeSettingsWindow_AIEngine_Title}\" />\n\n                <TextBlock\n                    Margin=\"32,4,0,0\"\n                    Focusable=\"True\"\n                    Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                    Text=\"{x:Static resources:Resource.BalanceModeSettingsWindow_AIEngine_Message}\"\n                    TextWrapping=\"Wrap\" />\n            </StackPanel>\n\n            <Grid Grid.Row=\"1\" Margin=\"0,20,0,0\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <wpfui:Button\n                    Grid.Column=\"1\"\n                    MinWidth=\"100\"\n                    Appearance=\"Primary\"\n                    Click=\"SaveButton_Click\"\n                    Content=\"{x:Static resources:Resource.Save}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"2\"\n                    MinWidth=\"100\"\n                    Margin=\"8,0,0,0\"\n                    Click=\"CancelButton_Click\"\n                    Content=\"{x:Static resources:Resource.Cancel}\" />\n            </Grid>\n        </Grid>\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/BalanceModeSettingsWindow.xaml.cs",
    "content": "﻿using System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Features;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Dashboard;\n\npublic partial class BalanceModeSettingsWindow\n{\n    private readonly PowerModeFeature _powerModeFeature = IoCContainer.Resolve<PowerModeFeature>();\n    private readonly AIController _aiController = IoCContainer.Resolve<AIController>();\n\n    public BalanceModeSettingsWindow()\n    {\n        InitializeComponent();\n\n        IsVisibleChanged += BalanceModeSettingsWindow_IsVisibleChanged;\n    }\n\n    private void BalanceModeSettingsWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (!IsVisible)\n            return;\n\n        _aiModeCheckBox.IsChecked = _aiController.IsAIModeEnabled;\n    }\n\n    private async void SaveButton_Click(object sender, RoutedEventArgs e)\n    {\n        var isAiModeChecked = _aiModeCheckBox.IsChecked ?? false;\n\n        _aiController.IsAIModeEnabled = isAiModeChecked;\n\n        await _aiController.StopAsync();\n        await _powerModeFeature.SetStateAsync(PowerModeState.Balance);\n        await _aiController.StartIfNeededAsync();\n\n        Close();\n    }\n\n    private void CancelButton_Click(object sender, RoutedEventArgs e) => Close();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/EditDashboardWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Dashboard.EditDashboardWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.EditDashboardWindow_Title}\"\n    Width=\"700\"\n    Height=\"700\"\n    MinWidth=\"600\"\n    MinHeight=\"400\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.EditDashboardWindow_Title}\" />\n        </Grid>\n\n        <custom:InfoBar\n            x:Name=\"_infoBar\"\n            Title=\"{x:Static resources:Resource.EditDashboardWindow_Disclaimer_Message}\"\n            Grid.Row=\"1\"\n            Margin=\"12,0,16,16\"\n            IsClosable=\"False\"\n            IsOpen=\"True\"\n            Severity=\"Informational\" />\n\n        <controls:LoadableControl\n            x:Name=\"_loader\"\n            Grid.Row=\"2\"\n            Margin=\"12,0,0,0\"\n            IndicatorVerticalAlignment=\"Center\">\n            <wpfui:DynamicScrollViewer x:Name=\"_groupsScrollViewer\">\n                <StackPanel>\n                    <custom:CardControl Margin=\"0,0,16,16\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resources:Resource.EditDashboardWindow_Sensors}\" />\n                        </custom:CardControl.Header>\n                        <wpfui:ToggleSwitch x:Name=\"_sensorsSwitch\" AutomationProperties.Name=\"{x:Static resources:Resource.EditDashboardWindow_Sensors}\" />\n                    </custom:CardControl>\n                    <StackPanel x:Name=\"_groupsStackPanel\" Margin=\"0,0,16,0\" />\n                </StackPanel>\n            </wpfui:DynamicScrollViewer>\n        </controls:LoadableControl>\n\n        <Grid\n            x:Name=\"_applyRevertStackPanel\"\n            Grid.Row=\"3\"\n            Margin=\"12\"\n            Visibility=\"Collapsed\">\n\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:Button\n                Grid.Column=\"0\"\n                MinWidth=\"120\"\n                Appearance=\"Secondary\"\n                Click=\"AddButton_Click\"\n                Content=\"{x:Static resources:Resource.Add}\" />\n            <wpfui:Button\n                Grid.Column=\"1\"\n                MinWidth=\"120\"\n                Margin=\"12,0,0,0\"\n                Appearance=\"Secondary\"\n                Click=\"DefaultButton_Click\"\n                Content=\"{x:Static resources:Resource.Default}\" />\n            <wpfui:Button\n                Grid.Column=\"3\"\n                MinWidth=\"120\"\n                Margin=\"12,0,0,0\"\n                Appearance=\"Primary\"\n                Click=\"ApplyButton_Click\"\n                Content=\"{x:Static resources:Resource.Apply}\" />\n            <wpfui:Button\n                Grid.Column=\"4\"\n                MinWidth=\"120\"\n                Margin=\"12,0,0,0\"\n                Appearance=\"Secondary\"\n                Click=\"CancelButton_Click\"\n                Content=\"{x:Static resources:Resource.Cancel}\" />\n        </Grid>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/EditDashboardWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.WPF.Controls.Dashboard.Edit;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Settings;\nusing LenovoLegionToolkit.WPF.Utils;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Dashboard;\n\npublic partial class EditDashboardWindow\n{\n    private readonly DashboardSettings _dashboardSettings = IoCContainer.Resolve<DashboardSettings>();\n\n    private readonly DashboardGroup[] _groups;\n\n    public event EventHandler? Apply;\n\n    public EditDashboardWindow()\n    {\n        _groups = _dashboardSettings.Store.Groups ?? DashboardGroup.DefaultGroups;\n\n        InitializeComponent();\n\n        IsVisibleChanged += EditDashboardWindow_IsVisibleChanged;\n    }\n\n    private async void EditDashboardWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private async Task RefreshAsync()\n    {\n        _loader.IsLoading = true;\n        _infoBar.Visibility = Visibility.Hidden;\n        _applyRevertStackPanel.Visibility = Visibility.Hidden;\n\n        var loadingTask = Task.Delay(TimeSpan.FromMilliseconds(500));\n\n        var groups = _groups;\n\n        _groupsScrollViewer.ScrollToTop();\n        _groupsStackPanel.Children.Clear();\n\n        _sensorsSwitch.IsChecked = _dashboardSettings.Store.ShowSensors;\n\n        foreach (var group in groups)\n            _groupsStackPanel.Children.Add(CreateGroupControl(group));\n\n        GroupsChanged();\n\n        await loadingTask;\n\n        _applyRevertStackPanel.Visibility = Visibility.Visible;\n        _infoBar.Visibility = Visibility.Visible;\n        _loader.IsLoading = false;\n    }\n\n    private async void AddButton_Click(object sender, RoutedEventArgs e)\n    {\n        var result = await MessageBoxHelper.ShowInputAsync(this,\n            Resource.EditDashboardWindow_CreateGroup_Title,\n            Resource.EditDashboardWindow_CreateGroup_Message,\n            primaryButton: Resource.OK,\n            secondaryButton: Resource.Cancel);\n\n        if (string.IsNullOrEmpty(result))\n            return;\n\n        _groupsStackPanel.Children.Add(CreateGroupControl(new(DashboardGroupType.Custom, result)));\n    }\n\n    private void DefaultButton_Click(object sender, RoutedEventArgs e)\n    {\n        _dashboardSettings.Store.ShowSensors = true;\n        _dashboardSettings.Store.Groups = null;\n        _dashboardSettings.SynchronizeStore();\n\n        Close();\n\n        Apply?.Invoke(this, EventArgs.Empty);\n    }\n\n    private void ApplyButton_Click(object sender, RoutedEventArgs e)\n    {\n        _dashboardSettings.Store.ShowSensors = _sensorsSwitch.IsChecked ?? true;\n        _dashboardSettings.Store.Groups = _groupsStackPanel.Children\n            .OfType<EditDashboardGroupControl>()\n            .Select(c => c.GetDashboardGroup())\n            .ToArray();\n        _dashboardSettings.SynchronizeStore();\n\n        Close();\n\n        Apply?.Invoke(this, EventArgs.Empty);\n    }\n\n    private void CancelButton_Click(object sender, RoutedEventArgs e) => Close();\n\n    private IEnumerable<DashboardItem> GetAllItems() =>\n        _groupsStackPanel.Children\n            .OfType<EditDashboardGroupControl>()\n            .SelectMany(c => c.GetItems());\n\n    private EditDashboardGroupControl CreateGroupControl(DashboardGroup dashboardGroup)\n    {\n        var control = new EditDashboardGroupControl(dashboardGroup, GetAllItems);\n        control.MoveUp += (_, _) => MoveGroupUp(control);\n        control.MoveDown += (_, _) => MoveGroupDown(control);\n        control.Delete += (_, _) => DeleteGroup(control);\n        control.Changed += (_, _) => GroupsChanged();\n        return control;\n    }\n\n    private void GroupsChanged()\n    {\n        _groupsStackPanel.Children.OfType<EditDashboardGroupControl>().ForEach(c => c.RefreshAdd());\n    }\n\n    private void MoveGroupUp(UIElement control)\n    {\n        var index = _groupsStackPanel.Children.IndexOf(control);\n        index--;\n\n        if (index < 0)\n            return;\n\n        _groupsStackPanel.Children.Remove(control);\n        _groupsStackPanel.Children.Insert(index, control);\n    }\n\n    private void MoveGroupDown(UIElement control)\n    {\n        var index = _groupsStackPanel.Children.IndexOf(control);\n        index++;\n\n        if (index >= _groupsStackPanel.Children.Count)\n            return;\n\n        _groupsStackPanel.Children.Remove(control);\n        _groupsStackPanel.Children.Insert(index, control);\n    }\n\n    private void DeleteGroup(UIElement control)\n    {\n        _groupsStackPanel.Children.Remove(control);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/ExtendedHybridModeInfoWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Dashboard.ExtendedHybridModeInfoWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_Title}\"\n    MinWidth=\"550\"\n    MaxWidth=\"550\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    SizeToContent=\"Height\"\n    WindowStartupLocation=\"CenterOwner\">\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_Title}\" />\n\n        </Grid>\n\n        <ScrollViewer Grid.Row=\"1\" Margin=\"16,16,16,16\">\n            <StackPanel>\n\n                <StackPanel x:Name=\"_hybridPanel\">\n                    <TextBlock\n                        FontSize=\"16\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_Hybrid_Title}\" />\n                    <TextBlock\n                        Margin=\"0,4,0,24\"\n                        Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_Hybrid_Message}\"\n                        TextWrapping=\"Wrap\" />\n                </StackPanel>\n\n                <StackPanel x:Name=\"_hybridIgpuPanel\">\n                    <TextBlock\n                        FontSize=\"16\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_IGPU_Title}\" />\n                    <TextBlock\n                        Margin=\"0,4,0,0\"\n                        Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_IGPU_Message}\"\n                        TextWrapping=\"Wrap\" />\n                    <TextBlock\n                        Margin=\"0,4,0,24\"\n                        FontWeight=\"Medium\"\n                        Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_IGPU_Disclaimer}\"\n                        TextWrapping=\"Wrap\" />\n                </StackPanel>\n\n                <StackPanel x:Name=\"_hybridAutoPanel\">\n                    <TextBlock\n                        FontSize=\"16\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_Auto_Title}\" />\n                    <TextBlock\n                        Margin=\"0,4,0,24\"\n                        Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_Auto_Message}\"\n                        TextWrapping=\"Wrap\" />\n                </StackPanel>\n\n                <StackPanel x:Name=\"_dgpuPanel\">\n                    <TextBlock\n                        FontSize=\"16\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_DGPU_Title}\" />\n                    <TextBlock\n                        Margin=\"0,4,0,0\"\n                        Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_DGPU_Message}\"\n                        TextWrapping=\"Wrap\" />\n                    <TextBlock\n                        Margin=\"0,4,0,24\"\n                        FontWeight=\"Medium\"\n                        Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                        Text=\"{x:Static resources:Resource.ExtendedHybridModeInfoWindow_DGPU_Disclaimer}\"\n                        TextWrapping=\"Wrap\" />\n                </StackPanel>\n\n            </StackPanel>\n        </ScrollViewer>\n\n        <StackPanel Grid.Row=\"2\" Margin=\"16,16,16,16\">\n            <wpfui:Button\n                MinWidth=\"120\"\n                HorizontalAlignment=\"Center\"\n                Appearance=\"Primary\"\n                Click=\"CloseButton_Click\"\n                Content=\"{x:Static resources:Resource.Close}\" />\n        </StackPanel>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/ExtendedHybridModeInfoWindow.xaml.cs",
    "content": "﻿using System.Linq;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Dashboard;\n\npublic partial class ExtendedHybridModeInfoWindow\n{\n    public ExtendedHybridModeInfoWindow(HybridModeState[] hybridModeStates)\n    {\n        InitializeComponent();\n\n        _hybridPanel.Visibility = hybridModeStates.Contains(HybridModeState.On)\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n        _hybridIgpuPanel.Visibility = hybridModeStates.Contains(HybridModeState.OnIGPUOnly)\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n        _hybridAutoPanel.Visibility = hybridModeStates.Contains(HybridModeState.OnAuto)\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n        _dgpuPanel.Visibility = hybridModeStates.Contains(HybridModeState.Off)\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n    }\n\n    private void CloseButton_Click(object sender, RoutedEventArgs e) => Close();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/GodModeSettingsWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Dashboard.GodModeSettingsWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:godMode=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Dashboard.GodMode\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.GodModeSettingsWindow_Title}\"\n    Width=\"800\"\n    Height=\"700\"\n    MinWidth=\"800\"\n    MinHeight=\"500\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.GodModeSettingsWindow_Title}\" />\n\n        </Grid>\n\n        <controls:LoadableControl\n            x:Name=\"_loader\"\n            Grid.Row=\"1\"\n            Margin=\"12,0,0,0\"\n            IndicatorVerticalAlignment=\"Center\">\n            <wpfui:DynamicScrollViewer>\n                <StackPanel Margin=\"0,0,16,0\">\n\n                    <custom:InfoBar\n                        x:Name=\"_vantageRunningWarningInfoBar\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_VantageWarning_Title}\"\n                        Margin=\"0,16,0,0\"\n                        IsClosable=\"False\"\n                        IsOpen=\"False\"\n                        Severity=\"Error\" />\n\n                    <custom:InfoBar\n                        x:Name=\"_legionZoneRunningWarningInfoBar\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_LegionZoneWarning_Title}\"\n                        Margin=\"0,16,0,0\"\n                        IsClosable=\"False\"\n                        IsOpen=\"False\"\n                        Severity=\"Error\" />\n\n                    <TextBlock\n                        Margin=\"0,16,0,24\"\n                        Focusable=\"True\"\n                        FontSize=\"24\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.GodModeSettingsWindow_ActivePreset_Title}\" />\n\n                    <Grid Margin=\"0,0,0,16\">\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                        </Grid.ColumnDefinitions>\n\n                        <ComboBox\n                            x:Name=\"_presetsComboBox\"\n                            Grid.Column=\"0\"\n                            SelectionChanged=\"PresetsComboBox_SelectionChanged\" />\n\n                        <wpfui:Button\n                            Grid.Column=\"1\"\n                            Margin=\"8,0,0,0\"\n                            VerticalAlignment=\"Stretch\"\n                            Click=\"EditPresetsButton_Click\"\n                            Icon=\"Edit24\"\n                            ToolTip=\"{x:Static resources:Resource.Edit}\" />\n                        <wpfui:Button\n                            x:Name=\"_deletePresetsButton\"\n                            Grid.Column=\"2\"\n                            Margin=\"8,0,0,0\"\n                            VerticalAlignment=\"Stretch\"\n                            Click=\"DeletePresetsButton_Click\"\n                            Icon=\"Dismiss24\"\n                            ToolTip=\"{x:Static resources:Resource.Delete}\" />\n                        <wpfui:Button\n                            x:Name=\"_addPresetsButton\"\n                            Grid.Column=\"3\"\n                            Margin=\"8,0,0,0\"\n                            VerticalAlignment=\"Stretch\"\n                            Appearance=\"Primary\"\n                            Click=\"AddPresetsButton_Click\"\n                            Content=\"{x:Static resources:Resource.Add}\"\n                            Icon=\"Add24\" />\n                    </Grid>\n\n                    <TextBlock\n                        x:Name=\"_cpuSectionTitle\"\n                        Margin=\"0,16,0,24\"\n                        Focusable=\"True\"\n                        FontSize=\"24\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_Title}\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_cpuLongTermPowerLimitControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_LongTermPL}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_LongTermPL_Description}\"\n                        Unit=\"W\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_cpuShortTermPowerLimitControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_ShortTermPL}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_ShortTermPL_Description}\"\n                        Unit=\"W\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_cpuPeakPowerLimitControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_PeakPL}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_PeakPL_Description}\"\n                        Unit=\"W\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_cpuCrossLoadingLimitControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_CrossLoading}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_CrossLoading_Description}\"\n                        Unit=\"W\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_cpuPL1TauControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_PL1Tau}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_PL1Tau_Description}\"\n                        Unit=\"s\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_apuSPPTPowerLimitControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_APUsPPT_PL}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_APUsPPT_PL_Description}\"\n                        Unit=\"W\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_cpuTemperatureLimitControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_TempLimit}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_CPU_TempLimit_Description}\"\n                        Unit=\"°C\" />\n\n                    <TextBlock\n                        x:Name=\"_gpuSectionTitle\"\n                        Margin=\"0,16,0,24\"\n                        Focusable=\"True\"\n                        FontSize=\"24\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_Title}\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_gpuPowerBoostControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_DynamicBoost}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_DynamicBoost_Description}\"\n                        Unit=\"W\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_gpuConfigurableTGPControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_CTGP}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_CTGP_Description}\"\n                        Unit=\"W\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_gpuTemperatureLimitControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_TempLimit}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_TempLimit_Description}\"\n                        Unit=\"°C\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_gpuTotalProcessingPowerTargetOnAcOffsetFromBaselineControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_TotalProcessingPowerTargetOnAcOffsetFromBaselineControl_Description}\"\n                        Unit=\"W\" />\n\n                    <godMode:GodModeValueControl\n                        x:Name=\"_gpuToCpuDynamicBoostControl\"\n                        Title=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl}\"\n                        Margin=\"0,0,0,8\"\n                        Description=\"{x:Static resources:Resource.GodModeSettingsWindow_GPU_ToCpuDynamicBoostControl_Description}\"\n                        Unit=\"W\" />\n\n                    <TextBlock\n                        x:Name=\"_fanSectionTitle\"\n                        Margin=\"0,16,0,24\"\n                        Focusable=\"True\"\n                        FontSize=\"24\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.GodModeSettingsWindow_Fans_Title}\" />\n\n                    <custom:CardControl\n                        x:Name=\"_fanCurveCardControl\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.GodModeSettingsWindow_Fans_Curve_Title}\">\n                        <custom:CardControl.Header>\n                            <StackPanel>\n                                <controls:CardHeaderControl Title=\"{x:Static resources:Resource.GodModeSettingsWindow_Fans_Curve_Title}\" Subtitle=\"{x:Static resources:Resource.GodModeSettingsWindow_Fans_Curve_Message}\" />\n                                <controls:FanCurveControl\n                                    x:Name=\"_fanCurveControl\"\n                                    MaxWidth=\"700\"\n                                    Margin=\"0,32,0,0\" />\n                                <wpfui:Button\n                                    MinWidth=\"120\"\n                                    HorizontalAlignment=\"Right\"\n                                    Click=\"DefaultFanCurve_Click\"\n                                    Content=\"{x:Static resources:Resource.Default}\"\n                                    Icon=\"ArrowClockwise24\" />\n                            </StackPanel>\n                        </custom:CardControl.Header>\n                    </custom:CardControl>\n\n                    <custom:CardControl x:Name=\"_fanFullSpeedCardControl\" Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resources:Resource.GodModeSettingsWindow_Fans_Max_Title}\" Subtitle=\"{x:Static resources:Resource.GodModeSettingsWindow_Fans_Max_Message}\" />\n                        </custom:CardControl.Header>\n                        <wpfui:ToggleSwitch\n                            x:Name=\"_fanFullSpeedToggle\"\n                            Margin=\"0,0,0,8\"\n                            AutomationProperties.Name=\"{x:Static resources:Resource.GodModeSettingsWindow_Fans_Max_Title}\"\n                            Click=\"FanFullSpeedToggle_Click\" />\n                    </custom:CardControl>\n\n                    <TextBlock\n                        x:Name=\"_advancedSectionTitle\"\n                        Margin=\"0,16,0,8\"\n                        Focusable=\"True\"\n                        FontSize=\"24\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.GodModeSettingsWindow_Advanced_Title}\" />\n\n                    <TextBlock\n                        x:Name=\"_advancedSectionMessage\"\n                        Margin=\"0,0,0,24\"\n                        Focusable=\"True\"\n                        FontSize=\"12\"\n                        Text=\"{x:Static resources:Resource.GodModeSettingsWindow_Advanced_Message}\" />\n\n                    <custom:CardControl x:Name=\"_maxValueOffsetCardControl\" Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resources:Resource.GodModeSettingsWindow_Advanced_MaxOffset_Title}\" Subtitle=\"{x:Static resources:Resource.GodModeSettingsWindow_Advanced_MaxOffset_Message}\" />\n                        </custom:CardControl.Header>\n                        <wpfui:NumberBox\n                            x:Name=\"_maxValueOffsetNumberBox\"\n                            Width=\"120\"\n                            Margin=\"32,0,0,0\"\n                            AutomationProperties.Name=\"{x:Static resources:Resource.GodModeSettingsWindow_Advanced_MaxOffset_Title}\"\n                            ClearButtonEnabled=\"False\"\n                            MaxDecimalPlaces=\"0\"\n                            Maximum=\"100\"\n                            Minimum=\"0\" />\n                    </custom:CardControl>\n\n                    <custom:CardControl x:Name=\"_minValueOffsetCardControl\" Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resources:Resource.GodModeSettingsWindow_Advanced_MinOffset_Title}\" Subtitle=\"{x:Static resources:Resource.GodModeSettingsWindow_Advanced_MinOffset_Message}\" />\n                        </custom:CardControl.Header>\n                        <wpfui:NumberBox\n                            x:Name=\"_minValueOffsetNumberBox\"\n                            Width=\"120\"\n                            Margin=\"32,0,0,0\"\n                            AutomationProperties.Name=\"{x:Static resources:Resource.GodModeSettingsWindow_Advanced_MinOffset_Title}\"\n                            ClearButtonEnabled=\"False\"\n                            MaxDecimalPlaces=\"0\"\n                            Maximum=\"0\"\n                            Minimum=\"-100\" />\n                    </custom:CardControl>\n\n                </StackPanel>\n            </wpfui:DynamicScrollViewer>\n        </controls:LoadableControl>\n\n        <Grid\n            x:Name=\"_buttonsStackPanel\"\n            Grid.Row=\"2\"\n            Margin=\"12\"\n            Visibility=\"Collapsed\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:Button\n                x:Name=\"_loadButton\"\n                Grid.Column=\"0\"\n                MinWidth=\"120\"\n                Click=\"LoadButton_Click\"\n                Content=\"{x:Static resources:Resource.Load}\"\n                Icon=\"ChevronDown24\" />\n\n            <wpfui:Button\n                Grid.Column=\"2\"\n                MinWidth=\"120\"\n                Click=\"SaveButton_Click\"\n                Content=\"{x:Static resources:Resource.Save}\" />\n            <wpfui:Button\n                Grid.Column=\"3\"\n                MinWidth=\"120\"\n                Margin=\"12,0,0,0\"\n                Appearance=\"Primary\"\n                Click=\"SaveAndCloseButton_Click\"\n                Content=\"{x:Static resources:Resource.SaveAndClose}\" />\n        </Grid>\n\n        <wpfui:Snackbar\n            x:Name=\"_snackBar\"\n            Grid.Row=\"1\"\n            HorizontalAlignment=\"Center\"\n            CloseButtonEnabled=\"True\"\n            Icon=\"ErrorCircle24\"\n            Timeout=\"5000\" />\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/GodModeSettingsWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Controls.Primitives;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers.GodMode;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Dashboard;\n\npublic partial class GodModeSettingsWindow\n{\n    private readonly PowerModeFeature _powerModeFeature = IoCContainer.Resolve<PowerModeFeature>();\n    private readonly GodModeController _godModeController = IoCContainer.Resolve<GodModeController>();\n\n    private readonly VantageDisabler _vantageDisabler = IoCContainer.Resolve<VantageDisabler>();\n    private readonly LegionZoneDisabler _legionZoneDisabler = IoCContainer.Resolve<LegionZoneDisabler>();\n\n    private GodModeState? _state;\n    private Dictionary<PowerModeState, GodModeDefaults>? _defaults;\n    private bool _isRefreshing;\n\n    public GodModeSettingsWindow()\n    {\n        InitializeComponent();\n\n        IsVisibleChanged += GodModeSettingsWindow_IsVisibleChanged;\n    }\n\n    private async void GodModeSettingsWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private async Task RefreshAsync()\n    {\n        _isRefreshing = true;\n\n        try\n        {\n            _loader.IsLoading = true;\n            _buttonsStackPanel.Visibility = Visibility.Hidden;\n\n            var loadingTask = Task.Delay(TimeSpan.FromMilliseconds(500));\n\n            _vantageRunningWarningInfoBar.IsOpen = await _godModeController.NeedsVantageDisabledAsync() && await _vantageDisabler.GetStatusAsync() == SoftwareStatus.Enabled;\n            _legionZoneRunningWarningInfoBar.IsOpen = await _godModeController.NeedsLegionZoneDisabledAsync() && await _legionZoneDisabler.GetStatusAsync() == SoftwareStatus.Enabled;\n\n            _state = await _godModeController.GetStateAsync();\n            _defaults = await _godModeController.GetDefaultsInOtherPowerModesAsync();\n\n            if (_state is null)\n                throw new InvalidOperationException($\"{nameof(_state)} is null\");\n\n            if (_defaults is null)\n                throw new InvalidOperationException($\"{nameof(_defaults)} are null\");\n\n            await SetStateAsync(_state.Value);\n\n            await loadingTask;\n\n            _loadButton.Visibility = _defaults.Count != 0 ? Visibility.Visible : Visibility.Collapsed;\n            _buttonsStackPanel.Visibility = Visibility.Visible;\n            _loader.IsLoading = false;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't load settings.\", ex);\n\n            await _snackBar.ShowAsync(Resource.GodModeSettingsWindow_Error_Load_Title, ex.Message);\n\n            Close();\n        }\n        finally\n        {\n            _isRefreshing = false;\n        }\n    }\n\n    private async Task<bool> ApplyAsync()\n    {\n        try\n        {\n            if (!_state.HasValue)\n                throw new InvalidOperationException(\"State is null\");\n\n            var activePresetId = _state.Value.ActivePresetId;\n            var presets = _state.Value.Presets;\n            var preset = presets[activePresetId];\n\n            var newPreset = new GodModePreset\n            {\n                Name = preset.Name,\n                CPULongTermPowerLimit = preset.CPULongTermPowerLimit?.WithValue(_cpuLongTermPowerLimitControl.Value),\n                CPUShortTermPowerLimit = preset.CPUShortTermPowerLimit?.WithValue(_cpuShortTermPowerLimitControl.Value),\n                CPUPeakPowerLimit = preset.CPUPeakPowerLimit?.WithValue(_cpuPeakPowerLimitControl.Value),\n                CPUCrossLoadingPowerLimit = preset.CPUCrossLoadingPowerLimit?.WithValue(_cpuCrossLoadingLimitControl.Value),\n                CPUPL1Tau = preset.CPUPL1Tau?.WithValue(_cpuPL1TauControl.Value),\n                APUsPPTPowerLimit = preset.APUsPPTPowerLimit?.WithValue(_apuSPPTPowerLimitControl.Value),\n                CPUTemperatureLimit = preset.CPUTemperatureLimit?.WithValue(_cpuTemperatureLimitControl.Value),\n                GPUPowerBoost = preset.GPUPowerBoost?.WithValue(_gpuPowerBoostControl.Value),\n                GPUConfigurableTGP = preset.GPUConfigurableTGP?.WithValue(_gpuConfigurableTGPControl.Value),\n                GPUTemperatureLimit = preset.GPUTemperatureLimit?.WithValue(_gpuTemperatureLimitControl.Value),\n                GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline = preset.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline?.WithValue(_gpuTotalProcessingPowerTargetOnAcOffsetFromBaselineControl.Value),\n                GPUToCPUDynamicBoost = preset.GPUToCPUDynamicBoost?.WithValue(_gpuToCpuDynamicBoostControl.Value),\n                FanTableInfo = preset.FanTableInfo is not null ? _fanCurveControl.GetFanTableInfo() : null,\n                FanFullSpeed = preset.FanFullSpeed is not null ? _fanFullSpeedToggle.IsChecked : null,\n                MaxValueOffset = preset.MaxValueOffset is not null ? (int?)_maxValueOffsetNumberBox.Value : null,\n                MinValueOffset = preset.MinValueOffset is not null ? (int?)_minValueOffsetNumberBox.Value : null\n            };\n\n            var newPresets = new Dictionary<Guid, GodModePreset>(presets)\n            {\n                [activePresetId] = newPreset\n            };\n\n            var newState = new GodModeState\n            {\n                ActivePresetId = activePresetId,\n                Presets = newPresets.AsReadOnlyDictionary(),\n            };\n\n            if (await _powerModeFeature.GetStateAsync() != PowerModeState.GodMode)\n                await _powerModeFeature.SetStateAsync(PowerModeState.GodMode);\n\n            await _godModeController.SetStateAsync(newState);\n            await _godModeController.ApplyStateAsync();\n\n            return true;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't apply settings\", ex);\n\n            await _snackBar.ShowAsync(Resource.GodModeSettingsWindow_Error_Apply_Title, ex.Message);\n\n            return false;\n        }\n    }\n\n    private async Task SetStateAsync(GodModeState state)\n    {\n        _cpuLongTermPowerLimitControl.ValueChanged -= CpuLongTermPowerLimitSlider_ValueChanged;\n        _cpuShortTermPowerLimitControl.ValueChanged -= CpuShortTermPowerLimitSlider_ValueChanged;\n\n        var activePresetId = state.ActivePresetId;\n        var preset = state.Presets[activePresetId];\n\n        _presetsComboBox.SetItems(state.Presets.OrderBy(kv => kv.Value.Name), new(activePresetId, preset), kv => kv.Value.Name);\n\n        _deletePresetsButton.IsEnabled = state.Presets.Count > 1;\n\n        _cpuLongTermPowerLimitControl.Set(preset.CPULongTermPowerLimit);\n        _cpuShortTermPowerLimitControl.Set(preset.CPUShortTermPowerLimit);\n        _cpuPeakPowerLimitControl.Set(preset.CPUPeakPowerLimit);\n        _cpuCrossLoadingLimitControl.Set(preset.CPUCrossLoadingPowerLimit);\n        _cpuPL1TauControl.Set(preset.CPUPL1Tau);\n        _apuSPPTPowerLimitControl.Set(preset.APUsPPTPowerLimit);\n        _cpuTemperatureLimitControl.Set(preset.CPUTemperatureLimit);\n        _gpuPowerBoostControl.Set(preset.GPUPowerBoost);\n        _gpuConfigurableTGPControl.Set(preset.GPUConfigurableTGP);\n        _gpuTemperatureLimitControl.Set(preset.GPUTemperatureLimit);\n        _gpuTotalProcessingPowerTargetOnAcOffsetFromBaselineControl.Set(preset.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline);\n        _gpuToCpuDynamicBoostControl.Set(preset.GPUToCPUDynamicBoost);\n\n        var fanTableInfo = preset.FanTableInfo;\n        if (fanTableInfo.HasValue)\n        {\n            var minimum = await _godModeController.GetMinimumFanTableAsync();\n            _fanCurveControl.SetFanTableInfo(fanTableInfo.Value, minimum);\n        }\n        else\n        {\n            _fanCurveCardControl.Visibility = Visibility.Collapsed;\n        }\n\n        var fanFullSpeed = preset.FanFullSpeed;\n        if (fanFullSpeed.HasValue)\n        {\n            _fanCurveCardControl.IsEnabled = !fanFullSpeed.Value;\n            _fanFullSpeedToggle.IsChecked = fanFullSpeed.Value;\n        }\n        else\n        {\n            _fanCurveCardControl.IsEnabled = true;\n            _fanFullSpeedCardControl.Visibility = Visibility.Collapsed;\n        }\n\n        var maxValueOffset = preset.MaxValueOffset;\n        if (maxValueOffset.HasValue)\n            _maxValueOffsetNumberBox.Value = maxValueOffset;\n        else\n            _maxValueOffsetCardControl.Visibility = Visibility.Collapsed;\n\n        var minValueOffset = preset.MinValueOffset;\n        if (minValueOffset.HasValue)\n            _minValueOffsetNumberBox.Value = minValueOffset;\n        else\n            _minValueOffsetCardControl.Visibility = Visibility.Collapsed;\n\n        var cpuSectionVisible = new[]\n        {\n            _cpuLongTermPowerLimitControl,\n            _cpuShortTermPowerLimitControl,\n            _cpuPeakPowerLimitControl,\n            _cpuCrossLoadingLimitControl,\n            _cpuPL1TauControl,\n            _apuSPPTPowerLimitControl,\n            _cpuTemperatureLimitControl\n        }.Any(v => v.Visibility == Visibility.Visible);\n\n        var gpuSectionVisible = new[]\n        {\n            _gpuPowerBoostControl,\n            _gpuConfigurableTGPControl,\n            _gpuTemperatureLimitControl,\n            _gpuTotalProcessingPowerTargetOnAcOffsetFromBaselineControl,\n            _gpuToCpuDynamicBoostControl\n        }.Any(v => v.Visibility == Visibility.Visible);\n\n        var fanSectionVisible = new[]\n        {\n            _fanCurveCardControl,\n            _fanFullSpeedCardControl\n        }.Any(v => v.Visibility == Visibility.Visible);\n\n        var advancedSectionVisible = new[]\n        {\n            _maxValueOffsetCardControl,\n            _minValueOffsetCardControl\n        }.Any(v => v.Visibility == Visibility.Visible);\n\n        _cpuSectionTitle.Visibility = cpuSectionVisible ? Visibility.Visible : Visibility.Collapsed;\n        _gpuSectionTitle.Visibility = gpuSectionVisible ? Visibility.Visible : Visibility.Collapsed;\n        _fanSectionTitle.Visibility = fanSectionVisible ? Visibility.Visible : Visibility.Collapsed;\n        _advancedSectionTitle.Visibility = advancedSectionVisible ? Visibility.Visible : Visibility.Collapsed;\n        _advancedSectionMessage.Visibility = advancedSectionVisible ? Visibility.Visible : Visibility.Collapsed;\n\n        _cpuLongTermPowerLimitControl.ValueChanged += CpuLongTermPowerLimitSlider_ValueChanged;\n        _cpuShortTermPowerLimitControl.ValueChanged += CpuShortTermPowerLimitSlider_ValueChanged;\n    }\n\n    private async void SetDefaults(GodModeDefaults defaults)\n    {\n        if (_cpuLongTermPowerLimitControl.Visibility == Visibility.Visible && defaults.CPULongTermPowerLimit is { } cpuLongTermPowerLimit)\n            _cpuLongTermPowerLimitControl.Value = cpuLongTermPowerLimit;\n\n        if (_cpuShortTermPowerLimitControl.Visibility == Visibility.Visible && defaults.CPUShortTermPowerLimit is { } cpuShortTermPowerLimit)\n            _cpuShortTermPowerLimitControl.Value = cpuShortTermPowerLimit;\n\n        if (_cpuPeakPowerLimitControl.Visibility == Visibility.Visible && defaults.CPUPeakPowerLimit is { } cpuPeakPowerLimit)\n            _cpuPeakPowerLimitControl.Value = cpuPeakPowerLimit;\n\n        if (_cpuCrossLoadingLimitControl.Visibility == Visibility.Visible && defaults.CPUCrossLoadingPowerLimit is { } cpuCrossLoadingPowerLimit)\n            _cpuCrossLoadingLimitControl.Value = cpuCrossLoadingPowerLimit;\n\n        if (_cpuPL1TauControl.Visibility == Visibility.Visible && defaults.CPUPL1Tau is { } cpuPL1Tau)\n            _cpuPL1TauControl.Value = cpuPL1Tau;\n\n        if (_apuSPPTPowerLimitControl.Visibility == Visibility.Visible && defaults.APUsPPTPowerLimit is { } apuSPPTPowerLimit)\n            _apuSPPTPowerLimitControl.Value = apuSPPTPowerLimit;\n\n        if (_cpuTemperatureLimitControl.Visibility == Visibility.Visible && defaults.CPUTemperatureLimit is { } cpuTemperatureLimit)\n            _cpuTemperatureLimitControl.Value = cpuTemperatureLimit;\n\n        if (_gpuPowerBoostControl.Visibility == Visibility.Visible && defaults.GPUPowerBoost is { } gpuPowerBoost)\n            _gpuPowerBoostControl.Value = gpuPowerBoost;\n\n        if (_gpuConfigurableTGPControl.Visibility == Visibility.Visible && defaults.GPUConfigurableTGP is { } gpuConfigurableTgp)\n            _gpuConfigurableTGPControl.Value = gpuConfigurableTgp;\n\n        if (_gpuTemperatureLimitControl.Visibility == Visibility.Visible && defaults.GPUTemperatureLimit is { } gpuTemperatureLimit)\n            _gpuTemperatureLimitControl.Value = gpuTemperatureLimit;\n\n        if (_gpuTotalProcessingPowerTargetOnAcOffsetFromBaselineControl.Visibility == Visibility.Visible && defaults.GPUTotalProcessingPowerTargetOnAcOffsetFromBaseline is { } gpuTotalProcessingPowerTargetOnAcOffsetFromBaseline)\n            _gpuTotalProcessingPowerTargetOnAcOffsetFromBaselineControl.Value = gpuTotalProcessingPowerTargetOnAcOffsetFromBaseline;\n\n        if (_gpuToCpuDynamicBoostControl.Visibility == Visibility.Visible && defaults.GPUToCPUDynamicBoost is { } gpuToCPUDynamicBoost)\n            _gpuToCpuDynamicBoostControl.Value = gpuToCPUDynamicBoost;\n\n        if (_fanCurveCardControl.Visibility == Visibility.Visible && defaults.FanTable is { } fanTable)\n        {\n            var state = await _godModeController.GetStateAsync();\n            var preset = state.Presets[state.ActivePresetId];\n            var data = preset.FanTableInfo?.Data;\n\n            if (data is not null)\n            {\n                var defaultFanTableInfo = new FanTableInfo(data, fanTable);\n                var minimum = await _godModeController.GetMinimumFanTableAsync();\n                _fanCurveControl.SetFanTableInfo(defaultFanTableInfo, minimum);\n            }\n        }\n\n        if (_fanFullSpeedCardControl.Visibility == Visibility.Visible && defaults.FanFullSpeed is { } fanFullSpeed)\n            _fanFullSpeedToggle.IsChecked = fanFullSpeed;\n\n        if (_maxValueOffsetCardControl.Visibility == Visibility.Visible)\n            _maxValueOffsetNumberBox.Text = \"0\";\n\n        if (_minValueOffsetCardControl.Visibility == Visibility.Visible)\n            _minValueOffsetNumberBox.Text = \"0\";\n    }\n\n    private async void PresetsComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (!_state.HasValue)\n            return;\n\n        if (!_presetsComboBox.TryGetSelectedItem<KeyValuePair<Guid, GodModePreset>>(out var item))\n            return;\n\n        if (_state.Value.ActivePresetId == item.Key)\n            return;\n\n        _state = _state.Value with { ActivePresetId = item.Key };\n        await SetStateAsync(_state.Value);\n    }\n\n    private async void EditPresetsButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (!_state.HasValue)\n            return;\n\n        var activePresetId = _state.Value.ActivePresetId;\n        var presets = _state.Value.Presets;\n        var preset = presets[activePresetId];\n\n        var result = await MessageBoxHelper.ShowInputAsync(this, Resource.GodModeSettingsWindow_EditPreset_Title, Resource.GodModeSettingsWindow_EditPreset_Message, preset.Name);\n        if (string.IsNullOrEmpty(result))\n            return;\n\n        var newPresets = new Dictionary<Guid, GodModePreset>(presets)\n        {\n            [activePresetId] = preset with { Name = result }\n        };\n        _state = _state.Value with { Presets = newPresets.AsReadOnlyDictionary() };\n        await SetStateAsync(_state.Value);\n    }\n\n    private async void DeletePresetsButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (!_state.HasValue)\n            return;\n\n        if (_state.Value.Presets.Count <= 1)\n            return;\n\n        var activePresetId = _state.Value.ActivePresetId;\n        var presets = _state.Value.Presets;\n\n        var newPresets = new Dictionary<Guid, GodModePreset>(presets);\n        newPresets.Remove(activePresetId);\n        var newActivePresetId = newPresets.OrderBy(kv => kv.Value.Name)\n            .Select(kv => kv.Key)\n            .First();\n\n        _state = new()\n        {\n            ActivePresetId = newActivePresetId,\n            Presets = newPresets.AsReadOnlyDictionary()\n        };\n        await SetStateAsync(_state.Value);\n    }\n\n    private async void AddPresetsButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (!_state.HasValue)\n            return;\n\n        var result = await MessageBoxHelper.ShowInputAsync(this, Resource.GodModeSettingsWindow_EditPreset_Title, Resource.GodModeSettingsWindow_EditPreset_Message);\n        if (string.IsNullOrEmpty(result))\n            return;\n\n        var activePresetId = _state.Value.ActivePresetId;\n        var presets = _state.Value.Presets;\n        var preset = presets[activePresetId];\n\n        var newActivePresetId = Guid.NewGuid();\n        var newPreset = preset with { Name = result };\n        var newPresets = new Dictionary<Guid, GodModePreset>(presets)\n        {\n            [newActivePresetId] = newPreset\n        };\n\n        _state = new()\n        {\n            ActivePresetId = newActivePresetId,\n            Presets = newPresets.AsReadOnlyDictionary()\n        };\n\n        await SetStateAsync(_state.Value);\n    }\n\n    private async void DefaultFanCurve_Click(object sender, RoutedEventArgs e)\n    {\n        var state = await _godModeController.GetStateAsync();\n        var preset = state.Presets[state.ActivePresetId];\n        var data = preset.FanTableInfo?.Data;\n\n        if (data is null)\n            return;\n\n        var defaultFanTable = await _godModeController.GetDefaultFanTableAsync();\n        var defaultFanTableInfo = new FanTableInfo(data, defaultFanTable);\n        var minimum = await _godModeController.GetMinimumFanTableAsync();\n        _fanCurveControl.SetFanTableInfo(defaultFanTableInfo, minimum);\n    }\n\n    private void LoadButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (_defaults is null || _defaults.IsEmpty())\n        {\n            _loadButton.Visibility = Visibility.Collapsed;\n            return;\n        }\n\n        var menuItems = _defaults\n            .OrderBy(d => d.Key)\n            .Select(d =>\n            {\n                var menuItem = new MenuItem { Header = d.Key.GetDisplayName() };\n                menuItem.Click += (_, _) => SetDefaults(d.Value);\n                return menuItem;\n            });\n\n        var contextMenu = new ContextMenu\n        {\n            PlacementTarget = _loadButton,\n            Placement = PlacementMode.Bottom,\n        };\n\n        foreach (var menuItem in menuItems)\n            contextMenu.Items.Add(menuItem);\n\n        _loadButton.ContextMenu = contextMenu;\n        _loadButton.ContextMenu.IsOpen = true;\n    }\n\n    private async void SaveAndCloseButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (await ApplyAsync())\n            Close();\n    }\n\n    private async void SaveButton_Click(object sender, RoutedEventArgs e)\n    {\n        await ApplyAsync();\n        await RefreshAsync();\n    }\n\n    private void CpuLongTermPowerLimitSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (_cpuLongTermPowerLimitControl.Value > _cpuShortTermPowerLimitControl.Value)\n            _cpuShortTermPowerLimitControl.Value = _cpuLongTermPowerLimitControl.Value;\n    }\n\n    private void CpuShortTermPowerLimitSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)\n    {\n        if (_isRefreshing)\n            return;\n\n        if (_cpuLongTermPowerLimitControl.Value > _cpuShortTermPowerLimitControl.Value)\n            _cpuLongTermPowerLimitControl.Value = _cpuShortTermPowerLimitControl.Value;\n    }\n\n    private void FanFullSpeedToggle_Click(object sender, RoutedEventArgs e)\n    {\n        _fanCurveCardControl.IsEnabled = !(_fanFullSpeedToggle.IsChecked ?? false);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/OverclockDiscreteGPUSettingsWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Dashboard.OverclockDiscreteGPUSettingsWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.OverclockDiscreteGPUSettingsWindow_Title}\"\n    MinWidth=\"500\"\n    MinHeight=\"275\"\n    MaxWidth=\"500\"\n    MaxHeight=\"275\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"NoResize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.OverclockDiscreteGPUSettingsWindow_Title}\" />\n        </Grid>\n\n        <Grid Grid.Row=\"1\" Margin=\"16,16,16,16\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <Grid Grid.Row=\"0\">\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"75\" />\n                </Grid.ColumnDefinitions>\n\n                <TextBlock\n                    Grid.Row=\"0\"\n                    Grid.Column=\"0\"\n                    Grid.ColumnSpan=\"3\"\n                    Text=\"{x:Static resources:Resource.OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title}\" />\n                <Slider\n                    x:Name=\"_coreSlider\"\n                    Grid.Row=\"1\"\n                    Grid.Column=\"0\"\n                    Grid.ColumnSpan=\"2\"\n                    Margin=\"0,16,8,0\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.OverclockDiscreteGPUSettingsWindow_CoreFrequencyOffset_Title}\"\n                    IsSnapToTickEnabled=\"True\"\n                    Minimum=\"0\"\n                    TickFrequency=\"1\"\n                    ValueChanged=\"CoreSlider_OnValueChanged\" />\n                <Label\n                    x:Name=\"_coreLabel\"\n                    Grid.Row=\"1\"\n                    Grid.Column=\"2\"\n                    Margin=\"0,16,0,0\"\n                    HorizontalContentAlignment=\"Right\" />\n\n                <TextBlock\n                    Grid.Row=\"2\"\n                    Grid.Column=\"0\"\n                    Grid.ColumnSpan=\"3\"\n                    Margin=\"0,16,0,0\"\n                    Text=\"{x:Static resources:Resource.OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title}\" />\n                <Slider\n                    x:Name=\"_memorySlider\"\n                    Grid.Row=\"3\"\n                    Grid.Column=\"0\"\n                    Grid.ColumnSpan=\"2\"\n                    Margin=\"0,16,8,0\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.OverclockDiscreteGPUSettingsWindow_MemoryFrequencyOffset_Title}\"\n                    IsSnapToTickEnabled=\"True\"\n                    Minimum=\"0\"\n                    TickFrequency=\"1\"\n                    ValueChanged=\"MemorySlider_OnValueChanged\" />\n                <Label\n                    x:Name=\"_memoryLabel\"\n                    Grid.Row=\"3\"\n                    Grid.Column=\"2\"\n                    Margin=\"0,16,0,0\"\n                    HorizontalContentAlignment=\"Right\" />\n            </Grid>\n\n            <Grid\n                x:Name=\"_applyCloseGrid\"\n                Grid.Row=\"1\"\n                Margin=\"0,8,0,0\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <wpfui:Button\n                    Grid.Column=\"1\"\n                    MinWidth=\"100\"\n                    Click=\"ApplyButton_Click\"\n                    Content=\"{x:Static resources:Resource.Apply}\" />\n\n                <wpfui:Button\n                    Grid.Column=\"2\"\n                    MinWidth=\"100\"\n                    Margin=\"8,0,0,0\"\n                    Appearance=\"Primary\"\n                    Click=\"ApplyAndCloseButton_Click\"\n                    Content=\"{x:Static resources:Resource.ApplyAndClose}\" />\n            </Grid>\n\n            <Grid\n                x:Name=\"_saveGrid\"\n                Grid.Row=\"1\"\n                Margin=\"0,8,0,0\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"*\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <wpfui:Button\n                    Grid.Column=\"1\"\n                    MinWidth=\"100\"\n                    Appearance=\"Primary\"\n                    Click=\"SaveButton_Click\"\n                    Content=\"{x:Static resources:Resource.Save}\" />\n            </Grid>\n        </Grid>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Dashboard/OverclockDiscreteGPUSettingsWindow.xaml.cs",
    "content": "﻿using System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Dashboard;\n\npublic partial class OverclockDiscreteGPUSettingsWindow\n{\n    private const string MHZ = \"MHz\";\n\n    private readonly GPUOverclockController _gpuOverclockController = IoCContainer.Resolve<GPUOverclockController>();\n\n    public OverclockDiscreteGPUSettingsWindow()\n    {\n        InitializeComponent();\n\n        var (enabled, info) = _gpuOverclockController.GetState();\n\n        _applyCloseGrid.Visibility = enabled ? Visibility.Visible : Visibility.Collapsed;\n        _saveGrid.Visibility = enabled ? Visibility.Collapsed : Visibility.Visible;\n\n        _coreSlider.Maximum = GPUOverclockController.GetMaxCoreDeltaMhz();\n        _coreSlider.Value = info.CoreDeltaMhz;\n        _memorySlider.Maximum = GPUOverclockController.GetMaxMemoryDeltaMhz();\n        _memorySlider.Value = info.MemoryDeltaMhz;\n\n        _coreLabel.Content = $\"{(int)_coreSlider.Value:+0;-0;0} {MHZ}\";\n        _memoryLabel.Content = $\"{(int)_memorySlider.Value:+0;-0;0} {MHZ}\";\n    }\n\n    private void CoreSlider_OnValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) => _coreLabel.Content = $\"{(int)_coreSlider.Value:+0;-0;0} {MHZ}\";\n\n    private void MemorySlider_OnValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e) => _memoryLabel.Content = $\"{(int)_memorySlider.Value:+0;-0;0} {MHZ}\";\n\n    private async void ApplyButton_Click(object sender, RoutedEventArgs e)\n    {\n        Save();\n        await ApplyAsync();\n    }\n\n    private async void ApplyAndCloseButton_Click(object sender, RoutedEventArgs e)\n    {\n        Save();\n        await ApplyAsync();\n        Close();\n    }\n\n    private void SaveButton_Click(object sender, RoutedEventArgs e)\n    {\n        Save();\n        Close();\n    }\n\n    private void Save()\n    {\n        var (enabled, _) = _gpuOverclockController.GetState();\n        var info = new GPUOverclockInfo((int)_coreSlider.Value, (int)_memorySlider.Value);\n\n        _gpuOverclockController.SaveState(enabled, info);\n    }\n\n    private async Task ApplyAsync() => await _gpuOverclockController.ApplyStateAsync();\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/KeyboardBacklight/Spectrum/SpectrumKeyboardBacklightEditEffectWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.KeyboardBacklight.Spectrum.SpectrumKeyboardBacklightEditEffectWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Title_Edit}\"\n    Width=\"500\"\n    Height=\"500\"\n    MinWidth=\"500\"\n    MinHeight=\"500\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            x:Name=\"_titleBar\"\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                x:Name=\"_title\"\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Title_Edit}\" />\n        </Grid>\n\n        <wpfui:DynamicScrollViewer Grid.Row=\"1\" Margin=\"12,0,0,0\">\n            <StackPanel Margin=\"0,0,16,0\">\n\n                <custom:CardControl x:Name=\"_effectTypeCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl x:Name=\"_effectTypeCardHeader\" Title=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Effect_Title}\" />\n                    </custom:CardControl.Header>\n                    <ComboBox\n                        x:Name=\"_effectTypeComboBox\"\n                        MinWidth=\"160\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Effect_Title}\"\n                        MaxDropDownHeight=\"Auto\"\n                        SelectionChanged=\"EffectsComboBox_SelectionChanged\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_directionCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Direction_Title}\" />\n                    </custom:CardControl.Header>\n                    <ComboBox\n                        x:Name=\"_directionComboBox\"\n                        MinWidth=\"160\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Direction_Title}\"\n                        MaxDropDownHeight=\"Auto\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_clockwiseDirectionCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title}\" />\n                    </custom:CardControl.Header>\n                    <ComboBox\n                        x:Name=\"_clockwiseDirectionComboBox\"\n                        MinWidth=\"160\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_ClockwiseDirection_Title}\"\n                        MaxDropDownHeight=\"Auto\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_speedCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Speed_Title}\" />\n                    </custom:CardControl.Header>\n                    <ComboBox\n                        x:Name=\"_speedComboBox\"\n                        MinWidth=\"160\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Speed_Title}\"\n                        MaxDropDownHeight=\"Auto\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_singleColor\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Color_Title}\" />\n                    </custom:CardControl.Header>\n                    <controls:ColorPickerControl x:Name=\"_singleColorPicker\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_multiColors\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SpectrumKeyboardBacklightEditEffectWindow_Colors_Title}\" />\n                    </custom:CardControl.Header>\n                    <controls:MultiColorPickerControl x:Name=\"_multiColorPicker\" />\n                </custom:CardControl>\n\n            </StackPanel>\n        </wpfui:DynamicScrollViewer>\n\n        <StackPanel\n            Grid.Row=\"2\"\n            Margin=\"12\"\n            HorizontalAlignment=\"Right\"\n            Orientation=\"Horizontal\">\n            <wpfui:Button\n                MinWidth=\"120\"\n                Appearance=\"Primary\"\n                Click=\"Apply_Click\"\n                Content=\"{x:Static resources:Resource.Apply}\" />\n            <wpfui:Button\n                MinWidth=\"120\"\n                Margin=\"8,0,0,0\"\n                Click=\"Cancel_Click\"\n                Content=\"{x:Static resources:Resource.Cancel}\" />\n        </StackPanel>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/KeyboardBacklight/Spectrum/SpectrumKeyboardBacklightEditEffectWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Media;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\n\nnamespace LenovoLegionToolkit.WPF.Windows.KeyboardBacklight.Spectrum;\n\npublic partial class SpectrumKeyboardBacklightEditEffectWindow\n{\n    private readonly ushort[] _keyCodes;\n    private readonly ushort[] _allKeyboardKeyCodes;\n\n    public event EventHandler<SpectrumKeyboardBacklightEffect>? Apply;\n\n    public SpectrumKeyboardBacklightEditEffectWindow(ushort[] keyCodes, ushort[] allKeyboardKeyCodes)\n    {\n        _keyCodes = keyCodes;\n        _allKeyboardKeyCodes = allKeyboardKeyCodes;\n\n        InitializeComponent();\n\n        _title.Text = Resource.SpectrumKeyboardBacklightEditEffectWindow_Title_Add;\n\n        SetInitialValues();\n        RefreshVisibility();\n    }\n\n    public SpectrumKeyboardBacklightEditEffectWindow(SpectrumKeyboardBacklightEffect effect, ushort[] keyCodes, ushort[] allKeyboardKeyCodes)\n    {\n        _keyCodes = effect.Type.IsAllLightsEffect() ? keyCodes : effect.Keys;\n        _allKeyboardKeyCodes = allKeyboardKeyCodes;\n\n        InitializeComponent();\n\n        ResizeMode = ResizeMode.CanMinimize;\n\n        _title.Text = Resource.SpectrumKeyboardBacklightEditEffectWindow_Title_Add;\n\n        _titleBar.UseSnapLayout = false;\n        _titleBar.CanMaximize = false;\n\n        SetInitialValues();\n        Update(effect);\n        RefreshVisibility();\n    }\n\n    private void EffectsComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) => RefreshVisibility();\n\n    private void Apply_Click(object sender, RoutedEventArgs e)\n    {\n        var effectType = SpectrumKeyboardBacklightEffectType.Always;\n        var direction = SpectrumKeyboardBacklightDirection.None;\n        var clockwiseDirection = SpectrumKeyboardBacklightClockwiseDirection.None;\n        var speed = SpectrumKeyboardBacklightSpeed.None;\n        var colors = Array.Empty<RGBColor>();\n\n        if (_effectTypeCard.Visibility == Visibility.Visible &&\n            _effectTypeComboBox.TryGetSelectedItem(out SpectrumKeyboardBacklightEffectType effectTypeTemp))\n            effectType = effectTypeTemp;\n\n        if (_directionCard.Visibility == Visibility.Visible &&\n            _directionComboBox.TryGetSelectedItem(out SpectrumKeyboardBacklightDirection directionTemp))\n            direction = directionTemp;\n\n        if (_clockwiseDirectionCard.Visibility == Visibility.Visible &&\n            _clockwiseDirectionComboBox.TryGetSelectedItem(out SpectrumKeyboardBacklightClockwiseDirection clockwiseDirectionTemp))\n            clockwiseDirection = clockwiseDirectionTemp;\n\n        if (_speedCard.Visibility == Visibility.Visible &&\n            _speedComboBox.TryGetSelectedItem(out SpectrumKeyboardBacklightSpeed speedTemp))\n            speed = speedTemp;\n\n        if (_singleColor.Visibility == Visibility.Visible)\n            colors = [_singleColorPicker.SelectedColor.ToRGBColor()];\n\n        if (_multiColors.Visibility == Visibility.Visible)\n            colors = _multiColorPicker.SelectedColors.Select(c => c.ToRGBColor()).ToArray();\n\n        var keys = _keyCodes;\n\n        if (effectType.IsAllLightsEffect())\n            keys = [];\n        if (effectType.IsWholeKeyboardEffect())\n            keys = _allKeyboardKeyCodes;\n\n        var effect = new SpectrumKeyboardBacklightEffect(effectType,\n            speed,\n            direction,\n            clockwiseDirection,\n            colors,\n            keys);\n\n        Apply?.Invoke(this, effect);\n        Close();\n    }\n\n    private void Cancel_Click(object sender, RoutedEventArgs e) => Close();\n\n    private void SetInitialValues()\n    {\n        _effectTypeComboBox.SetItems(\n            [\n                SpectrumKeyboardBacklightEffectType.Always,\n                SpectrumKeyboardBacklightEffectType.RainbowScrew,\n                SpectrumKeyboardBacklightEffectType.RainbowWave,\n                SpectrumKeyboardBacklightEffectType.ColorChange,\n                SpectrumKeyboardBacklightEffectType.ColorWave,\n                SpectrumKeyboardBacklightEffectType.ColorPulse,\n                SpectrumKeyboardBacklightEffectType.Smooth,\n                SpectrumKeyboardBacklightEffectType.Rain,\n                SpectrumKeyboardBacklightEffectType.Ripple,\n                SpectrumKeyboardBacklightEffectType.Type,\n                SpectrumKeyboardBacklightEffectType.AudioBounce,\n                SpectrumKeyboardBacklightEffectType.AudioRipple,\n                SpectrumKeyboardBacklightEffectType.AuroraSync\n            ],\n            SpectrumKeyboardBacklightEffectType.Always,\n            e => e.GetDisplayName());\n\n        _directionComboBox.SetItems(\n            [\n                SpectrumKeyboardBacklightDirection.BottomToTop,\n                SpectrumKeyboardBacklightDirection.TopToBottom,\n                SpectrumKeyboardBacklightDirection.LeftToRight,\n                SpectrumKeyboardBacklightDirection.RightToLeft\n            ],\n            SpectrumKeyboardBacklightDirection.BottomToTop,\n            e => e.GetDisplayName());\n\n        _clockwiseDirectionComboBox.SetItems(\n            [\n                SpectrumKeyboardBacklightClockwiseDirection.Clockwise,\n                SpectrumKeyboardBacklightClockwiseDirection.CounterClockwise\n            ],\n            SpectrumKeyboardBacklightClockwiseDirection.Clockwise,\n            e => e.GetDisplayName());\n\n        _speedComboBox.SetItems(\n            [\n                SpectrumKeyboardBacklightSpeed.Speed1,\n                SpectrumKeyboardBacklightSpeed.Speed2,\n                SpectrumKeyboardBacklightSpeed.Speed3\n            ],\n            SpectrumKeyboardBacklightSpeed.Speed2,\n            e => e.GetDisplayName());\n    }\n\n    private void Update(SpectrumKeyboardBacklightEffect effect)\n    {\n        if (_effectTypeComboBox.GetItems<SpectrumKeyboardBacklightEffectType>().Contains(effect.Type))\n            _effectTypeComboBox.SelectItem(effect.Type);\n\n        if (_directionComboBox.GetItems<SpectrumKeyboardBacklightDirection>().Contains(effect.Direction))\n            _directionComboBox.SelectItem(effect.Direction);\n\n        if (_clockwiseDirectionComboBox.GetItems<SpectrumKeyboardBacklightClockwiseDirection>()\n            .Contains(effect.ClockwiseDirection))\n            _clockwiseDirectionComboBox.SelectItem(effect.ClockwiseDirection);\n\n        if (_speedComboBox.GetItems<SpectrumKeyboardBacklightSpeed>().Contains(effect.Speed))\n            _speedComboBox.SelectItem(effect.Speed);\n\n        var colors = effect.Colors.Select(c => Color.FromRgb(c.R, c.G, c.B)).ToArray();\n        if (colors.Length != 0)\n        {\n            _singleColorPicker.SelectedColor = colors.First();\n            _multiColorPicker.SelectedColors = colors;\n        }\n    }\n\n    private void RefreshVisibility()\n    {\n        if (!_effectTypeComboBox.TryGetSelectedItem(out SpectrumKeyboardBacklightEffectType effect))\n            return;\n\n        _effectTypeCardHeader.Warning = effect.IsAllLightsEffect() || effect.IsWholeKeyboardEffect()\n            ? Resource.SpectrumKeyboardBacklightEditEffectWindow_Effect_Warning\n            : string.Empty;\n\n        _directionCard.Visibility = effect switch\n        {\n            SpectrumKeyboardBacklightEffectType.ColorWave => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.RainbowWave => Visibility.Visible,\n            _ => Visibility.Collapsed\n        };\n\n        _clockwiseDirectionCard.Visibility = effect switch\n        {\n            SpectrumKeyboardBacklightEffectType.RainbowScrew => Visibility.Visible,\n            _ => Visibility.Collapsed\n        };\n\n        _speedCard.Visibility = effect switch\n        {\n            SpectrumKeyboardBacklightEffectType.ColorChange => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.ColorPulse => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.ColorWave => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.Rain => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.RainbowScrew => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.RainbowWave => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.Ripple => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.Smooth => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.Type => Visibility.Visible,\n            _ => Visibility.Collapsed\n        };\n\n        _singleColor.Visibility = effect switch\n        {\n            SpectrumKeyboardBacklightEffectType.Always => Visibility.Visible,\n            _ => Visibility.Collapsed\n        };\n\n        _multiColors.Visibility = effect switch\n        {\n            SpectrumKeyboardBacklightEffectType.ColorChange => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.ColorPulse => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.ColorWave => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.Rain => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.Ripple => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.Smooth => Visibility.Visible,\n            SpectrumKeyboardBacklightEffectType.Type => Visibility.Visible,\n            _ => Visibility.Collapsed\n        };\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Macro/MacroRecordingWindow.cs",
    "content": "﻿using System;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Media;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Macro;\n\npublic class MacroRecordingWindow : UiWindow\n{\n    private readonly Grid _mainGrid = new()\n    {\n        RowDefinitions =\n        {\n            new() { Height = GridLength.Auto },\n            new() { Height = GridLength.Auto },\n        },\n        ColumnDefinitions =\n        {\n            new() { Width = GridLength.Auto, },\n            new() { Width = new(1, GridUnitType.Star) },\n        },\n        Margin = new(16, 16, 32, 16),\n    };\n\n    private readonly SymbolIcon _symbolIcon = new()\n    {\n        FontSize = 32,\n        Margin = new(0, 0, 16, 0),\n    };\n\n    private readonly Label _titleLabel = new()\n    {\n        FontSize = 16,\n        FontWeight = FontWeights.Medium,\n        VerticalContentAlignment = VerticalAlignment.Center,\n    };\n\n    private readonly Label _subtitleLabel = new()\n    {\n        FontSize = 14,\n        VerticalContentAlignment = VerticalAlignment.Center,\n        Margin = new(0, 4, 0, 0),\n    };\n\n    public static MacroRecordingWindow CreatePreparing() => new(SymbolRegular.HourglassThreeQuarter24, Resource.MacroRecordingWindow_Preparing_Title, null);\n\n    public static MacroRecordingWindow CreateRecording() => new(SymbolRegular.Record24, Resource.MacroRecordingWindow_Recording_Title, Resource.MacroRecordingWindow_Recording_Message);\n\n    private MacroRecordingWindow(SymbolRegular symbol, string title, string? subtitle)\n    {\n        InitializeStyle();\n        InitializeContent(symbol, title, subtitle);\n\n        _mainGrid.Measure(new Size(double.PositiveInfinity, 80));\n\n        Width = MaxWidth = MinWidth = Math.Max(_mainGrid.DesiredSize.Width, 300);\n        Height = MaxHeight = MinHeight = _mainGrid.DesiredSize.Height;\n    }\n\n    private void InitializeStyle()\n    {\n        WindowStartupLocation = WindowStartupLocation.CenterOwner;\n\n        Focusable = false;\n        Topmost = true;\n        ExtendsContentIntoTitleBar = true;\n        ShowInTaskbar = false;\n        ShowActivated = false;\n\n        _mainGrid.FlowDirection = LocalizationHelper.Direction;\n        _titleLabel.Foreground = (SolidColorBrush)FindResource(\"TextFillColorPrimaryBrush\");\n    }\n\n    private void InitializeContent(SymbolRegular symbol, string title, string? subtitle)\n    {\n        _symbolIcon.Symbol = symbol;\n        _titleLabel.Content = title;\n        _subtitleLabel.Content = subtitle;\n\n\n        Grid.SetRow(_symbolIcon, 0);\n        Grid.SetRow(_titleLabel, 0);\n        Grid.SetRow(_subtitleLabel, 1);\n\n        Grid.SetColumn(_symbolIcon, 0);\n        Grid.SetColumn(_titleLabel, 1);\n        Grid.SetColumn(_subtitleLabel, 1);\n\n        Grid.SetRowSpan(_symbolIcon, 2);\n\n        if (subtitle is null)\n            Grid.SetRowSpan(_titleLabel, 2);\n\n        _mainGrid.Children.Add(_symbolIcon);\n        _mainGrid.Children.Add(_titleLabel);\n        _mainGrid.Children.Add(_subtitleLabel);\n\n        Content = _mainGrid;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/MainWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.MainWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:pages=\"clr-namespace:LenovoLegionToolkit.WPF.Pages\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.AppName}\"\n    Width=\"1150\"\n    Height=\"750\"\n    MinWidth=\"650\"\n    MinHeight=\"600\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar Grid.Row=\"0\" />\n\n        <Grid Grid.Row=\"0\" Margin=\"12,4,150,4\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                x:Name=\"_title\"\n                Grid.Column=\"0\"\n                HorizontalAlignment=\"Left\"\n                VerticalAlignment=\"Center\"\n                FlowDirection=\"LeftToRight\"\n                Focusable=\"False\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.AppName}\" />\n\n            <custom:Badge\n                x:Name=\"_openLogIndicator\"\n                Grid.Column=\"1\"\n                Margin=\"0,0,8,0\"\n                Padding=\"8,2,8,2\"\n                Appearance=\"Caution\"\n                Content=\"Log\"\n                Cursor=\"Hand\"\n                Focusable=\"True\"\n                KeyDown=\"OpenLogIndicator_KeyDown\"\n                MouseLeftButtonDown=\"OpenLogIndicator_Click\"\n                MouseRightButtonDown=\"OpenLogIndicator_Click\"\n                Visibility=\"Collapsed\" />\n\n            <custom:Badge\n                x:Name=\"_deviceInfoIndicator\"\n                Grid.Column=\"2\"\n                Padding=\"8,2,8,2\"\n                Appearance=\"Transparent\"\n                Cursor=\"Hand\"\n                Focusable=\"True\"\n                KeyDown=\"DeviceInfoIndicator_KeyDown\"\n                MouseLeftButtonDown=\"DeviceInfoIndicator_Click\"\n                MouseRightButtonDown=\"DeviceInfoIndicator_Click\"\n                Visibility=\"Collapsed\" />\n\n        </Grid>\n\n        <Grid\n            x:Name=\"_contentGrid\"\n            Grid.Row=\"1\"\n            Margin=\"12,6,0,0\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:NavigationStore\n                x:Name=\"_navigationStore\"\n                Grid.Column=\"0\"\n                Margin=\"0,0,12,12\"\n                Frame=\"{Binding ElementName=_rootFrame}\"\n                SelectedPageIndex=\"0\">\n\n                <wpfui:NavigationStore.Items>\n                    <custom:NavigationItem\n                        Content=\"{x:Static resources:Resource.MainWindow_NavigationItem_Dashboard}\"\n                        Icon=\"Home24\"\n                        PageTag=\"dashboard\"\n                        PageType=\"{x:Type pages:DashboardPage}\" />\n                    <custom:NavigationItem\n                        x:Name=\"_keyboardItem\"\n                        Content=\"{x:Static resources:Resource.MainWindow_NavigationItem_Keyboard}\"\n                        Icon=\"Keyboard24\"\n                        PageTag=\"keyboardBacklight\"\n                        PageType=\"{x:Type pages:KeyboardBacklightPage}\" />\n                    <custom:NavigationItem\n                        Content=\"{x:Static resources:Resource.MainWindow_NavigationItem_Battery}\"\n                        Icon=\"BatteryCheckmark24\"\n                        PageTag=\"battery\"\n                        PageType=\"{x:Type pages:BatteryPage}\" />\n                    <custom:NavigationItem\n                        Content=\"{x:Static resources:Resource.MainWindow_NavigationItem_Actions}\"\n                        Icon=\"Rocket24\"\n                        PageTag=\"automation\"\n                        PageType=\"{x:Type pages:AutomationPage}\" />\n                    <custom:NavigationItem\n                        Content=\"{x:Static resources:Resource.MainWindow_NavigationItem_Macro}\"\n                        Icon=\"ReceiptPlay24\"\n                        PageTag=\"macro\"\n                        PageType=\"{x:Type pages:MacroPage}\" />\n                    <custom:NavigationItem\n                        Content=\"{x:Static resources:Resource.MainWindow_NavigationItem_Packages}\"\n                        Icon=\"Box24\"\n                        PageTag=\"packages\"\n                        PageType=\"{x:Type pages:PackagesPage}\" />\n                </wpfui:NavigationStore.Items>\n\n                <wpfui:NavigationStore.Footer>\n                    <custom:NavigationItem\n                        Content=\"{x:Static resources:Resource.MainWindow_NavigationItem_Settings}\"\n                        Icon=\"Settings24\"\n                        PageTag=\"settings\"\n                        PageType=\"{x:Type pages:SettingsPage}\" />\n                    <custom:NavigationItem\n                        Content=\"{x:Static resources:Resource.MainWindow_NavigationItem_Donate}\"\n                        Icon=\"Money24\"\n                        PageTag=\"donate\"\n                        PageType=\"{x:Type pages:DonatePage}\" />\n                    <custom:NavigationItem\n                        Content=\"{x:Static resources:Resource.MainWindow_NavigationItem_About}\"\n                        Icon=\"Info24\"\n                        PageTag=\"about\"\n                        PageType=\"{x:Type pages:AboutPage}\" />\n                </wpfui:NavigationStore.Footer>\n\n            </wpfui:NavigationStore>\n\n            <Border\n                Grid.Column=\"1\"\n                Background=\"{DynamicResource ControlFillColorDefaultBrush}\"\n                CornerRadius=\"8,0,0,0\">\n                <Frame Name=\"_rootFrame\" Margin=\"24,0,0,0\" />\n            </Border>\n\n            <wpfui:Snackbar\n                x:Name=\"_snackbar\"\n                Grid.Column=\"1\"\n                MinWidth=\"300\"\n                HorizontalAlignment=\"Center\"\n                Icon=\"Checkmark24\">\n                <StackPanel Margin=\"4,4,4,4\" VerticalAlignment=\"Center\">\n                    <!--  ReSharper disable once UnusedMember.Global  -->\n                    <TextBlock\n                        x:Name=\"_snackbarTitle\"\n                        VerticalAlignment=\"Center\"\n                        FontSize=\"16\"\n                        FontWeight=\"Medium\"\n                        Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n                        TextWrapping=\"WrapWithOverflow\" />\n                    <!--  ReSharper disable once UnusedMember.Global  -->\n                    <TextBlock\n                        x:Name=\"_snackbarMessage\"\n                        Margin=\"0,6,0,0\"\n                        FontSize=\"14\"\n                        Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                        TextWrapping=\"WrapWithOverflow\" />\n                </StackPanel>\n            </wpfui:Snackbar>\n\n        </Grid>\n\n        <Border\n            x:Name=\"_vantageIndicator\"\n            Grid.Row=\"2\"\n            Padding=\"8,4,8,6\"\n            Background=\"Orange\"\n            Visibility=\"Collapsed\">\n            <StackPanel HorizontalAlignment=\"Center\" Orientation=\"Horizontal\">\n                <wpfui:SymbolIcon\n                    Margin=\"0,0,4,0\"\n                    Foreground=\"Black\"\n                    Symbol=\"Warning24\" />\n                <TextBlock\n                    Focusable=\"True\"\n                    Foreground=\"Black\"\n                    Text=\"{x:Static resources:Resource.MainWindows_VantageRunning}\" />\n            </StackPanel>\n        </Border>\n\n        <Border\n            x:Name=\"_legionZoneIndicator\"\n            Grid.Row=\"3\"\n            Padding=\"8,4,8,6\"\n            Background=\"Orange\"\n            Visibility=\"Collapsed\">\n            <StackPanel HorizontalAlignment=\"Center\" Orientation=\"Horizontal\">\n                <wpfui:SymbolIcon\n                    Margin=\"0,0,4,0\"\n                    Foreground=\"Black\"\n                    Symbol=\"Warning24\" />\n                <TextBlock\n                    Focusable=\"True\"\n                    Foreground=\"Black\"\n                    Text=\"{x:Static resources:Resource.MainWindow_LegionZoneRunning}\" />\n            </StackPanel>\n        </Border>\n\n        <Border\n            x:Name=\"_fnKeysIndicator\"\n            Grid.Row=\"4\"\n            Padding=\"8,4,8,6\"\n            Background=\"Orange\"\n            Visibility=\"Collapsed\">\n            <StackPanel HorizontalAlignment=\"Center\" Orientation=\"Horizontal\">\n                <wpfui:SymbolIcon\n                    Margin=\"0,0,4,0\"\n                    Foreground=\"Black\"\n                    Symbol=\"Warning24\" />\n                <TextBlock\n                    Focusable=\"True\"\n                    Foreground=\"Black\"\n                    Text=\"{x:Static resources:Resource.MainWindows_FnKeysRunning}\" />\n            </StackPanel>\n        </Border>\n\n        <Border\n            x:Name=\"_updateIndicator\"\n            Grid.Row=\"5\"\n            Padding=\"8,4,8,6\"\n            Background=\"{DynamicResource SystemFillColorSuccessBrush}\"\n            Cursor=\"Hand\"\n            MouseLeftButtonDown=\"UpdateIndicator_Click\"\n            MouseRightButtonDown=\"UpdateIndicator_Click\"\n            Visibility=\"Collapsed\">\n            <StackPanel HorizontalAlignment=\"Center\" Orientation=\"Horizontal\">\n                <wpfui:SymbolIcon Margin=\"0,0,4,0\" Symbol=\"ArrowSync24\" />\n                <TextBlock\n                    x:Name=\"_updateIndicatorText\"\n                    Focusable=\"True\"\n                    KeyDown=\"UpdateIndicator_KeyDown\"\n                    Text=\"{x:Static resources:Resource.MainWindow_UpdateAvailable}\" />\n            </StackPanel>\n        </Border>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/MainWindow.xaml.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Runtime.InteropServices;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Input;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Listeners;\nusing LenovoLegionToolkit.Lib.Messaging;\nusing LenovoLegionToolkit.Lib.Messaging.Messages;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.SoftwareDisabler;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Pages;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing LenovoLegionToolkit.WPF.Windows.Utils;\nusing Microsoft.Xaml.Behaviors.Core;\nusing Windows.Win32;\nusing Windows.Win32.System.Threading;\nusing Wpf.Ui.Controls;\n#if !DEBUG\nusing System.Reflection;\nusing LenovoLegionToolkit.Lib.Extensions;\n#endif\n\n#pragma warning disable CA1416\n\nnamespace LenovoLegionToolkit.WPF.Windows;\n\npublic partial class MainWindow\n{\n    private readonly ApplicationSettings _applicationSettings = IoCContainer.Resolve<ApplicationSettings>();\n    private readonly SpecialKeyListener _specialKeyListener = IoCContainer.Resolve<SpecialKeyListener>();\n    private readonly VantageDisabler _vantageDisabler = IoCContainer.Resolve<VantageDisabler>();\n    private readonly LegionZoneDisabler _legionZoneDisabler = IoCContainer.Resolve<LegionZoneDisabler>();\n    private readonly FnKeysDisabler _fnKeysDisabler = IoCContainer.Resolve<FnKeysDisabler>();\n    private readonly UpdateChecker _updateChecker = IoCContainer.Resolve<UpdateChecker>();\n\n    private TrayHelper? _trayHelper;\n\n    public bool TrayTooltipEnabled { get; init; } = true;\n    public bool DisableConflictingSoftwareWarning { get; set; }\n    public bool SuppressClosingEventHandler { get; set; }\n\n    public Snackbar Snackbar => _snackbar;\n\n    public MainWindow()\n    {\n        InitializeComponent();\n\n        Closing += MainWindow_Closing;\n        Closed += MainWindow_Closed;\n        IsVisibleChanged += MainWindow_IsVisibleChanged;\n        Loaded += MainWindow_Loaded;\n        SourceInitialized += MainWindow_SourceInitialized;\n        StateChanged += MainWindow_StateChanged;\n\n#if DEBUG\n        _title.Text += Debugger.IsAttached ? \" [DEBUGGER ATTACHED]\" : \" [DEBUG]\";\n#else\n        var version = Assembly.GetEntryAssembly()?.GetName().Version;\n        if (version is not null && version.IsBeta())\n            _title.Text += \" [BETA]\";\n#endif\n\n        if (Log.Instance.IsTraceEnabled)\n        {\n            _title.Text += \" [LOGGING ENABLED]\";\n            _openLogIndicator.Visibility = Visibility.Visible;\n        }\n\n        Title = _title.Text;\n    }\n\n    private void MainWindow_SourceInitialized(object? sender, EventArgs e) => RestoreSize();\n\n    private async void MainWindow_Loaded(object sender, RoutedEventArgs e)\n    {\n        _contentGrid.Visibility = Visibility.Hidden;\n\n        if (!await KeyboardBacklightPage.IsSupportedAsync())\n            _navigationStore.Items.Remove(_keyboardItem);\n\n        SmartKeyHelper.Instance.BringToForeground = () => Dispatcher.Invoke(BringToForeground);\n\n        _specialKeyListener.Changed += (_, args) =>\n        {\n            if (args.SpecialKey == SpecialKey.FnN)\n                Dispatcher.Invoke(BringToForeground);\n        };\n\n        _contentGrid.Visibility = Visibility.Visible;\n\n        LoadDeviceInfo();\n        UpdateIndicators();\n        CheckForUpdates();\n\n        InputBindings.Add(new KeyBinding(new ActionCommand(_navigationStore.NavigateToNext), Key.Tab, ModifierKeys.Control));\n        InputBindings.Add(new KeyBinding(new ActionCommand(_navigationStore.NavigateToPrevious), Key.Tab, ModifierKeys.Control | ModifierKeys.Shift));\n\n        var key = (int)Key.D1;\n        foreach (var item in _navigationStore.Items.OfType<NavigationItem>())\n            InputBindings.Add(new KeyBinding(new ActionCommand(() => _navigationStore.Navigate(item.PageTag)), (Key)key++, ModifierKeys.Control));\n\n        var trayHelper = new TrayHelper(_navigationStore, BringToForeground, TrayTooltipEnabled);\n        await trayHelper.InitializeAsync();\n        trayHelper.MakeVisible();\n        _trayHelper = trayHelper;\n    }\n\n    private async void MainWindow_Closing(object? sender, CancelEventArgs e)\n    {\n        SaveSize();\n\n        if (SuppressClosingEventHandler)\n            return;\n\n        if (_applicationSettings.Store.MinimizeOnClose)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Minimizing...\");\n\n            WindowState = WindowState.Minimized;\n            e.Cancel = true;\n        }\n        else\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Closing...\");\n\n            await App.Current.ShutdownAsync();\n        }\n    }\n\n    private void MainWindow_Closed(object? sender, EventArgs args)\n    {\n        _trayHelper?.Dispose();\n        _trayHelper = null;\n    }\n\n    private void MainWindow_StateChanged(object? sender, EventArgs e)\n    {\n        if (Log.Instance.IsTraceEnabled)\n            Log.Instance.Trace($\"Window state changed to {WindowState}\");\n\n        switch (WindowState)\n        {\n            case WindowState.Minimized:\n                SetEfficiencyMode(true);\n                SendToTray();\n                break;\n            case WindowState.Normal:\n                SetEfficiencyMode(false);\n                BringToForeground();\n                break;\n        }\n    }\n\n    private void MainWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (!IsVisible)\n            return;\n\n        CheckForUpdates();\n    }\n\n    private void OpenLogIndicator_Click(object sender, MouseButtonEventArgs e) => OpenLog();\n\n    private void OpenLogIndicator_KeyDown(object sender, KeyEventArgs e)\n    {\n        if (e.Key is not Key.Enter and not Key.Space)\n            return;\n\n        OpenLog();\n    }\n\n    private void DeviceInfoIndicator_Click(object sender, MouseButtonEventArgs e) => ShowDeviceInfoWindow();\n\n    private void DeviceInfoIndicator_KeyDown(object sender, KeyEventArgs e)\n    {\n        if (e.Key is not Key.Enter and not Key.Space)\n            return;\n\n        ShowDeviceInfoWindow();\n    }\n\n    private void UpdateIndicator_Click(object sender, RoutedEventArgs e) => ShowUpdateWindow();\n\n    private void UpdateIndicator_KeyDown(object sender, KeyEventArgs e)\n    {\n        if (e.Key is not Key.Enter and not Key.Space)\n            return;\n\n        ShowUpdateWindow();\n    }\n\n    private void LoadDeviceInfo()\n    {\n        Task.Run(Compatibility.GetMachineInformationAsync)\n            .ContinueWith(mi =>\n            {\n                _deviceInfoIndicator.Content = mi.Result.Model;\n                _deviceInfoIndicator.Visibility = Visibility.Visible;\n            }, TaskScheduler.FromCurrentSynchronizationContext());\n    }\n\n    private void UpdateIndicators()\n    {\n        if (DisableConflictingSoftwareWarning)\n            return;\n\n        _vantageDisabler.OnRefreshed += (_, e) => Dispatcher.Invoke(() =>\n        {\n            _vantageIndicator.Visibility = e.Status == SoftwareStatus.Enabled ? Visibility.Visible : Visibility.Collapsed;\n        });\n\n        _legionZoneDisabler.OnRefreshed += (_, e) => Dispatcher.Invoke(() =>\n        {\n            _legionZoneIndicator.Visibility = e.Status == SoftwareStatus.Enabled ? Visibility.Visible : Visibility.Collapsed;\n        });\n\n        _fnKeysDisabler.OnRefreshed += (_, e) => Dispatcher.Invoke(() =>\n        {\n            _fnKeysIndicator.Visibility = e.Status == SoftwareStatus.Enabled ? Visibility.Visible : Visibility.Collapsed;\n        });\n\n        Task.Run(async () =>\n        {\n            _ = await _vantageDisabler.GetStatusAsync().ConfigureAwait(false);\n            _ = await _legionZoneDisabler.GetStatusAsync().ConfigureAwait(false);\n            _ = await _fnKeysDisabler.GetStatusAsync().ConfigureAwait(false);\n        });\n    }\n\n    public void CheckForUpdates(bool manualCheck = false)\n    {\n        Task.Run(() => _updateChecker.CheckAsync(manualCheck))\n            .ContinueWith(async updatesAvailable =>\n            {\n                var result = updatesAvailable.Result;\n                if (result is null)\n                {\n                    _updateIndicator.Visibility = Visibility.Collapsed;\n\n                    if (manualCheck && WindowState != WindowState.Minimized)\n                    {\n                        switch (_updateChecker.Status)\n                        {\n                            case UpdateCheckStatus.Success:\n                                await SnackbarHelper.ShowAsync(Resource.MainWindow_CheckForUpdates_Success_Title);\n                                break;\n                            case UpdateCheckStatus.RateLimitReached:\n                                await SnackbarHelper.ShowAsync(Resource.MainWindow_CheckForUpdates_Error_Title, Resource.MainWindow_CheckForUpdates_Error_ReachedRateLimit_Message, SnackbarType.Error);\n                                break;\n                            case UpdateCheckStatus.Error:\n                                await SnackbarHelper.ShowAsync(Resource.MainWindow_CheckForUpdates_Error_Title, Resource.MainWindow_CheckForUpdates_Error_Unknown_Message, SnackbarType.Error);\n                                break;\n                        }\n                    }\n                }\n                else\n                {\n                    var versionNumber = result.ToString(3);\n\n                    _updateIndicatorText.Text =\n                        string.Format(Resource.MainWindow_UpdateAvailableWithVersion, versionNumber);\n                    _updateIndicator.Visibility = Visibility.Visible;\n\n                    if (WindowState == WindowState.Minimized)\n                        MessagingCenter.Publish(new NotificationMessage(NotificationType.UpdateAvailable, versionNumber));\n                }\n            }, TaskScheduler.FromCurrentSynchronizationContext());\n    }\n\n    private void RestoreSize()\n    {\n        if (!_applicationSettings.Store.WindowSize.HasValue)\n            return;\n\n        Width = Math.Max(MinWidth, _applicationSettings.Store.WindowSize.Value.Width);\n        Height = Math.Max(MinHeight, _applicationSettings.Store.WindowSize.Value.Height);\n\n        ScreenHelper.UpdateScreenInfos();\n        var primaryScreen = ScreenHelper.PrimaryScreen;\n\n        if (!primaryScreen.HasValue)\n            return;\n\n        var desktopWorkingArea = primaryScreen.Value.WorkArea;\n        Left = (desktopWorkingArea.Width - Width) / 2 + desktopWorkingArea.Left;\n        Top = (desktopWorkingArea.Height - Height) / 2 + desktopWorkingArea.Top;\n    }\n\n    private void SaveSize()\n    {\n        _applicationSettings.Store.WindowSize = WindowState != WindowState.Normal\n            ? new(RestoreBounds.Width, RestoreBounds.Height)\n            : new(Width, Height);\n        _applicationSettings.SynchronizeStore();\n    }\n\n    private void BringToForeground() => WindowExtensions.BringToForeground(this);\n\n    private static void OpenLog()\n    {\n        try\n        {\n            if (!Directory.Exists(Folders.AppData))\n                return;\n\n            Process.Start(\"explorer\", Log.Instance.LogPath);\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Failed to open log.\", ex);\n        }\n    }\n\n    private void ShowDeviceInfoWindow()\n    {\n        var window = new DeviceInformationWindow { Owner = this };\n        window.ShowDialog();\n    }\n\n    public void ShowUpdateWindow()\n    {\n        var window = new UpdateWindow { Owner = this };\n        window.ShowDialog();\n    }\n\n    public void SendToTray()\n    {\n        if (!_applicationSettings.Store.MinimizeToTray)\n            return;\n\n        SetEfficiencyMode(true);\n        Hide();\n        ShowInTaskbar = true;\n    }\n\n    private static unsafe void SetEfficiencyMode(bool enabled)\n    {\n        var ptr = IntPtr.Zero;\n\n        try\n        {\n            var priorityClass = enabled\n                ? PROCESS_CREATION_FLAGS.IDLE_PRIORITY_CLASS\n                : PROCESS_CREATION_FLAGS.NORMAL_PRIORITY_CLASS;\n            PInvoke.SetPriorityClass(PInvoke.GetCurrentProcess(), priorityClass);\n\n            var state = new PROCESS_POWER_THROTTLING_STATE\n            {\n                Version = PInvoke.PROCESS_POWER_THROTTLING_CURRENT_VERSION,\n                ControlMask = PInvoke.PROCESS_POWER_THROTTLING_EXECUTION_SPEED,\n                StateMask = enabled ? PInvoke.PROCESS_POWER_THROTTLING_EXECUTION_SPEED : 0,\n            };\n\n            var size = Marshal.SizeOf<PROCESS_POWER_THROTTLING_STATE>();\n            ptr = Marshal.AllocHGlobal(size);\n            Marshal.StructureToPtr(state, ptr, false);\n\n            PInvoke.SetProcessInformation(PInvoke.GetCurrentProcess(),\n                PROCESS_INFORMATION_CLASS.ProcessPowerThrottling,\n                ptr.ToPointer(),\n                (uint)size);\n        }\n        finally\n        {\n            Marshal.FreeHGlobal(ptr);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/BootLogoWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Settings.BootLogoWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.BootLogoWindow_Title}\"\n    Width=\"400\"\n    Height=\"250\"\n    MinWidth=\"400\"\n    MinHeight=\"250\"\n    MaxWidth=\"400\"\n    MaxHeight=\"250\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.BootLogoWindow_Title}\" />\n        </Grid>\n\n        <Grid Grid.Row=\"1\" Margin=\"12,12,12,12\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <TextBlock\n                Grid.Row=\"0\"\n                Grid.Column=\"0\"\n                Focusable=\"True\"\n                Text=\"{x:Static resources:Resource.BootLogoWindow_Status}\" />\n\n            <TextBlock\n                x:Name=\"_defaultStatus\"\n                Grid.Row=\"0\"\n                Grid.Column=\"1\"\n                Focusable=\"True\"\n                FontWeight=\"Medium\"\n                Text=\"{x:Static resources:Resource.BootLogoWindow_DefaultLogoSet}\"\n                TextAlignment=\"Right\"\n                Visibility=\"Collapsed\" />\n\n            <TextBlock\n                x:Name=\"_customStatus\"\n                Grid.Row=\"0\"\n                Grid.Column=\"1\"\n                Focusable=\"True\"\n                FontWeight=\"Medium\"\n                Text=\"{x:Static resources:Resource.BootLogoWindow_CustomLogoSet}\"\n                TextAlignment=\"Right\"\n                Visibility=\"Collapsed\" />\n\n            <TextBlock\n                x:Name=\"_descriptionTextBlock\"\n                Grid.Row=\"1\"\n                Grid.Column=\"0\"\n                Grid.ColumnSpan=\"2\"\n                Margin=\"0,24,0,0\"\n                Focusable=\"True\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                TextWrapping=\"Wrap\" />\n\n            <TextBlock\n                x:Name=\"_resultTextBlock\"\n                Grid.Row=\"2\"\n                Grid.Column=\"0\"\n                Grid.ColumnSpan=\"2\"\n                Margin=\"0,24,0,0\"\n                FontWeight=\"Medium\"\n                TextAlignment=\"Center\"\n                TextWrapping=\"Wrap\">\n                <TextBlock.Style>\n                    <Style TargetType=\"TextBlock\">\n                        <Setter Property=\"Foreground\" Value=\"{DynamicResource SystemFillColorErrorBrush}\" />\n                        <Style.Triggers>\n                            <Trigger Property=\"Text\" Value=\"{x:Static resources:Resource.BootLogoWindow_SetCustomSuccess}\">\n                                <Setter Property=\"Foreground\" Value=\"{DynamicResource SystemFillColorSuccessBrush}\" />\n                            </Trigger>\n                            <Trigger Property=\"Text\" Value=\"{x:Static resources:Resource.BootLogoWindow_SetDefaultSuccess}\">\n                                <Setter Property=\"Foreground\" Value=\"{DynamicResource SystemFillColorSuccessBrush}\" />\n                            </Trigger>\n                        </Style.Triggers>\n                    </Style>\n                </TextBlock.Style>\n            </TextBlock>\n        </Grid>\n\n        <Grid Grid.Row=\"2\" Margin=\"12\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:Button\n                x:Name=\"_revertToDefaultButton\"\n                Grid.Column=\"1\"\n                MinWidth=\"100\"\n                Margin=\"8,0,0,0\"\n                Appearance=\"Primary\"\n                Click=\"RevertToDefaultButton_Click\"\n                Content=\"{x:Static resources:Resource.RevertToDefault}\"\n                Visibility=\"Collapsed\" />\n\n            <wpfui:Button\n                x:Name=\"_customizeButton\"\n                Grid.Column=\"2\"\n                MinWidth=\"100\"\n                Margin=\"8,0,0,0\"\n                Appearance=\"Primary\"\n                Click=\"CustomizeButton_Click\"\n                Content=\"{x:Static resources:Resource.BootLogoWindow_Customize}\"\n                Visibility=\"Collapsed\" />\n\n            <wpfui:Button\n                Grid.Column=\"3\"\n                MinWidth=\"100\"\n                Margin=\"8,0,0,0\"\n                Appearance=\"Secondary\"\n                Click=\"CloseButton_Click\"\n                Content=\"{x:Static resources:Resource.Close}\" />\n        </Grid>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/BootLogoWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Linq;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Resources;\nusing Microsoft.Win32;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Settings;\n\npublic partial class BootLogoWindow\n{\n    public BootLogoWindow()\n    {\n        InitializeComponent();\n\n        Loaded += BootLogoWindow_Loaded;\n    }\n\n    private void BootLogoWindow_Loaded(object sender, RoutedEventArgs e)\n    {\n        Refresh();\n    }\n\n    private void Refresh()\n    {\n        var (enabled, resolution, formats, _) = BootLogo.GetStatus();\n\n        _descriptionTextBlock.Text = string.Format(Resource.BootLogoWindow_Description, resolution.DisplayName, string.Join(\", \", formats.Select(f => f.ToString().ToUpper())));\n\n        _defaultStatus.Visibility = enabled ? Visibility.Collapsed : Visibility.Visible;\n        _customStatus.Visibility = enabled ? Visibility.Visible : Visibility.Collapsed;\n        _customizeButton.Visibility = enabled ? Visibility.Collapsed : Visibility.Visible;\n        _revertToDefaultButton.Visibility = enabled ? Visibility.Visible : Visibility.Collapsed;\n    }\n\n    private async void RevertToDefaultButton_Click(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            _revertToDefaultButton.IsEnabled = false;\n\n            await BootLogo.DisableAsync();\n\n            _resultTextBlock.Text = Resource.BootLogoWindow_SetDefaultSuccess;\n\n            Refresh();\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Default logo could not be set.\", ex);\n            _resultTextBlock.Text = string.Format(Resource.BootLogoWindow_SetDefaultFailed, GetDescription(ex));\n        }\n        finally\n        {\n            _revertToDefaultButton.IsEnabled = true;\n        }\n    }\n\n    private async void CustomizeButton_Click(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            _customizeButton.IsEnabled = false;\n\n            var (_, _, _, filters) = BootLogo.GetStatus();\n\n            var ofd = new OpenFileDialog\n            {\n                Title = \"Open\",\n                InitialDirectory = \"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\",\n                Filter = $\"Images|{string.Join(\";\", filters)}\",\n                CheckFileExists = true,\n            };\n\n            var result = ofd.ShowDialog() ?? false;\n            if (!result)\n                return;\n\n            var file = ofd.FileName;\n\n            await BootLogo.EnableAsync(file);\n\n            _resultTextBlock.Text = Resource.BootLogoWindow_SetCustomSuccess;\n\n            Refresh();\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Custom logo could not be set.\", ex);\n\n            _resultTextBlock.Text = string.Format(Resource.BootLogoWindow_SetCustomFailed, GetDescription(ex));\n        }\n        finally\n        {\n            _customizeButton.IsEnabled = true;\n        }\n    }\n\n    private void CloseButton_Click(object sender, RoutedEventArgs e) => Close();\n\n    private static string GetDescription(Exception exception) => exception switch\n    {\n        CantSetUEFIPrivilegeException => Resource.BootLogoWindow_SetError_Cannot_Set_UEFI_Privilege,\n        CantMountUEFIPartitionException => Resource.BootLogoWindow_SetError_Cannot_Mount_EFI_Partition,\n        NotEnoughSpaceOnUEFIPartitionException => Resource.BootLogoWindow_SetError_Not_Enough_Free_Space_On_EFI_Partition,\n        InvalidBootLogoImageSizeException => Resource.BootLogoWindow_SetError_Invalid_Image_Size,\n        InvalidBootLogoImageFormatException => Resource.BootLogoWindow_SetError_Invalid_Image_Format,\n        _ => exception.Message\n    };\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/ExcludeRefreshRatesWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Settings.ExcludeRefreshRatesWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.ExcludeRefreshRatesWindow_Title}\"\n    Width=\"400\"\n    Height=\"500\"\n    MinWidth=\"400\"\n    MinHeight=\"500\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.ExcludeRefreshRatesWindow_Title}\" />\n\n        </Grid>\n\n        <controls:LoadableControl\n            x:Name=\"_loader\"\n            Grid.Row=\"1\"\n            Margin=\"12,0,12,12\"\n            IndicatorVerticalAlignment=\"Center\">\n            <Grid>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"*\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n\n                <custom:CardControl\n                    Grid.Row=\"0\"\n                    Margin=\"0,8,0,8\"\n                    Icon=\"Info24\">\n                    <custom:CardControl.Header>\n                        <TextBlock Text=\"{x:Static resources:Resource.ExcludeRefreshRatesWindow_Description}\" TextWrapping=\"Wrap\" />\n                    </custom:CardControl.Header>\n                </custom:CardControl>\n\n                <Border Grid.Row=\"1\" CornerRadius=\"8\">\n                    <Border.Background>\n                        <SolidColorBrush Color=\"{DynamicResource ControlFillColorDefault}\" />\n                    </Border.Background>\n                    <wpfui:DynamicScrollViewer>\n                        <ItemsControl\n                            x:Name=\"_list\"\n                            Margin=\"8,8,16,0\"\n                            HorizontalContentAlignment=\"Stretch\"\n                            ScrollViewer.HorizontalScrollBarVisibility=\"Disabled\" />\n                    </wpfui:DynamicScrollViewer>\n                </Border>\n\n                <Grid Grid.Row=\"2\" Margin=\"0,8,0,0\">\n                    <Grid.ColumnDefinitions>\n                        <ColumnDefinition Width=\"*\" />\n                        <ColumnDefinition Width=\"Auto\" />\n                        <ColumnDefinition Width=\"Auto\" />\n                    </Grid.ColumnDefinitions>\n\n                    <wpfui:Button\n                        Grid.Column=\"1\"\n                        MinWidth=\"100\"\n                        Appearance=\"Primary\"\n                        Click=\"SaveButton_Click\"\n                        Content=\"{x:Static resources:Resource.Save}\" />\n\n                    <wpfui:Button\n                        Grid.Column=\"2\"\n                        MinWidth=\"100\"\n                        Margin=\"8,0,0,0\"\n                        Click=\"CancelButton_Click\"\n                        Content=\"{x:Static resources:Resource.Cancel}\" />\n\n                </Grid>\n\n            </Grid>\n        </controls:LoadableControl>\n\n    </Grid>\n\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/ExcludeRefreshRatesWindow.xaml.cs",
    "content": "﻿using System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Settings;\n\npublic partial class ExcludeRefreshRatesWindow\n{\n    private readonly RefreshRateFeature _feature = IoCContainer.Resolve<RefreshRateFeature>();\n    private readonly ApplicationSettings _settings = IoCContainer.Resolve<ApplicationSettings>();\n\n    public ExcludeRefreshRatesWindow()\n    {\n        InitializeComponent();\n\n        IsVisibleChanged += PickProcessesWindow_IsVisibleChanged;\n    }\n\n    private async void PickProcessesWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private async Task RefreshAsync()\n    {\n        _loader.IsLoading = true;\n\n        var loadingTask = Task.Delay(500);\n\n        var refreshRates = await _feature.GetAllStatesAsync();\n        var excluded = _settings.Store.ExcludedRefreshRates;\n\n        if (refreshRates.IsEmpty())\n        {\n            await Task.Delay(500);\n\n            var result = await MessageBoxHelper.ShowAsync(this,\n                Resource.ExcludeRefreshRatesWindow_NoRefreshRatesFound_Title,\n                Resource.ExcludeRefreshRatesWindow_NoRefreshRatesFound_Message,\n                Resource.TryAgain,\n                Resource.Cancel);\n\n            if (result)\n                await RefreshAsync();\n            else\n                Close();\n\n            return;\n        }\n\n        _list.Items.Clear();\n\n        var items = refreshRates\n            .Union(excluded)\n            .Distinct()\n            .OrderBy(rr => rr.Frequency);\n\n        foreach (var refreshRate in items)\n        {\n            var item = new ListItem(refreshRate)\n            {\n                IsChecked = !excluded.Contains(refreshRate)\n            };\n            _list.Items.Add(item);\n        }\n\n        await loadingTask;\n\n        _loader.IsLoading = false;\n    }\n\n    private void SaveButton_Click(object sender, RoutedEventArgs e)\n    {\n        var excludedRefreshRates = _list.Items.OfType<ListItem>()\n            .Where(li => !li.IsChecked)\n            .Select(li => li.RefreshRate);\n\n        _settings.Store.ExcludedRefreshRates.Clear();\n        _settings.Store.ExcludedRefreshRates.AddRange(excludedRefreshRates);\n        _settings.SynchronizeStore();\n\n        Close();\n    }\n\n    private void CancelButton_Click(object sender, RoutedEventArgs e)\n    {\n        Close();\n    }\n\n    private class ListItem : UserControl\n    {\n        private readonly Grid _grid = new()\n        {\n            Margin = new(8, 4, 0, 16),\n            ColumnDefinitions =\n            {\n                new() { Width = new(32, GridUnitType.Pixel) },\n                new() { Width = new(1, GridUnitType.Star) },\n            },\n        };\n\n        private readonly CheckBox _checkBox = new();\n\n        private readonly TextBlock _nameTextBox = new()\n        {\n            FlowDirection = FlowDirection.LeftToRight,\n            HorizontalAlignment = HorizontalAlignment.Left,\n            VerticalAlignment = VerticalAlignment.Center,\n        };\n\n        public RefreshRate RefreshRate { get; }\n\n        public bool IsChecked\n        {\n            get => _checkBox.IsChecked ?? false;\n            set => _checkBox.IsChecked = value;\n        }\n\n        public ListItem(RefreshRate refreshRate)\n        {\n            RefreshRate = refreshRate;\n\n            InitializeComponent();\n        }\n\n        private void InitializeComponent()\n        {\n            _nameTextBox.Text = RefreshRate.DisplayName;\n\n            Grid.SetColumn(_checkBox, 0);\n            Grid.SetColumn(_nameTextBox, 1);\n\n            _grid.Children.Add(_checkBox);\n            _grid.Children.Add(_nameTextBox);\n\n            AutomationProperties.SetLabeledBy(_checkBox, _nameTextBox);\n\n            Content = _grid;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/NotificationsSettingsWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Settings.NotificationsSettingsWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_Title}\"\n    Height=\"600\"\n    MinWidth=\"500\"\n    MinHeight=\"300\"\n    MaxWidth=\"500\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.NotificationsSettingsWindow_Title}\" />\n        </Grid>\n\n        <wpfui:DynamicScrollViewer Grid.Row=\"1\" Margin=\"12,0,0,0\">\n            <StackPanel Margin=\"0,0,16,0\">\n\n                <custom:CardControl Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_DontShowNotifications_Title}\" Subtitle=\"{x:Static resources:Resource.NotificationsSettingsWindow_DontShowNotifications_Message}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_dontShowNotificationsToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_DontShowNotifications_Title}\"\n                        Click=\"DontShowNotificationsToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationAlwaysOnTop_Title}\" Subtitle=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationAlwaysOnTop_Message}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_notificationAlwaysOnTopToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationAlwaysOnTop_Title}\"\n                        Click=\"NotificationAlwaysOnTopToggle_Click\" />\n                </custom:CardControl>\n                \n                <custom:CardControl Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationOnAllScreens_Title}\" Subtitle=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationOnAllScreens_Message}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_notificationOnAllScreensToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationOnAllScreens_Title}\"\n                        Click=\"NotificationOnAllScreensToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_notificationPositionCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationPosition_Title}\" />\n                    </custom:CardControl.Header>\n                    <ComboBox\n                        x:Name=\"_notificationPositionComboBox\"\n                        MinWidth=\"200\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationPosition_Title}\"\n                        MaxDropDownHeight=\"Auto\"\n                        SelectionChanged=\"NotificationPositionComboBox_SelectionChanged\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_notificationDurationCard\" Margin=\"0,0,0,24\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationDuration_Title}\" />\n                    </custom:CardControl.Header>\n                    <ComboBox\n                        x:Name=\"_notificationDurationComboBox\"\n                        MinWidth=\"200\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_NotificationDuration_Title}\"\n                        MaxDropDownHeight=\"Auto\"\n                        SelectionChanged=\"NotificationDurationComboBox_SelectionChanged\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_updateAvailableCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_Updates_Title}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_updateAvailableToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_Updates_Title}\"\n                        Click=\"UpdateAvailableToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_automationCard\" Margin=\"0,0,0,24\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_Automation}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_automationToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_Automation}\"\n                        Click=\"AutomationToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_capsNumLockCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_CapsAndNumLock}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_capsNumLockToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_CapsAndNumLock}\"\n                        Click=\"CapsNumLockToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_fnLockCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_FnLock}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_fnLockToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_FnLock}\"\n                        Click=\"FnLockToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_touchpadLockCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_TouchpadLock}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_touchpadLockToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_TouchpadLock}\"\n                        Click=\"TouchpadLockToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_smartKeyCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_SmartKey}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_smartKeyToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_SmartKey}\"\n                        Click=\"SmartKeyToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_keyboardBacklightCard\" Margin=\"0,0,0,24\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_KeyboardBacklight}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_keyboardBacklightToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_KeyboardBacklight}\"\n                        Click=\"KeyboardBacklightToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_cameraLockCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_Camera}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_cameraLockToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_Camera}\"\n                        Click=\"CameraLockToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_microphoneCard\" Margin=\"0,0,0,24\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_Microphone}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_microphoneToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_Microphone}\"\n                        Click=\"MicrophoneToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_powerModeCard\" Margin=\"0,0,0,8\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_PowerMode}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_powerModeToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_PowerMode}\"\n                        Click=\"PowerModeToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_refreshRateCard\" Margin=\"0,0,0,24\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_RefreshRate}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_refreshRateToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_RefreshRate}\"\n                        Click=\"RefreshRateToggle_Click\" />\n                </custom:CardControl>\n\n                <custom:CardControl x:Name=\"_acAdapterCard\" Margin=\"0,0,0,24\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.NotificationsSettingsWindow_ACAdapter}\" />\n                    </custom:CardControl.Header>\n                    <wpfui:ToggleSwitch\n                        x:Name=\"_acAdapterToggle\"\n                        Margin=\"0,0,0,8\"\n                        AutomationProperties.Name=\"{x:Static resources:Resource.NotificationsSettingsWindow_ACAdapter}\"\n                        Click=\"ACAdapterToggle_Click\" />\n                </custom:CardControl>\n            </StackPanel>\n        </wpfui:DynamicScrollViewer>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/NotificationsSettingsWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Settings;\n\npublic partial class NotificationsSettingsWindow\n{\n    private readonly ApplicationSettings _settings = IoCContainer.Resolve<ApplicationSettings>();\n\n    private IEnumerable<CardControl> Cards =>\n    [\n        _notificationPositionCard,\n        _notificationDurationCard,\n        _updateAvailableCard,\n        _capsNumLockCard,\n        _fnLockCard,\n        _touchpadLockCard,\n        _keyboardBacklightCard,\n        _cameraLockCard,\n        _microphoneCard,\n        _powerModeCard,\n        _refreshRateCard,\n        _acAdapterCard,\n        _smartKeyCard,\n        _automationCard\n    ];\n\n    public NotificationsSettingsWindow()\n    {\n        InitializeComponent();\n\n        _dontShowNotificationsToggle.IsChecked = _settings.Store.DontShowNotifications;\n        _notificationAlwaysOnTopToggle.IsChecked = _settings.Store.NotificationAlwaysOnTop;\n        _notificationOnAllScreensToggle.IsChecked = _settings.Store.NotificationOnAllScreens;\n\n        _notificationPositionComboBox.SetItems(Enum.GetValues<NotificationPosition>(), _settings.Store.NotificationPosition, v => v.GetDisplayName());\n        _notificationDurationComboBox.SetItems(Enum.GetValues<NotificationDuration>(), _settings.Store.NotificationDuration, v => v.GetDisplayName());\n\n        _updateAvailableToggle.IsChecked = _settings.Store.Notifications.UpdateAvailable;\n        _capsNumLockToggle.IsChecked = _settings.Store.Notifications.CapsNumLock;\n        _fnLockToggle.IsChecked = _settings.Store.Notifications.FnLock;\n        _touchpadLockToggle.IsChecked = _settings.Store.Notifications.TouchpadLock;\n        _keyboardBacklightToggle.IsChecked = _settings.Store.Notifications.KeyboardBacklight;\n        _cameraLockToggle.IsChecked = _settings.Store.Notifications.CameraLock;\n        _microphoneToggle.IsChecked = _settings.Store.Notifications.Microphone;\n        _powerModeToggle.IsChecked = _settings.Store.Notifications.PowerMode;\n        _refreshRateToggle.IsChecked = _settings.Store.Notifications.RefreshRate;\n        _acAdapterToggle.IsChecked = _settings.Store.Notifications.ACAdapter;\n        _smartKeyToggle.IsChecked = _settings.Store.Notifications.SmartKey;\n        _automationToggle.IsChecked = _settings.Store.Notifications.AutomationNotification;\n\n        RefreshCards();\n    }\n\n    private void RefreshCards()\n    {\n        var notificationsDisabled = _dontShowNotificationsToggle.IsChecked ?? false;\n\n        foreach (var card in Cards)\n            card.IsEnabled = !notificationsDisabled;\n    }\n\n    private void DontShowNotificationsToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _dontShowNotificationsToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.DontShowNotifications = state.Value;\n        _settings.SynchronizeStore();\n\n        RefreshCards();\n    }\n\n    private void NotificationAlwaysOnTopToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _notificationAlwaysOnTopToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.NotificationAlwaysOnTop = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void NotificationOnAllScreensToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _notificationOnAllScreensToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.NotificationOnAllScreens = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void NotificationPositionComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (!_notificationPositionComboBox.TryGetSelectedItem(out NotificationPosition state))\n            return;\n\n        _settings.Store.NotificationPosition = state;\n        _settings.SynchronizeStore();\n    }\n\n    private void NotificationDurationComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (!_notificationDurationComboBox.TryGetSelectedItem(out NotificationDuration state))\n            return;\n\n        _settings.Store.NotificationDuration = state;\n        _settings.SynchronizeStore();\n    }\n\n    private void CapsNumLockToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _capsNumLockToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.CapsNumLock = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void FnLockToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _fnLockToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.FnLock = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void TouchpadLockToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _touchpadLockToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.TouchpadLock = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void KeyboardBacklightToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _keyboardBacklightToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.KeyboardBacklight = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void CameraLockToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _cameraLockToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.CameraLock = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void MicrophoneToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _microphoneToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.Microphone = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void PowerModeToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _powerModeToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.PowerMode = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void RefreshRateToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _refreshRateToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.RefreshRate = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void ACAdapterToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _acAdapterToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.ACAdapter = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void SmartKeyToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _smartKeyToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.SmartKey = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void UpdateAvailableToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _updateAvailableToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.UpdateAvailable = state.Value;\n        _settings.SynchronizeStore();\n    }\n\n    private void AutomationToggle_Click(object sender, RoutedEventArgs e)\n    {\n        var state = _automationToggle.IsChecked;\n        if (state is null)\n            return;\n\n        _settings.Store.Notifications.AutomationNotification = state.Value;\n        _settings.SynchronizeStore();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/SelectSmartKeyPipelinesWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Settings.SelectSmartKeyPipelinesWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Width=\"400\"\n    Height=\"500\"\n    MinWidth=\"400\"\n    MinHeight=\"500\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                x:Name=\"_title\"\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\" />\n        </Grid>\n\n        <Grid Grid.Row=\"1\" Margin=\"12,0,16,0\">\n\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"*\" />\n            </Grid.RowDefinitions>\n\n            <custom:CardControl Grid.Row=\"0\" Margin=\"0,0,0,24\">\n                <custom:CardControl.Header>\n                    <controls:CardHeaderControl Title=\"{x:Static resources:Resource.SelectSmartKeyPipelinesWindow_ShowThisApp}\" />\n                </custom:CardControl.Header>\n                <wpfui:ToggleSwitch\n                    x:Name=\"_showThisAppToggle\"\n                    AutomationProperties.Name=\"{x:Static resources:Resource.SelectSmartKeyPipelinesWindow_ShowThisApp}\"\n                    Click=\"ShowThisAppToggle_Click\" />\n            </custom:CardControl>\n\n            <TextBlock\n                Grid.Row=\"1\"\n                Margin=\"0,0,0,8\"\n                Focusable=\"True\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                Text=\"{x:Static resources:Resource.SelectSmartKeyPipelinesWindow_List_Description}\"\n                TextWrapping=\"Wrap\" />\n\n            <controls:LoadableControl\n                x:Name=\"_loader\"\n                Grid.Row=\"2\"\n                Margin=\"0,0,0,8\"\n                IndicatorVerticalAlignment=\"Center\">\n\n                <Border CornerRadius=\"8\">\n                    <Border.Background>\n                        <SolidColorBrush Color=\"{DynamicResource ControlFillColorDefault}\" />\n                    </Border.Background>\n\n                    <wpfui:DynamicScrollViewer>\n                        <ItemsControl\n                            x:Name=\"_list\"\n                            Margin=\"8,8,16,0\"\n                            HorizontalContentAlignment=\"Stretch\" />\n                    </wpfui:DynamicScrollViewer>\n                </Border>\n\n            </controls:LoadableControl>\n        </Grid>\n\n        <Grid Grid.Row=\"2\" Margin=\"12\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:Button\n                Grid.Column=\"1\"\n                MinWidth=\"100\"\n                Appearance=\"Primary\"\n                Click=\"SaveButton_Click\"\n                Content=\"{x:Static resources:Resource.Save}\" />\n\n            <wpfui:Button\n                Grid.Column=\"2\"\n                MinWidth=\"100\"\n                Margin=\"8,0,0,0\"\n                Click=\"CancelButton_Click\"\n                Content=\"{x:Static resources:Resource.Cancel}\" />\n        </Grid>\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/SelectSmartKeyPipelinesWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Automation;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Automation;\nusing LenovoLegionToolkit.Lib.Automation.Pipeline;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.WPF.Resources;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Settings;\n\npublic partial class SelectSmartKeyPipelinesWindow\n{\n    private readonly AutomationProcessor _automationProcessor = IoCContainer.Resolve<AutomationProcessor>();\n    private readonly ApplicationSettings _settings = IoCContainer.Resolve<ApplicationSettings>();\n\n    private readonly bool _isDoublePress;\n\n    private Guid? SettingsStoreGuid\n    {\n        get => _isDoublePress ? _settings.Store.SmartKeyDoublePressActionId : _settings.Store.SmartKeySinglePressActionId;\n        set\n        {\n            if (_isDoublePress)\n                _settings.Store.SmartKeyDoublePressActionId = value;\n            else\n                _settings.Store.SmartKeySinglePressActionId = value;\n        }\n    }\n\n    private List<Guid> SettingsStoreList => _isDoublePress ? _settings.Store.SmartKeyDoublePressActionList : _settings.Store.SmartKeySinglePressActionList;\n\n    public SelectSmartKeyPipelinesWindow(bool isDoublePress = false)\n    {\n        _isDoublePress = isDoublePress;\n\n        InitializeComponent();\n\n        Title = _title.Text = isDoublePress\n            ? Resource.SettingsPage_SmartKeyDoublePressAction_Title\n            : Resource.SettingsPage_SmartKeySinglePressAction_Title;\n\n        IsVisibleChanged += SelectSmartKeyPipelinesWindow_IsVisibleChanged;\n    }\n\n    private async void SelectSmartKeyPipelinesWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private async Task RefreshAsync()\n    {\n        _loader.IsLoading = true;\n\n        _showThisAppToggle.IsChecked = SettingsStoreGuid is null;\n\n        var allPipelines = await _automationProcessor.GetPipelinesAsync();\n        var pipelines = allPipelines.Where(p => p.Trigger is null).OrderBy(p => p.Name).ToArray();\n\n        _list.Items.Clear();\n\n        if (pipelines.IsEmpty())\n            _list.Items.Add(Resource.SelectSmartKeyPipelinesWindow_List_Empty);\n\n        foreach (var pipeline in pipelines)\n        {\n            var item = new ListItem(pipeline)\n            {\n                IsChecked = SettingsStoreList.Exists(x => x == pipeline.Id) || pipeline.Id == SettingsStoreGuid\n            };\n            _list.Items.Add(item);\n        }\n\n        EnableListIfPossible();\n\n        _loader.IsLoading = false;\n    }\n\n    private void ShowThisAppToggle_Click(object sender, RoutedEventArgs e) => EnableListIfPossible();\n\n    private void EnableListIfPossible() => _list.IsEnabled = !(_showThisAppToggle.IsChecked ?? false);\n\n    private void SaveButton_Click(object sender, RoutedEventArgs e)\n    {\n        var selectedPipelines = _list.Items.OfType<ListItem>()\n            .Where(li => li.IsChecked)\n            .Select(li => li.Pipeline.Id)\n            .ToArray();\n\n        SettingsStoreList.Clear();\n\n        if (_showThisAppToggle.IsChecked ?? false)\n            SettingsStoreGuid = null;\n        else\n        {\n            SettingsStoreList.AddRange(selectedPipelines);\n            SettingsStoreGuid = SettingsStoreList.FirstOrDefault();\n        }\n\n        _settings.SynchronizeStore();\n\n        Close();\n    }\n\n    private void CancelButton_Click(object sender, RoutedEventArgs e)\n    {\n        Close();\n    }\n\n    private class ListItem : UserControl\n    {\n        private readonly Grid _grid = new()\n        {\n            Margin = new(8, 4, 0, 16),\n            ColumnDefinitions =\n            {\n                new() { Width = new(32, GridUnitType.Pixel) },\n                new() { Width = new(1, GridUnitType.Star) },\n            },\n        };\n\n        private readonly CheckBox _checkBox = new();\n\n        private readonly TextBlock _nameTextBox = new()\n        {\n            TextAlignment = TextAlignment.Left,\n            VerticalAlignment = VerticalAlignment.Center,\n        };\n\n        public AutomationPipeline Pipeline { get; }\n\n        public bool IsChecked\n        {\n            get => _checkBox.IsChecked ?? false;\n            set => _checkBox.IsChecked = value;\n        }\n\n        public ListItem(AutomationPipeline pipeline)\n        {\n            Pipeline = pipeline;\n\n            InitializeComponent();\n        }\n\n        private void InitializeComponent()\n        {\n            _nameTextBox.Text = Pipeline.Name;\n\n            Grid.SetColumn(_checkBox, 0);\n            Grid.SetColumn(_nameTextBox, 1);\n\n            _grid.Children.Add(_checkBox);\n            _grid.Children.Add(_nameTextBox);\n\n            AutomationProperties.SetLabeledBy(_checkBox, _nameTextBox);\n\n            Content = _grid;\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/WindowsPowerModesWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Settings.WindowsPowerModesWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:resourcesLib=\"clr-namespace:LenovoLegionToolkit.Lib.Resources;assembly=LenovoLegionToolkit.Lib\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.WindowsPowerModesWindow_Title}\"\n    Width=\"600\"\n    MinWidth=\"500\"\n    MaxWidth=\"800\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    SizeToContent=\"Height\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.WindowsPowerModesWindow_Title}\" />\n\n        </Grid>\n\n        <controls:LoadableControl\n            x:Name=\"_loader\"\n            Grid.Row=\"1\"\n            Margin=\"12,0,0,0\"\n            IndicatorVerticalAlignment=\"Center\">\n\n            <wpfui:DynamicScrollViewer>\n                <StackPanel Margin=\"0,0,16,0\">\n\n                    <custom:CardControl Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resourcesLib:Resource.PowerModeState_Quiet}\" />\n                        </custom:CardControl.Header>\n                        <ComboBox\n                            x:Name=\"_quietModeComboBox\"\n                            MinWidth=\"200\"\n                            Margin=\"0,0,0,8\"\n                            AutomationProperties.Name=\"{x:Static resourcesLib:Resource.PowerModeState_Quiet}\"\n                            MaxDropDownHeight=\"Auto\"\n                            SelectionChanged=\"QuietModeComboBox_SelectionChanged\" />\n                    </custom:CardControl>\n\n                    <custom:CardControl Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resourcesLib:Resource.PowerModeState_Balance}\" />\n                        </custom:CardControl.Header>\n                        <ComboBox\n                            x:Name=\"_balanceModeComboBox\"\n                            MinWidth=\"200\"\n                            Margin=\"0,0,0,8\"\n                            AutomationProperties.Name=\"{x:Static resourcesLib:Resource.PowerModeState_Balance}\"\n                            MaxDropDownHeight=\"Auto\"\n                            SelectionChanged=\"BalanceModeComboBox_SelectionChanged\" />\n                    </custom:CardControl>\n\n                    <custom:CardControl Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resourcesLib:Resource.PowerModeState_Performance}\" />\n                        </custom:CardControl.Header>\n                        <ComboBox\n                            x:Name=\"_performanceModeComboBox\"\n                            MinWidth=\"200\"\n                            Margin=\"0,0,0,8\"\n                            AutomationProperties.Name=\"{x:Static resourcesLib:Resource.PowerModeState_Performance}\"\n                            MaxDropDownHeight=\"Auto\"\n                            SelectionChanged=\"PerformanceModeComboBox_SelectionChanged\" />\n                    </custom:CardControl>\n\n                    <custom:CardControl x:Name=\"_godModeCardControl\" Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resourcesLib:Resource.PowerModeState_GodMode}\" />\n                        </custom:CardControl.Header>\n                        <ComboBox\n                            x:Name=\"_godModeComboBox\"\n                            MinWidth=\"200\"\n                            Margin=\"0,0,0,8\"\n                            AutomationProperties.Name=\"{x:Static resourcesLib:Resource.PowerModeState_GodMode}\"\n                            MaxDropDownHeight=\"Auto\"\n                            SelectionChanged=\"GodModeComboBox_SelectionChanged\" />\n                    </custom:CardControl>\n\n                </StackPanel>\n            </wpfui:DynamicScrollViewer>\n\n        </controls:LoadableControl>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/WindowsPowerModesWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.WPF.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Settings;\n\npublic partial class WindowsPowerModesWindow\n{\n    private readonly PowerModeFeature _powerModeFeature = IoCContainer.Resolve<PowerModeFeature>();\n    private readonly ApplicationSettings _settings = IoCContainer.Resolve<ApplicationSettings>();\n\n    private bool IsRefreshing => _loader.IsLoading;\n\n    public WindowsPowerModesWindow()\n    {\n        InitializeComponent();\n\n        IsVisibleChanged += PowerModesWindow_IsVisibleChanged;\n    }\n\n    private async void PowerModesWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private async Task RefreshAsync()\n    {\n        _loader.IsLoading = true;\n\n        var loadingTask = Task.Delay(500);\n\n        var powerModes = Enum.GetValues<WindowsPowerMode>();\n        Refresh(_quietModeComboBox, powerModes, PowerModeState.Quiet);\n        Refresh(_balanceModeComboBox, powerModes, PowerModeState.Balance);\n        Refresh(_performanceModeComboBox, powerModes, PowerModeState.Performance);\n\n        var allStates = await _powerModeFeature.GetAllStatesAsync();\n        if (allStates.Contains(PowerModeState.GodMode))\n            Refresh(_godModeComboBox, powerModes, PowerModeState.GodMode);\n        else\n            _godModeCardControl.Visibility = Visibility.Collapsed;\n\n        await loadingTask;\n\n        _loader.IsLoading = false;\n    }\n\n    private void Refresh(ComboBox comboBox, WindowsPowerMode[] windowsPowerPlans, PowerModeState powerModeState)\n    {\n        var selectedValue = _settings.Store.PowerModes.GetValueOrDefault(powerModeState, WindowsPowerMode.Balanced);\n        comboBox.SetItems(windowsPowerPlans, selectedValue, pm => pm.GetDisplayName());\n    }\n\n    private async Task WindowsPowerModeChangedAsync(WindowsPowerMode windowsPowerMode, PowerModeState powerModeState)\n    {\n        if (IsRefreshing)\n            return;\n\n        _settings.Store.PowerModes[powerModeState] = windowsPowerMode;\n        _settings.SynchronizeStore();\n\n        await _powerModeFeature.EnsureCorrectWindowsPowerSettingsAreSetAsync();\n    }\n\n    private async void QuietModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_quietModeComboBox.TryGetSelectedItem(out WindowsPowerMode windowsPowerMode))\n            await WindowsPowerModeChangedAsync(windowsPowerMode, PowerModeState.Quiet);\n    }\n\n    private async void BalanceModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_balanceModeComboBox.TryGetSelectedItem(out WindowsPowerMode windowsPowerMode))\n            await WindowsPowerModeChangedAsync(windowsPowerMode, PowerModeState.Balance);\n    }\n\n    private async void PerformanceModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_performanceModeComboBox.TryGetSelectedItem(out WindowsPowerMode windowsPowerMode))\n            await WindowsPowerModeChangedAsync(windowsPowerMode, PowerModeState.Performance);\n    }\n\n    private async void GodModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_godModeComboBox.TryGetSelectedItem(out WindowsPowerMode windowsPowerMode))\n            await WindowsPowerModeChangedAsync(windowsPowerMode, PowerModeState.GodMode);\n    }\n}"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/WindowsPowerPlansWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Settings.WindowsPowerPlansWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:resourcesLib=\"clr-namespace:LenovoLegionToolkit.Lib.Resources;assembly=LenovoLegionToolkit.Lib\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.WindowsPowerPlansWindow_Title}\"\n    Width=\"600\"\n    MinWidth=\"500\"\n    MaxWidth=\"800\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    SizeToContent=\"Height\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.WindowsPowerPlansWindow_Title}\" />\n\n        </Grid>\n\n        <controls:LoadableControl\n            x:Name=\"_loader\"\n            Grid.Row=\"1\"\n            Margin=\"12,0,0,0\"\n            IndicatorVerticalAlignment=\"Center\">\n\n            <wpfui:DynamicScrollViewer>\n                <StackPanel Margin=\"0,0,16,0\">\n\n                    <custom:CardControl\n                        x:Name=\"_aoAcWarningCard\"\n                        Margin=\"0,0,0,24\"\n                        Icon=\"Warning24\"\n                        Visibility=\"Collapsed\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resources:Resource.PowerPlansWindow_AoAcWarning_Title}\" Subtitle=\"{x:Static resources:Resource.PowerPlansWindow_AoAcWarning_Message}\" />\n                        </custom:CardControl.Header>\n                    </custom:CardControl>\n\n                    <custom:CardControl Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resourcesLib:Resource.PowerModeState_Quiet}\" />\n                        </custom:CardControl.Header>\n                        <ComboBox\n                            x:Name=\"_quietModeComboBox\"\n                            MinWidth=\"200\"\n                            Margin=\"0,0,0,8\"\n                            AutomationProperties.Name=\"{x:Static resourcesLib:Resource.PowerModeState_Quiet}\"\n                            MaxDropDownHeight=\"Auto\"\n                            SelectionChanged=\"QuietModeComboBox_SelectionChanged\" />\n                    </custom:CardControl>\n\n                    <custom:CardControl Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resourcesLib:Resource.PowerModeState_Balance}\" />\n                        </custom:CardControl.Header>\n                        <ComboBox\n                            x:Name=\"_balanceModeComboBox\"\n                            MinWidth=\"200\"\n                            Margin=\"0,0,0,8\"\n                            AutomationProperties.Name=\"{x:Static resourcesLib:Resource.PowerModeState_Balance}\"\n                            MaxDropDownHeight=\"Auto\"\n                            SelectionChanged=\"BalanceModeComboBox_SelectionChanged\" />\n                    </custom:CardControl>\n\n                    <custom:CardControl Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resourcesLib:Resource.PowerModeState_Performance}\" />\n                        </custom:CardControl.Header>\n                        <ComboBox\n                            x:Name=\"_performanceModeComboBox\"\n                            MinWidth=\"200\"\n                            Margin=\"0,0,0,8\"\n                            AutomationProperties.Name=\"{x:Static resourcesLib:Resource.PowerModeState_Performance}\"\n                            MaxDropDownHeight=\"Auto\"\n                            SelectionChanged=\"PerformanceModeComboBox_SelectionChanged\" />\n                    </custom:CardControl>\n\n                    <custom:CardControl x:Name=\"_godModeCardControl\" Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resourcesLib:Resource.PowerModeState_GodMode}\" />\n                        </custom:CardControl.Header>\n                        <ComboBox\n                            x:Name=\"_godModeComboBox\"\n                            MinWidth=\"200\"\n                            Margin=\"0,0,0,8\"\n                            AutomationProperties.Name=\"{x:Static resourcesLib:Resource.PowerModeState_GodMode}\"\n                            MaxDropDownHeight=\"Auto\"\n                            SelectionChanged=\"GodModeComboBox_SelectionChanged\" />\n                    </custom:CardControl>\n\n                </StackPanel>\n            </wpfui:DynamicScrollViewer>\n\n        </controls:LoadableControl>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Settings/WindowsPowerPlansWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.Settings;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Settings;\n\npublic partial class WindowsPowerPlansWindow\n{\n    private static readonly WindowsPowerPlan DefaultValue = new(Guid.Empty, Resource.WindowsPowerPlansWindow_DefaultPowerPlan, false);\n\n    private readonly WindowsPowerPlanController _windowsPowerPlanController = IoCContainer.Resolve<WindowsPowerPlanController>();\n    private readonly PowerModeFeature _powerModeFeature = IoCContainer.Resolve<PowerModeFeature>();\n    private readonly ApplicationSettings _settings = IoCContainer.Resolve<ApplicationSettings>();\n\n    private bool IsRefreshing => _loader.IsLoading;\n\n    public WindowsPowerPlansWindow()\n    {\n        InitializeComponent();\n\n        IsVisibleChanged += PowerPlansWindow_IsVisibleChanged;\n    }\n\n    private async void PowerPlansWindow_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)\n    {\n        if (IsVisible)\n            await RefreshAsync();\n    }\n\n    private async Task RefreshAsync()\n    {\n        _loader.IsLoading = true;\n\n        var loadingTask = Task.Delay(500);\n\n        var compatibility = await Compatibility.GetMachineInformationAsync();\n        _aoAcWarningCard.Visibility = compatibility.Properties.SupportsAlwaysOnAc.status\n            ? Visibility.Visible\n            : Visibility.Collapsed;\n\n        var powerPlans = _windowsPowerPlanController.GetPowerPlans().OrderBy(x => x.Name).Prepend(DefaultValue).ToArray();\n        Refresh(_quietModeComboBox, powerPlans, PowerModeState.Quiet);\n        Refresh(_balanceModeComboBox, powerPlans, PowerModeState.Balance);\n        Refresh(_performanceModeComboBox, powerPlans, PowerModeState.Performance);\n\n        var allStates = await _powerModeFeature.GetAllStatesAsync();\n        if (allStates.Contains(PowerModeState.GodMode))\n            Refresh(_godModeComboBox, powerPlans, PowerModeState.GodMode);\n        else\n            _godModeCardControl.Visibility = Visibility.Collapsed;\n\n        await loadingTask;\n\n        _loader.IsLoading = false;\n    }\n\n    private void Refresh(ComboBox comboBox, WindowsPowerPlan[] windowsPowerPlans, PowerModeState powerModeState)\n    {\n        var settingsPowerPlanGuid = _settings.Store.PowerPlans.GetValueOrDefault(powerModeState);\n        var selectedValue = windowsPowerPlans.FirstOrDefault(pp => pp.Guid == settingsPowerPlanGuid);\n        comboBox.SetItems(windowsPowerPlans, selectedValue, pp => pp.Name);\n    }\n\n    private async Task WindowsPowerPlanChangedAsync(WindowsPowerPlan windowsPowerPlan, PowerModeState powerModeState)\n    {\n        if (IsRefreshing)\n            return;\n\n        _settings.Store.PowerPlans[powerModeState] = windowsPowerPlan.Guid;\n        _settings.SynchronizeStore();\n\n        await _powerModeFeature.EnsureCorrectWindowsPowerSettingsAreSetAsync();\n    }\n\n    private async void QuietModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_quietModeComboBox.TryGetSelectedItem(out WindowsPowerPlan windowsPowerPlan))\n            await WindowsPowerPlanChangedAsync(windowsPowerPlan, PowerModeState.Quiet);\n    }\n\n    private async void BalanceModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_balanceModeComboBox.TryGetSelectedItem(out WindowsPowerPlan windowsPowerPlan))\n            await WindowsPowerPlanChangedAsync(windowsPowerPlan, PowerModeState.Balance);\n    }\n\n    private async void PerformanceModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_performanceModeComboBox.TryGetSelectedItem(out WindowsPowerPlan windowsPowerPlan))\n            await WindowsPowerPlanChangedAsync(windowsPowerPlan, PowerModeState.Performance);\n    }\n\n    private async void GodModeComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)\n    {\n        if (_godModeComboBox.TryGetSelectedItem(out WindowsPowerPlan windowsPowerPlan))\n            await WindowsPowerPlanChangedAsync(windowsPowerPlan, PowerModeState.GodMode);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/DeviceInformationWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Utils.DeviceInformationWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:controls=\"clr-namespace:LenovoLegionToolkit.WPF.Controls\"\n    xmlns:custom=\"clr-namespace:LenovoLegionToolkit.WPF.Controls.Custom\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.DeviceInformationWindow_Title}\"\n    Width=\"500\"\n    ExtendsContentIntoTitleBar=\"True\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Loaded=\"DeviceInformationWindow_Loaded\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    SizeToContent=\"Height\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.DeviceInformationWindow_Title}\" />\n\n        </Grid>\n\n        <wpfui:DynamicScrollViewer Grid.Row=\"1\">\n            <StackPanel Margin=\"16,0,16,12\">\n\n                <TextBlock\n                    Margin=\"0,16,0,24\"\n                    Focusable=\"True\"\n                    FontSize=\"24\"\n                    FontWeight=\"Medium\"\n                    Text=\"{x:Static resources:Resource.DeviceInformationWindow_Device_Title}\" />\n\n                <custom:CardControl Margin=\"0,0,0,8\" Click=\"DeviceCardControl_Click\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.DeviceInformationWindow_Manufacturer_Title}\" />\n                    </custom:CardControl.Header>\n                    <TextBlock x:Name=\"_manufacturerLabel\" Focusable=\"True\" />\n                </custom:CardControl>\n\n                <custom:CardControl Margin=\"0,0,0,8\" Click=\"DeviceCardControl_Click\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.DeviceInformationWindow_Model_Title}\" />\n                    </custom:CardControl.Header>\n                    <TextBlock x:Name=\"_modelLabel\" Focusable=\"True\" />\n                </custom:CardControl>\n\n                <custom:CardControl Margin=\"0,0,0,8\" Click=\"DeviceCardControl_Click\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.DeviceInformationWindow_MachineType_Title}\" />\n                    </custom:CardControl.Header>\n                    <TextBlock x:Name=\"_mtmLabel\" Focusable=\"True\" />\n                </custom:CardControl>\n                <custom:CardControl Margin=\"0,0,0,8\" Click=\"DeviceCardControl_Click\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.DeviceInformationWindow_SerialNumber_Title}\" />\n                    </custom:CardControl.Header>\n                    <TextBlock x:Name=\"_serialNumberLabel\" Focusable=\"True\" />\n                </custom:CardControl>\n\n                <custom:CardControl Margin=\"0,0,0,8\" Click=\"DeviceCardControl_Click\">\n                    <custom:CardControl.Header>\n                        <controls:CardHeaderControl Title=\"{x:Static resources:Resource.DeviceInformationWindow_BiosVersion_Title}\" />\n                    </custom:CardControl.Header>\n                    <TextBlock x:Name=\"_biosLabel\" Focusable=\"True\" />\n                </custom:CardControl>\n\n                <StackPanel x:Name=\"_warrantyInfo\" Visibility=\"Hidden\">\n                    <Grid Margin=\"0,16,0,24\">\n\n                        <Grid.ColumnDefinitions>\n                            <ColumnDefinition Width=\"*\" />\n                            <ColumnDefinition Width=\"Auto\" />\n                        </Grid.ColumnDefinitions>\n\n                        <TextBlock\n                            Grid.Column=\"0\"\n                            Focusable=\"True\"\n                            FontSize=\"24\"\n                            FontWeight=\"Medium\"\n                            Text=\"{x:Static resources:Resource.DeviceInformationWindow_Warranty_Title}\" />\n                        <wpfui:Button\n                            x:Name=\"_refreshWarrantyButton\"\n                            Grid.Column=\"1\"\n                            Click=\"RefreshWarrantyButton_OnClick\"\n                            Icon=\"ArrowClockwise32\"\n                            ToolTip=\"{x:Static resources:Resource.DeviceInformationWindow_Refresh}\" />\n                    </Grid>\n\n                    <custom:CardControl Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resources:Resource.DeviceInformationWindow_WarrantyStartDate_Title}\" />\n                        </custom:CardControl.Header>\n                        <TextBlock\n                            x:Name=\"_warrantyStartLabel\"\n                            Focusable=\"True\"\n                            Text=\"-\" />\n                    </custom:CardControl>\n\n                    <custom:CardControl Margin=\"0,0,0,8\">\n                        <custom:CardControl.Header>\n                            <controls:CardHeaderControl Title=\"{x:Static resources:Resource.DeviceInformationWindow_WarrantyEndDate_Title}\" />\n                        </custom:CardControl.Header>\n                        <TextBlock\n                            x:Name=\"_warrantyEndLabel\"\n                            Focusable=\"True\"\n                            Text=\"-\" />\n                    </custom:CardControl>\n\n\n                    <custom:CardAction\n                        x:Name=\"_warrantyLinkCardAction\"\n                        Margin=\"0,8,0,8\"\n                        Click=\"WarrantyLinkCardAction_OnClick\"\n                        Content=\"{x:Static resources:Resource.DeviceInformationWindow_LenovoSupport}\"\n                        Icon=\"Open24\"\n                        IsChevronVisible=\"False\"\n                        IsEnabled=\"False\" />\n                </StackPanel>\n\n            </StackPanel>\n\n        </wpfui:DynamicScrollViewer>\n\n        <wpfui:Snackbar\n            x:Name=\"_snackBar\"\n            Grid.Row=\"1\"\n            HorizontalAlignment=\"Center\"\n            CloseButtonEnabled=\"False\"\n            Icon=\"Checkmark24\"\n            Timeout=\"1000\" />\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/DeviceInformationWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic partial class DeviceInformationWindow\n{\n    private readonly WarrantyChecker _warrantyChecker = IoCContainer.Resolve<WarrantyChecker>();\n\n    public DeviceInformationWindow() => InitializeComponent();\n\n    private async void DeviceInformationWindow_Loaded(object sender, RoutedEventArgs e) => await RefreshAsync();\n\n    private async Task RefreshAsync(bool forceRefresh = false)\n    {\n        var mi = await Compatibility.GetMachineInformationAsync();\n\n        _manufacturerLabel.Text = mi.Vendor;\n        _modelLabel.Text = mi.Model;\n        _mtmLabel.Text = mi.MachineType;\n        _serialNumberLabel.Text = mi.SerialNumber;\n        _biosLabel.Text = mi.BiosVersionRaw;\n\n        try\n        {\n            _refreshWarrantyButton.IsEnabled = false;\n\n            _warrantyStartLabel.Text = \"-\";\n            _warrantyEndLabel.Text = \"-\";\n            _warrantyLinkCardAction.Tag = null;\n            _warrantyLinkCardAction.IsEnabled = false;\n\n            var warrantyInfo = await _warrantyChecker.GetWarrantyInfo(mi, forceRefresh);\n\n            if (!warrantyInfo.HasValue)\n                return;\n\n            _warrantyStartLabel.Text = warrantyInfo.Value.Start is not null ? warrantyInfo.Value.Start?.ToString(LocalizationHelper.ShortDateFormat) : \"-\";\n            _warrantyEndLabel.Text = warrantyInfo.Value.End is not null ? warrantyInfo.Value.End?.ToString(LocalizationHelper.ShortDateFormat) : \"-\";\n            _warrantyLinkCardAction.Tag = warrantyInfo.Value.Link;\n            _warrantyLinkCardAction.IsEnabled = true;\n            _warrantyInfo.Visibility = Visibility.Visible;\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't load warranty info.\", ex);\n        }\n        finally\n        {\n            _refreshWarrantyButton.IsEnabled = true;\n        }\n    }\n\n    private async void RefreshWarrantyButton_OnClick(object sender, RoutedEventArgs e) => await RefreshAsync(true);\n\n    private async void DeviceCardControl_Click(object sender, RoutedEventArgs e)\n    {\n        if (((sender as CardControl)?.Content as TextBlock)?.Text is not { } str)\n            return;\n\n        try\n        {\n            Clipboard.SetText(str);\n            await _snackBar.ShowAsync(Resource.CopiedToClipboard_Title, string.Format(Resource.CopiedToClipboard_Message_WithParam, str));\n        }\n        catch (Exception ex)\n        {\n            if (Log.Instance.IsTraceEnabled)\n                Log.Instance.Trace($\"Couldn't copy to clipboard\", ex);\n        }\n    }\n\n    private void WarrantyLinkCardAction_OnClick(object sender, RoutedEventArgs e)\n    {\n        var link = _warrantyLinkCardAction.Tag as Uri;\n        link?.Open();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/INotificationWindow.cs",
    "content": "﻿namespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic interface INotificationWindow\n{\n    public void Show(int closeAfter);\n    public void Close(bool immediate);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/LanguageSelectorWindow.xaml",
    "content": "﻿<wpfui:UiWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Utils.LanguageSelectorWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"Lenovo Legion Toolkit\"\n    MinWidth=\"450\"\n    MinHeight=\"220\"\n    MaxWidth=\"450\"\n    MaxHeight=\"220\"\n    Closed=\"LanguageSelectorWindow_OnClosed\"\n    ExtendsContentIntoTitleBar=\"True\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    ResizeMode=\"NoResize\"\n    Topmost=\"True\"\n    WindowStartupLocation=\"CenterScreen\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Title=\"Lenovo Legion Toolkit\"\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid Grid.Row=\"1\" Margin=\"16\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n\n            <StackPanel\n                Grid.Row=\"0\"\n                Grid.Column=\"0\"\n                Margin=\"0,0,16,0\">\n                <wpfui:SymbolIcon FontSize=\"56\" Symbol=\"LocalLanguage24\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"0\" Grid.Column=\"1\">\n\n                <TextBlock\n                    Margin=\"0,0,0,16\"\n                    Focusable=\"True\"\n                    FontWeight=\"Medium\"\n                    Text=\"Select language\"\n                    TextWrapping=\"Wrap\" />\n\n                <ComboBox x:Name=\"_languageComboBox\" MaxDropDownHeight=\"Auto\" />\n\n            </StackPanel>\n\n            <Grid\n                Grid.Row=\"1\"\n                Grid.Column=\"0\"\n                Grid.ColumnSpan=\"2\"\n                Margin=\"0,16,0,0\"\n                HorizontalAlignment=\"Center\">\n\n                <wpfui:Button\n                    Grid.Column=\"0\"\n                    MinWidth=\"120\"\n                    Appearance=\"Primary\"\n                    Click=\"OK_Click\"\n                    Content=\"OK\" />\n            </Grid>\n        </Grid>\n    </Grid>\n\n</wpfui:UiWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/LanguageSelectorWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing Humanizer;\nusing LenovoLegionToolkit.WPF.Extensions;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic partial class LanguageSelectorWindow\n{\n    private readonly TaskCompletionSource<CultureInfo?> _taskCompletionSource = new();\n\n    public Task<CultureInfo?> ShouldContinue => _taskCompletionSource.Task;\n\n    public LanguageSelectorWindow(IEnumerable<CultureInfo> languages, CultureInfo defaultLanguage)\n    {\n        InitializeComponent();\n\n        _languageComboBox.SetItems(languages.OrderBy(ci => ci.Name, StringComparer.InvariantCultureIgnoreCase),\n            defaultLanguage,\n            cc => cc.NativeName.Transform(cc, To.TitleCase));\n    }\n\n    private void LanguageSelectorWindow_OnClosed(object? sender, EventArgs e) => _taskCompletionSource.TrySetResult(null);\n\n    private void OK_Click(object sender, RoutedEventArgs e)\n    {\n        _languageComboBox.TryGetSelectedItem(out CultureInfo? cultureInfo);\n        _taskCompletionSource.TrySetResult(cultureInfo);\n        Close();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/NativeLayeredWindow.cs",
    "content": "﻿using System;\nusing System.Drawing;\nusing System.Drawing.Imaging;\nusing System.Runtime.InteropServices;\nusing System.Windows.Forms;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.Graphics.Gdi;\nusing Windows.Win32.UI.WindowsAndMessaging;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic class NativeLayeredWindow : NativeWindow, IDisposable\n{\n    private const int ANIMATION_DURATION_MS = 70;\n    private const int ANIMATION_INTERVAL_MS = 10;\n\n    private readonly Timer _animationTimer = new() { Interval = ANIMATION_INTERVAL_MS };\n\n    private bool _disposed;\n    private Size _size = new(350, 50);\n    private Point _pos = new(50, 50);\n    private int _animationStep;\n    private byte _opacity;\n\n    protected Size Size\n    {\n        get => _size;\n        set\n        {\n            if (Handle != nint.Zero)\n            {\n                UpdateWindowSizePosition(_pos.X, _pos.Y, value.Width, value.Height);\n                PInvoke.GetWindowRect((HWND)Handle, out var rect);\n                _size = new(rect.Width, rect.Height);\n                UpdateLayeredWindow();\n            }\n            else\n            {\n                _size = value;\n            }\n        }\n    }\n\n    public int Width\n    {\n        get => _size.Width;\n        set => _size.Width = value;\n    }\n\n    public int Height\n    {\n        get => _size.Height;\n        set => _size.Height = value;\n    }\n\n    protected Point Position\n    {\n        get => _pos;\n        set\n        {\n            if (Handle != nint.Zero)\n            {\n                UpdateWindowSizePosition(value.X, value.Y, _size.Width, _size.Height);\n                PInvoke.GetWindowRect((HWND)Handle, out var rect);\n                _pos = new(rect.left, rect.top);\n                UpdateLayeredWindow();\n            }\n            else\n            {\n                _pos = value;\n            }\n        }\n    }\n\n    protected NativeLayeredWindow()\n    {\n        _animationTimer.Tick += AnimationTimer_Tick;\n    }\n\n    protected void Show()\n    {\n        if (Handle == nint.Zero)\n            CreateLayeredWindow();\n\n        _opacity = 0;\n        _animationStep = 255 / (ANIMATION_DURATION_MS / ANIMATION_INTERVAL_MS);\n        _animationTimer.Start();\n        PInvoke.ShowWindow((HWND)Handle, SHOW_WINDOW_CMD.SW_SHOWNOACTIVATE);\n    }\n\n    private void Hide(bool immediate)\n    {\n        if (Handle == nint.Zero)\n            return;\n\n        if (immediate)\n        {\n            PInvoke.ShowWindow((HWND)Handle, SHOW_WINDOW_CMD.SW_HIDE);\n            return;\n        }\n\n        _animationStep = -255 / (ANIMATION_DURATION_MS / ANIMATION_INTERVAL_MS);\n        _animationTimer.Start();\n    }\n\n    public void Close(bool immediate)\n    {\n        Hide(immediate);\n        if (immediate)\n        {\n            Dispose();\n        }\n    }\n\n    public void Dispose()\n    {\n        if (!_disposed)\n        {\n            DestroyHandle();\n            _disposed = true;\n        }\n        GC.SuppressFinalize(this);\n    }\n\n    private void CreateLayeredWindow()\n    {\n        const WINDOW_STYLE style = WINDOW_STYLE.WS_POPUP;\n        const WINDOW_EX_STYLE exStyle = WINDOW_EX_STYLE.WS_EX_TOPMOST |\n                                        WINDOW_EX_STYLE.WS_EX_TOOLWINDOW |\n                                        WINDOW_EX_STYLE.WS_EX_LAYERED |\n                                        WINDOW_EX_STYLE.WS_EX_NOACTIVATE |\n                                        WINDOW_EX_STYLE.WS_EX_TRANSPARENT;\n        CreateParams cp = new()\n        {\n            Caption = \"LenovoLegionToolkit-NativeLayeredWindow\",\n            X = Position.X,\n            Y = Position.Y,\n            Height = Size.Height,\n            Width = Size.Width,\n            Parent = nint.Zero,\n            Style = unchecked((int)style),\n            ExStyle = (int)exStyle\n        };\n        CreateHandle(cp);\n        UpdateLayeredWindow();\n    }\n\n    protected virtual void Paint(PaintEventArgs e) { }\n\n    private void UpdateLayeredWindow()\n    {\n        Bitmap bitmap = new(Size.Width, Size.Height, PixelFormat.Format32bppArgb);\n        using var graphics = Graphics.FromImage(bitmap);\n        Rectangle cr = new(0, 0, Size.Width, Size.Height);\n        Paint(new(graphics, cr));\n        var hdcDst = PInvoke.GetDC(HWND.Null);\n        var hdcSrc = PInvoke.CreateCompatibleDC(hdcDst);\n        var hbitmap = bitmap.GetHbitmap(Color.FromArgb(0));\n        var hObject = SelectObject(hdcSrc, hbitmap);\n        SIZE size = new(Size.Width, Size.Height);\n        Point ptDst = new(Position.X, Position.Y);\n        Point ptSrc = new(0, 0);\n        COLORREF colorRef = new(0); // rgbBlack\n        BLENDFUNCTION blend = new()\n        {\n            BlendOp = (byte)PInvoke.AC_SRC_OVER,\n            BlendFlags = 0,\n            SourceConstantAlpha = _opacity,\n            AlphaFormat = (byte)PInvoke.AC_SRC_ALPHA\n        };\n        PInvoke.UpdateLayeredWindow((HWND)Handle, hdcDst, ptDst, size, hdcSrc, ptSrc, colorRef, blend, UPDATE_LAYERED_WINDOW_FLAGS.ULW_ALPHA);\n        SelectObject(hdcSrc, hObject);\n        _ = PInvoke.ReleaseDC(HWND.Null, hdcDst);\n        PInvoke.DeleteObject((HGDIOBJ)hbitmap);\n        PInvoke.DeleteDC(hdcSrc);\n    }\n\n    private void UpdateWindowSizePosition(int x, int y, int width, int height)\n    {\n        if (Position.X == x && Position.Y == y && Size.Width == width && Size.Height == height)\n            return;\n\n        if (Handle != nint.Zero)\n        {\n            SET_WINDOW_POS_FLAGS flags = 0;\n            if (Position.X == x && Position.Y == y)\n                flags |= SET_WINDOW_POS_FLAGS.SWP_NOMOVE;\n            if (Size.Width == width && Size.Height == height)\n                flags |= SET_WINDOW_POS_FLAGS.SWP_NOSIZE;\n\n            PInvoke.SetWindowPos((HWND)Handle, HWND.Null, x, y, width, height, flags);\n        }\n        else\n        {\n            Size = new(width, height);\n            Position = new(x, y);\n        }\n    }\n\n    private void AnimationTimer_Tick(object? sender, EventArgs e)\n    {\n        _opacity = (byte)Math.Clamp(_opacity + _animationStep, 0, 255);\n        UpdateLayeredWindow();\n\n        if (_opacity is not (0 or 255))\n            return;\n        _animationTimer.Stop();\n\n        if (_opacity != 0)\n            return;\n\n        PInvoke.ShowWindow((HWND)Handle, SHOW_WINDOW_CMD.SW_HIDE);\n        Dispose();\n    }\n\n    [DllImport(\"gdi32.dll\", CharSet = CharSet.Auto)]\n    private static extern nint SelectObject(nint hDc, nint hObject);\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/NotificationAoTWindow.cs",
    "content": "﻿using System.Drawing;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Forms;\nusing LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic class NotificationAoTWindow : NativeLayeredWindow, INotificationWindow\n{\n    private readonly Bitmap _bitmap;\n    private readonly ScreenInfo _screenInfo;\n    private readonly NotificationPosition _pos;\n\n    public NotificationAoTWindow(Bitmap bitmap, ScreenInfo screenInfo, NotificationPosition position)\n    {\n        _bitmap = bitmap;\n        _screenInfo = screenInfo;\n        _pos = position;\n        UpdatePosition();\n    }\n\n    public void Show(int closeAfter)\n    {\n        Show();\n        Task.Delay(closeAfter).ContinueWith(_ =>\n        {\n            Close(false);\n        }, TaskScheduler.FromCurrentSynchronizationContext());\n    }\n\n    protected override void Paint(PaintEventArgs e)\n    {\n        e.Graphics.DrawImage(_bitmap, new Rectangle(0, 0, _bitmap.Width, _bitmap.Height));\n    }\n\n    private void UpdatePosition()\n    {\n        var multiplierX = _screenInfo.DpiX / 96d;\n        var multiplierY = _screenInfo.DpiY / 96d;\n        var wa = _screenInfo.WorkArea;\n        Rect workArea = new(wa.Left, wa.Top, wa.Width * multiplierX, wa.Height * multiplierY);\n\n        Size = new(_bitmap.Width, _bitmap.Height);\n\n        const int margin = 16;\n        var marginX = margin * multiplierX;\n        var marginY = margin * multiplierY;\n\n        double left = 0;\n        double top = 0;\n\n        switch (_pos)\n        {\n            case NotificationPosition.BottomRight:\n                left = workArea.Right - Width - marginX;\n                top = workArea.Bottom - Height - marginY;\n                break;\n            case NotificationPosition.BottomCenter:\n                left = workArea.Left + (workArea.Width - Width) / 2;\n                top = workArea.Bottom - Height - marginY;\n                break;\n            case NotificationPosition.BottomLeft:\n                left = workArea.Left + marginX;\n                top = workArea.Bottom - Height - marginY;\n                break;\n            case NotificationPosition.CenterLeft:\n                left = workArea.Left + marginX;\n                top = workArea.Top + (workArea.Height - Height) / 2;\n                break;\n            case NotificationPosition.TopLeft:\n                left = workArea.Left + marginX;\n                top = workArea.Top + marginY;\n                break;\n            case NotificationPosition.TopCenter:\n                left = workArea.Left + (workArea.Width - Width) / 2;\n                top = workArea.Top + marginY;\n                break;\n            case NotificationPosition.TopRight:\n                left = workArea.Right - Width - marginX;\n                top = workArea.Top + marginY;\n                break;\n            case NotificationPosition.CenterRight:\n                left = workArea.Right - Width - marginX;\n                top = workArea.Top + (workArea.Height - Height) / 2;\n                break;\n            case NotificationPosition.Center:\n                left = workArea.Left + (workArea.Width - Width) / 2;\n                top = workArea.Top + (workArea.Height - Height) / 2;\n                break;\n        }\n\n        Position = new((int)left, (int)top);\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/NotificationWindow.cs",
    "content": "﻿using System;\nusing System.Drawing;\nusing System.Drawing.Drawing2D;\nusing System.IO;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing System.Windows.Interop;\nusing System.Windows.Media;\nusing System.Windows.Media.Imaging;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.WPF.Utils;\nusing Windows.Win32;\nusing Windows.Win32.Foundation;\nusing Windows.Win32.UI.WindowsAndMessaging;\nusing Wpf.Ui.Appearance;\nusing Wpf.Ui.Common;\nusing Wpf.Ui.Controls;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic class NotificationWindow : UiWindow, INotificationWindow\n{\n    private readonly ScreenInfo _screenInfo;\n\n    private readonly Grid _mainGrid = new()\n    {\n        ColumnDefinitions =\n        {\n            new() { Width = GridLength.Auto, },\n            new() { Width = new(1, GridUnitType.Star) },\n        },\n        Margin = new(16, 16, 32, 16),\n    };\n\n    private readonly SymbolIcon _symbolIcon = new()\n    {\n        FontSize = 32,\n        Margin = new(0, 0, 16, 0),\n    };\n\n    private readonly SymbolIcon _overlaySymbolIcon = new()\n    {\n        FontSize = 32,\n        Margin = new(0, 0, 16, 0),\n    };\n\n    private readonly Label _textBlock = new()\n    {\n        FontSize = 16,\n        FontWeight = FontWeights.Medium,\n        VerticalContentAlignment = VerticalAlignment.Center,\n    };\n\n    private bool _gettingBitMap;\n\n    public NotificationWindow(SymbolRegular symbol, SymbolRegular? overlaySymbol, Action<SymbolIcon>? symbolTransform, string text, Action? clickAction, ScreenInfo screenInfo, NotificationPosition position)\n    {\n        InitializeStyle();\n        InitializeContent(symbol, overlaySymbol, symbolTransform, text);\n\n        _screenInfo = screenInfo;\n\n        SourceInitialized += (_, _) => InitializePosition(screenInfo.WorkArea, screenInfo.DpiX, screenInfo.DpiY, position);\n        MouseDown += (_, _) =>\n        {\n            Close();\n            clickAction?.Invoke();\n        };\n    }\n\n    public void Show(int closeAfter)\n    {\n        Show();\n        Task.Delay(closeAfter).ContinueWith(_ =>\n        {\n            Close();\n        }, TaskScheduler.FromCurrentSynchronizationContext());\n    }\n\n    public void Close(bool immediate)\n    {\n        WindowStyle = WindowStyle.None;\n        Close();\n    }\n\n    public Bitmap GetBitmapView()\n    {\n        _gettingBitMap = true;\n        Show();\n        Close();\n        _gettingBitMap = false;\n\n        RenderTargetBitmap rtb = new((int)Width, (int)Height, 96, 96, PixelFormats.Pbgra32);\n        rtb.Render(this);\n        var ms = new MemoryStream();\n        var encoder = new BmpBitmapEncoder();\n        encoder.Frames.Add(BitmapFrame.Create(rtb));\n        encoder.Save(ms);\n        using var bitmap = new Bitmap(ms);\n\n        var multiplierX = _screenInfo.DpiX / 96d;\n        var multiplierY = _screenInfo.DpiY / 96d;\n        var newWidth = (int)(bitmap.Width * multiplierX);\n        var newHeight = (int)(bitmap.Height * multiplierY);\n        var resizedBitmap = new Bitmap(newWidth, newHeight);\n        using var graphics = Graphics.FromImage(resizedBitmap);\n        graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;\n        graphics.SmoothingMode = SmoothingMode.AntiAlias;\n\n        var borderPath = GetRoundedRectanglePath(new(0, 0, newWidth, newHeight), 10);\n        var penPath = GetRoundedRectanglePath(new(1, 1, newWidth - 3, newHeight - 3), 10);\n\n        graphics.SetClip(borderPath);\n        graphics.DrawImage(bitmap, 0, 0, newWidth, newHeight);\n        graphics.ResetClip();\n\n        using var pen = new System.Drawing.Pen(System.Drawing.Color.FromArgb(64, 64, 64), 3);\n        graphics.DrawPath(pen, penPath);\n\n        return resizedBitmap;\n    }\n\n    private void InitializeStyle()\n    {\n        WindowStartupLocation = WindowStartupLocation.Manual;\n        ResizeMode = ResizeMode.NoResize;\n        WindowBackdropType = BackgroundType.None;\n\n        Focusable = false;\n        Topmost = true;\n        ExtendsContentIntoTitleBar = true;\n        ShowInTaskbar = false;\n        ShowActivated = false;\n\n        _mainGrid.FlowDirection = LocalizationHelper.Direction;\n        _textBlock.Foreground = (SolidColorBrush)FindResource(\"TextFillColorPrimaryBrush\");\n    }\n\n    private void InitializePosition(Rect workArea, uint dpiX, uint dpiY, NotificationPosition position)\n    {\n        _mainGrid.Measure(new System.Windows.Size(double.PositiveInfinity, 80));\n\n        var multiplierX = dpiX / 96d;\n        var multiplierY = dpiY / 96d;\n        Rect nativeWorkArea = new(workArea.Left, workArea.Top, workArea.Width * multiplierX, workArea.Height * multiplierY);\n\n        Width = MaxWidth = MinWidth = Math.Max(_mainGrid.DesiredSize.Width, 300);\n        Height = MaxHeight = MinHeight = _mainGrid.DesiredSize.Height;\n\n        double nativeLeft = 0;\n        double nativeTop = 0;\n\n        if (_gettingBitMap)\n        {\n            nativeLeft = -1048576;\n            nativeTop = -1048576;\n        }\n        else\n        {\n            var nativeWidth = Width * multiplierX;\n            var nativeHeight = Height * multiplierY;\n\n            const int margin = 16;\n            var nativeMarginX = margin * multiplierX;\n            var nativeMarginY = margin * multiplierY;\n\n            switch (position)\n            {\n                case NotificationPosition.BottomRight:\n                    nativeLeft = nativeWorkArea.Right - nativeWidth - nativeMarginX;\n                    nativeTop = nativeWorkArea.Bottom - nativeHeight - nativeMarginY;\n                    break;\n                case NotificationPosition.BottomCenter:\n                    nativeLeft = nativeWorkArea.Left + (nativeWorkArea.Width - nativeWidth) / 2;\n                    nativeTop = nativeWorkArea.Bottom - nativeHeight - nativeMarginY;\n                    break;\n                case NotificationPosition.BottomLeft:\n                    nativeLeft = nativeWorkArea.Left + nativeMarginX;\n                    nativeTop = nativeWorkArea.Bottom - nativeHeight - nativeMarginY;\n                    break;\n                case NotificationPosition.CenterLeft:\n                    nativeLeft = nativeWorkArea.Left + nativeMarginX;\n                    nativeTop = nativeWorkArea.Top + (nativeWorkArea.Height - nativeHeight) / 2;\n                    break;\n                case NotificationPosition.TopLeft:\n                    nativeLeft = nativeWorkArea.Left + nativeMarginX;\n                    nativeTop = nativeWorkArea.Top + nativeMarginY;\n                    break;\n                case NotificationPosition.TopCenter:\n                    nativeLeft = nativeWorkArea.Left + (nativeWorkArea.Width - nativeWidth) / 2;\n                    nativeTop = nativeWorkArea.Top + nativeMarginY;\n                    break;\n                case NotificationPosition.TopRight:\n                    nativeLeft = nativeWorkArea.Right - nativeWidth - nativeMarginX;\n                    nativeTop = nativeWorkArea.Top + nativeMarginY;\n                    break;\n                case NotificationPosition.CenterRight:\n                    nativeLeft = nativeWorkArea.Right - nativeWidth - nativeMarginX;\n                    nativeTop = nativeWorkArea.Top + (nativeWorkArea.Height - nativeHeight) / 2;\n                    break;\n                case NotificationPosition.Center:\n                    nativeLeft = nativeWorkArea.Left + (nativeWorkArea.Width - nativeWidth) / 2;\n                    nativeTop = nativeWorkArea.Top + (nativeWorkArea.Height - nativeHeight) / 2;\n                    break;\n            }\n        }\n\n        var windowInteropHandler = new WindowInteropHelper(this);\n\n        PInvoke.SetWindowPos((HWND)windowInteropHandler.Handle, HWND.Null, (int)nativeLeft, (int)nativeTop, 0, 0, SET_WINDOW_POS_FLAGS.SWP_NOACTIVATE | SET_WINDOW_POS_FLAGS.SWP_NOSIZE);\n    }\n\n    private void InitializeContent(SymbolRegular symbol, SymbolRegular? overlaySymbol, Action<SymbolIcon>? symbolTransform, string text)\n    {\n        _symbolIcon.Symbol = symbol;\n        _textBlock.Content = text;\n\n        Grid.SetColumn(_symbolIcon, 0);\n        Grid.SetColumn(_textBlock, 1);\n\n        _mainGrid.Children.Add(_symbolIcon);\n        _mainGrid.Children.Add(_textBlock);\n\n        if (overlaySymbol.HasValue)\n        {\n            _overlaySymbolIcon.Symbol = overlaySymbol.Value;\n            Grid.SetColumn(_overlaySymbolIcon, 0);\n            _mainGrid.Children.Add(_overlaySymbolIcon);\n        }\n\n        symbolTransform?.Invoke(_symbolIcon);\n\n        Content = _mainGrid;\n    }\n\n    private GraphicsPath GetRoundedRectanglePath(Rectangle rect, int radius)\n    {\n        var path = new GraphicsPath();\n        int diameter = radius * 2;\n        path.AddArc(rect.X, rect.Y, diameter, diameter, 180, 90);\n        path.AddArc(rect.Right - diameter, rect.Y, diameter, diameter, 270, 90);\n        path.AddArc(rect.Right - diameter, rect.Bottom - diameter, diameter, diameter, 0, 90);\n        path.AddArc(rect.X, rect.Bottom - diameter, diameter, diameter, 90, 90);\n        path.CloseFigure();\n        return path;\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/StatusWindow.xaml",
    "content": "﻿<wpfui:UiWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Utils.StatusWindow\"\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:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:system=\"clr-namespace:System;assembly=System.Runtime\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Width=\"300\"\n    Height=\"100\"\n    MinWidth=\"300\"\n    MinHeight=\"100\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    mc:Ignorable=\"d\">\n    <wpfui:UiWindow.Resources>\n        <system:Double x:Key=\"SymbolFontSize\">24</system:Double>\n        <system:Double x:Key=\"PrimaryFontSize\">14</system:Double>\n        <system:Double x:Key=\"SecondaryFontSize\">14</system:Double>\n        <system:Double x:Key=\"TertiaryFontSize\">12</system:Double>\n    </wpfui:UiWindow.Resources>\n\n    <StackPanel Background=\"{DynamicResource SystemFillColorSolidNeutralBackgroundBrush}\">\n        <TextBlock\n            x:Name=\"_title\"\n            Margin=\"16,16,16,0\"\n            FontSize=\"{StaticResource TertiaryFontSize}\"\n            Foreground=\"{DynamicResource TextFillColorTertiaryBrush}\"\n            Text=\"{x:Static resources:Resource.AppName}\" />\n\n        <Grid Margin=\"16,16,16,0\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <wpfui:SymbolIcon\n                Grid.Column=\"0\"\n                FontSize=\"{StaticResource SymbolFontSize}\"\n                Symbol=\"Gauge24\" />\n            <Label\n                Grid.Row=\"0\"\n                Grid.Column=\"1\"\n                Margin=\"8,0,0,0\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.StatusTrayPopup_PowerMode}\"\n                FontSize=\"{StaticResource PrimaryFontSize}\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            <StackPanel\n                Grid.Row=\"0\"\n                Grid.Column=\"3\"\n                Margin=\"16,0,0,0\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Center\"\n                Orientation=\"Horizontal\">\n                <Ellipse\n                    x:Name=\"_powerModeValueIndicator\"\n                    Width=\"12\"\n                    Height=\"12\"\n                    Margin=\"0,0,0,2\" />\n                <Label\n                    x:Name=\"_powerModeValueLabel\"\n                    Margin=\"8,0,0,0\"\n                    VerticalContentAlignment=\"Center\"\n                    FontSize=\"{StaticResource PrimaryFontSize}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            </StackPanel>\n\n            <Label\n                x:Name=\"_powerModePresetLabel\"\n                Grid.Row=\"1\"\n                Grid.Column=\"1\"\n                Margin=\"8,4,0,0\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.StatusTrayPopup_Preset}\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                Visibility=\"Collapsed\" />\n            <Label\n                x:Name=\"_powerModePresetValueLabel\"\n                Grid.Row=\"1\"\n                Grid.Column=\"3\"\n                Margin=\"16,4,0,0\"\n                HorizontalAlignment=\"Right\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\"\n                Visibility=\"Collapsed\" />\n        </Grid>\n\n        <Grid x:Name=\"_gpuGrid\" Margin=\"16,16,16,0\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <wpfui:SymbolIcon\n                Grid.Row=\"0\"\n                Grid.Column=\"0\"\n                FontSize=\"{StaticResource SymbolFontSize}\"\n                Symbol=\"DeveloperBoard24\" />\n            <Label\n                Grid.Row=\"0\"\n                Grid.Column=\"1\"\n                Margin=\"8,0,0,0\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.StatusTrayPopup_DiscreteGPU}\"\n                FontSize=\"{StaticResource PrimaryFontSize}\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            <StackPanel\n                x:Name=\"_gpuActive\"\n                Grid.Row=\"0\"\n                Grid.Column=\"3\"\n                Margin=\"16,0,0,0\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Center\"\n                Orientation=\"Horizontal\"\n                Visibility=\"Collapsed\">\n                <Ellipse\n                    Width=\"12\"\n                    Height=\"12\"\n                    Margin=\"0,0,0,2\"\n                    Fill=\"#FF8BC34A\" />\n                <Label\n                    Margin=\"8,0,0,0\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.Active}\"\n                    FontSize=\"{StaticResource PrimaryFontSize}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            </StackPanel>\n            <StackPanel\n                x:Name=\"_gpuInactive\"\n                Grid.Row=\"0\"\n                Grid.Column=\"3\"\n                Margin=\"16,0,0,0\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Center\"\n                Orientation=\"Horizontal\"\n                Visibility=\"Collapsed\">\n                <Ellipse\n                    Width=\"12\"\n                    Height=\"12\"\n                    Margin=\"0,0,0,2\"\n                    Fill=\"#F2A541\" />\n                <Label\n                    Margin=\"8,0,0,0\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.Inactive}\"\n                    FontSize=\"{StaticResource PrimaryFontSize}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            </StackPanel>\n            <StackPanel\n                x:Name=\"_gpuPoweredOff\"\n                Grid.Row=\"0\"\n                Grid.Column=\"3\"\n                Margin=\"16,0,0,0\"\n                HorizontalAlignment=\"Right\"\n                VerticalAlignment=\"Center\"\n                Orientation=\"Horizontal\"\n                Visibility=\"Collapsed\">\n                <Ellipse\n                    Width=\"12\"\n                    Height=\"12\"\n                    Margin=\"0,0,0,2\"\n                    Fill=\"#BF360C\" />\n                <Label\n                    Margin=\"8,0,0,0\"\n                    VerticalContentAlignment=\"Center\"\n                    Content=\"{x:Static resources:Resource.PoweredOff}\"\n                    FontSize=\"{StaticResource PrimaryFontSize}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            </StackPanel>\n\n            <Label\n                x:Name=\"_gpuPowerStateValue\"\n                Grid.Row=\"1\"\n                Grid.Column=\"1\"\n                Margin=\"8,4,0,0\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.StatusTrayPopup_PowerState}\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n            <Label\n                x:Name=\"_gpuPowerStateValueLabel\"\n                Grid.Row=\"1\"\n                Grid.Column=\"3\"\n                Margin=\"16,4,0,0\"\n                HorizontalAlignment=\"Right\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n        </Grid>\n\n        <Grid Margin=\"16,16,16,16\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n\n            <wpfui:SymbolIcon\n                x:Name=\"_batteryIcon\"\n                Grid.Row=\"0\"\n                Grid.Column=\"0\"\n                FontSize=\"{StaticResource SymbolFontSize}\"\n                Symbol=\"Battery624\" />\n            <Label\n                Grid.Row=\"0\"\n                Grid.Column=\"1\"\n                Margin=\"8,0,0,0\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.StatusTrayPopup_Battery}\"\n                FontSize=\"{StaticResource PrimaryFontSize}\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n            <Label\n                x:Name=\"_batteryValueLabel\"\n                Grid.Row=\"0\"\n                Grid.Column=\"3\"\n                Margin=\"16,0,0,0\"\n                HorizontalAlignment=\"Right\"\n                VerticalContentAlignment=\"Center\"\n                FlowDirection=\"LeftToRight\"\n                FontSize=\"{StaticResource PrimaryFontSize}\"\n                Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\" />\n\n            <Label\n                Grid.Row=\"1\"\n                Grid.Column=\"1\"\n                Margin=\"8,4,0,0\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.StatusTrayPopup_Mode}\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n            <Label\n                x:Name=\"_batteryModeValueLabel\"\n                Grid.Row=\"1\"\n                Grid.Column=\"3\"\n                Margin=\"16,4,0,0\"\n                HorizontalAlignment=\"Right\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n\n            <Label\n                Grid.Row=\"2\"\n                Grid.Column=\"1\"\n                Margin=\"8,4,0,0\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.StatusTrayPopup_DischargeRate}\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n            <Label\n                x:Name=\"_batteryDischargeValueLabel\"\n                Grid.Row=\"2\"\n                Grid.Column=\"3\"\n                Margin=\"16,4,0,0\"\n                HorizontalAlignment=\"Right\"\n                FlowDirection=\"LeftToRight\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n            <Label\n                Grid.Row=\"3\"\n                Grid.Column=\"1\"\n                Margin=\"8,4,0,0\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.StatusTrayPopup_MinDischargeRate}\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n            <Label\n                x:Name=\"_batteryMinDischargeValueLabel\"\n                Grid.Row=\"3\"\n                Grid.Column=\"3\"\n                Margin=\"16,4,0,0\"\n                HorizontalAlignment=\"Right\"\n                FlowDirection=\"LeftToRight\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n            <Label\n                Grid.Row=\"4\"\n                Grid.Column=\"1\"\n                Margin=\"8,4,0,0\"\n                VerticalContentAlignment=\"Center\"\n                Content=\"{x:Static resources:Resource.StatusTrayPopup_MaxDischargeRate}\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                FontWeight=\"Medium\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n            <Label\n                x:Name=\"_batteryMaxDischargeValueLabel\"\n                Grid.Row=\"4\"\n                Grid.Column=\"3\"\n                Margin=\"16,4,0,0\"\n                HorizontalAlignment=\"Right\"\n                FlowDirection=\"LeftToRight\"\n                FontSize=\"{StaticResource SecondaryFontSize}\"\n                Foreground=\"{DynamicResource TextFillColorSecondaryBrush}\" />\n        </Grid>\n\n        <Border\n            x:Name=\"_updateIndicator\"\n            Padding=\"8,4,8,4\"\n            Background=\"{DynamicResource SystemFillColorSuccessBrush}\"\n            CornerRadius=\"0,0,8,8\"\n            Visibility=\"Collapsed\">\n            <StackPanel HorizontalAlignment=\"Center\" Orientation=\"Horizontal\">\n                <wpfui:SymbolIcon\n                    Margin=\"0,0,4,0\"\n                    FontSize=\"{StaticResource PrimaryFontSize}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n                    Symbol=\"ArrowSync24\" />\n                <TextBlock\n                    FontSize=\"{StaticResource SecondaryFontSize}\"\n                    Foreground=\"{DynamicResource TextFillColorPrimaryBrush}\"\n                    Text=\"{x:Static resources:Resource.StatusTrayPopup_UpdateAvailable}\" />\n            </StackPanel>\n        </Border>\n\n    </StackPanel>\n</wpfui:UiWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/StatusWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Forms;\nusing System.Windows.Media;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Controllers;\nusing LenovoLegionToolkit.Lib.Controllers.GodMode;\nusing LenovoLegionToolkit.Lib.Extensions;\nusing LenovoLegionToolkit.Lib.Features;\nusing LenovoLegionToolkit.Lib.System;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing Wpf.Ui.Appearance;\nusing Wpf.Ui.Common;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic partial class StatusWindow\n{\n    private readonly struct StatusWindowData(\n        PowerModeState? powerModeState,\n        string? godModePresetName,\n        GPUStatus? gpuStatus,\n        BatteryInformation? batteryInformation,\n        BatteryState? batteryState,\n        bool hasUpdate)\n    {\n        public PowerModeState? PowerModeState { get; } = powerModeState;\n        public string? GodModePresetName { get; } = godModePresetName;\n        public GPUStatus? GPUStatus { get; } = gpuStatus;\n        public BatteryInformation? BatteryInformation { get; } = batteryInformation;\n        public BatteryState? BatteryState { get; } = batteryState;\n        public bool HasUpdate { get; } = hasUpdate;\n    }\n\n    public static async Task<StatusWindow> CreateAsync() => new(await GetStatusWindowDataAsync());\n\n    private static async Task<StatusWindowData> GetStatusWindowDataAsync()\n    {\n        var powerModeFeature = IoCContainer.Resolve<PowerModeFeature>();\n        var godModeController = IoCContainer.Resolve<GodModeController>();\n        var gpuController = IoCContainer.Resolve<GPUController>();\n        var batteryFeature = IoCContainer.Resolve<BatteryFeature>();\n        var updateChecker = IoCContainer.Resolve<UpdateChecker>();\n\n        PowerModeState? state = null;\n        string? godModePresetName = null;\n        GPUStatus? gpuStatus = null;\n        BatteryInformation? batteryInformation = null;\n        BatteryState? batteryState = null;\n        var hasUpdate = false;\n\n        try\n        {\n            if (await powerModeFeature.IsSupportedAsync())\n            {\n                state = await powerModeFeature.GetStateAsync();\n\n                if (state == PowerModeState.GodMode)\n                    godModePresetName = await godModeController.GetActivePresetNameAsync();\n            }\n        }\n        catch { /* Ignored */ }\n\n        try\n        {\n            if (gpuController.IsSupported())\n                gpuStatus = await gpuController.RefreshNowAsync();\n\n        }\n        catch { /* Ignored */ }\n\n        try\n        {\n            batteryInformation = Battery.GetBatteryInformation();\n        }\n        catch { /* Ignored */ }\n\n        try\n        {\n            if (await batteryFeature.IsSupportedAsync())\n                batteryState = await batteryFeature.GetStateAsync();\n\n        }\n        catch { /* Ignored */ }\n\n        try\n        {\n            hasUpdate = await updateChecker.CheckAsync(false) is not null;\n        }\n        catch { /* Ignored */ }\n\n        return new(state, godModePresetName, gpuStatus, batteryInformation, batteryState, hasUpdate);\n    }\n\n    private StatusWindow(StatusWindowData data)\n    {\n        InitializeComponent();\n\n        Loaded += StatusWindow_Loaded;\n\n        WindowStyle = WindowStyle.None;\n        WindowStartupLocation = WindowStartupLocation.Manual;\n        WindowBackdropType = BackgroundType.None;\n        ResizeMode = ResizeMode.NoResize;\n        SizeToContent = SizeToContent.WidthAndHeight;\n\n        Focusable = false;\n        Topmost = true;\n        ExtendsContentIntoTitleBar = true;\n        ShowInTaskbar = false;\n        ShowActivated = false;\n\n#if DEBUG\n        _title.Text += \" [DEBUG]\";\n#else\n        var version = System.Reflection.Assembly.GetEntryAssembly()?.GetName().Version;\n        if (version == new Version(0, 0, 1, 0) || version?.Build == 99)\n            _title.Text += \" [BETA]\";\n#endif\n\n        if (Log.Instance.IsTraceEnabled)\n            _title.Text += \" [LOGGING ENABLED]\";\n\n        RefreshPowerMode(data.PowerModeState, data.GodModePresetName);\n        RefreshDiscreteGpu(data.GPUStatus);\n        RefreshBattery(data.BatteryInformation, data.BatteryState);\n        RefreshUpdate(data.HasUpdate);\n    }\n\n    private void StatusWindow_Loaded(object sender, RoutedEventArgs e) => MoveBottomRightEdgeOfWindowToMousePosition();\n\n    private void MoveBottomRightEdgeOfWindowToMousePosition()\n    {\n        var transform = PresentationSource.FromVisual(this)?.CompositionTarget?.TransformFromDevice;\n        if (!transform.HasValue)\n        {\n            Left = 0;\n            Top = 0;\n            return;\n        }\n\n        const double offset = 8;\n\n        var mousePoint = Control.MousePosition;\n        var screenRectangle = Screen.FromPoint(mousePoint).WorkingArea;\n\n        var mouse = transform.Value.Transform(new Point(mousePoint.X, mousePoint.Y));\n        var screen = transform.Value.Transform(new Vector(screenRectangle.Width, screenRectangle.Height));\n\n        if (mouse.X + offset + ActualWidth > screen.X)\n            Left = mouse.X - ActualWidth - offset;\n        else\n            Left = mouse.X + offset;\n\n        if (mouse.Y + offset + ActualHeight > screen.Y)\n            Top = mouse.Y - ActualHeight - offset;\n        else\n            Top = mouse.Y + offset;\n    }\n\n    private void RefreshPowerMode(PowerModeState? powerModeState, string? godModePresetName)\n    {\n        _powerModeValueLabel.Content = powerModeState?.GetDisplayName() ?? \"-\";\n        _powerModeValueIndicator.Fill = powerModeState?.GetSolidColorBrush() ?? new(Colors.Transparent);\n\n        if (powerModeState == PowerModeState.GodMode)\n        {\n            _powerModePresetValueLabel.Content = godModePresetName ?? \"-\";\n\n            _powerModePresetLabel.Visibility = Visibility.Visible;\n            _powerModePresetValueLabel.Visibility = Visibility.Visible;\n        }\n        else\n        {\n            _powerModePresetLabel.Visibility = Visibility.Collapsed;\n            _powerModePresetValueLabel.Visibility = Visibility.Collapsed;\n        }\n    }\n\n    private void RefreshDiscreteGpu(GPUStatus? status)\n    {\n        if (!status.HasValue)\n        {\n            _gpuGrid.Visibility = Visibility.Collapsed;\n            return;\n        }\n\n        if (status.Value.State is GPUState.Active or GPUState.MonitorConnected)\n        {\n            _gpuPowerStateValueLabel.Content = status.Value.PerformanceState ?? \"-\";\n\n            _gpuActive.Visibility = Visibility.Visible;\n            _gpuInactive.Visibility = Visibility.Collapsed;\n            _gpuPoweredOff.Visibility = Visibility.Collapsed;\n            _gpuPowerStateValue.Visibility = Visibility.Visible;\n            _gpuPowerStateValueLabel.Visibility = Visibility.Visible;\n        }\n        else if (status.Value.State is GPUState.PoweredOff)\n        {\n            _gpuPowerStateValueLabel.Content = null;\n\n            _gpuActive.Visibility = Visibility.Collapsed;\n            _gpuInactive.Visibility = Visibility.Collapsed;\n            _gpuPoweredOff.Visibility = Visibility.Visible;\n            _gpuPowerStateValue.Visibility = Visibility.Collapsed;\n            _gpuPowerStateValueLabel.Visibility = Visibility.Collapsed;\n        }\n        else\n        {\n            _gpuPowerStateValueLabel.Content = status.Value.PerformanceState ?? \"-\";\n\n            _gpuActive.Visibility = Visibility.Collapsed;\n            _gpuInactive.Visibility = Visibility.Visible;\n            _gpuPoweredOff.Visibility = Visibility.Collapsed;\n            _gpuPowerStateValue.Visibility = Visibility.Visible;\n            _gpuPowerStateValueLabel.Visibility = Visibility.Visible;\n        }\n\n        _gpuGrid.Visibility = Visibility.Visible;\n    }\n\n    private void RefreshBattery(BatteryInformation? batteryInformation, BatteryState? batteryState)\n    {\n        if (!batteryInformation.HasValue || !batteryState.HasValue)\n        {\n            _batteryIcon.Symbol = SymbolRegular.Battery024;\n            _batteryValueLabel.Content = \"-\";\n            _batteryModeValueLabel.Content = \"-\";\n            _batteryDischargeValueLabel.Content = \"-\";\n            _batteryMinDischargeValueLabel.Content = \"-\";\n            _batteryMaxDischargeValueLabel.Content = \"-\";\n            return;\n        }\n\n        var symbol = (int)Math.Round(batteryInformation.Value.BatteryPercentage / 10.0) switch\n        {\n            10 => SymbolRegular.Battery1024,\n            9 => SymbolRegular.Battery924,\n            8 => SymbolRegular.Battery824,\n            7 => SymbolRegular.Battery724,\n            6 => SymbolRegular.Battery624,\n            5 => SymbolRegular.Battery524,\n            4 => SymbolRegular.Battery424,\n            3 => SymbolRegular.Battery324,\n            2 => SymbolRegular.Battery224,\n            1 => SymbolRegular.Battery124,\n            _ => SymbolRegular.Battery024,\n        };\n\n        if (batteryInformation.Value.IsCharging)\n            symbol = batteryState == BatteryState.Conservation ? SymbolRegular.BatterySaver24 : SymbolRegular.BatteryCharge24;\n\n        if (batteryInformation.Value.IsLowBattery)\n            _batteryValueLabel.SetResourceReference(ForegroundProperty, \"SystemFillColorCautionBrush\");\n\n        _batteryIcon.Symbol = symbol;\n        _batteryValueLabel.Content = $\"{batteryInformation.Value.BatteryPercentage}%\";\n        _batteryModeValueLabel.Content = batteryState.GetDisplayName();\n        _batteryDischargeValueLabel.Content = $\"{batteryInformation.Value.DischargeRate / 1000.0:+0.00;-0.00;0.00} W\";\n        _batteryMinDischargeValueLabel.Content = $\"{batteryInformation.Value.MinDischargeRate / 1000.0:+0.00;-0.00;0.00} W\";\n        _batteryMaxDischargeValueLabel.Content = $\"{batteryInformation.Value.MaxDischargeRate / 1000.0:+0.00;-0.00;0.00} W\";\n    }\n\n    private void RefreshUpdate(bool hasUpdate) => _updateIndicator.Visibility = hasUpdate ? Visibility.Visible : Visibility.Collapsed;\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/SymbolRegularPicker.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Utils.SymbolRegularPicker\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.SymbolRegularPicker_Title}\"\n    Width=\"800\"\n    Height=\"600\"\n    Closing=\"SymbolRegularPicker_Closing\"\n    ExtendsContentIntoTitleBar=\"True\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Loaded=\"SymbolRegularPicker_Loaded\"\n    ResizeMode=\"CanMinimize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n            <RowDefinition Height=\"Auto\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.SymbolRegularPicker_Title}\" />\n        </Grid>\n\n        <wpfui:TextBox\n            x:Name=\"_filterTextBox\"\n            Grid.Row=\"1\"\n            Margin=\"16\"\n            Icon=\"Search24\"\n            PlaceholderEnabled=\"True\"\n            PlaceholderText=\"{x:Static resources:Resource.Filter}\"\n            TextChanged=\"FilterTextBox_TextChanged\" />\n\n        <wpfui:VirtualizingItemsControl\n            x:Name=\"_itemsControl\"\n            Grid.Row=\"2\"\n            Margin=\"4,4,0,0\"\n            CacheLengthUnit=\"Pixel\" />\n\n        <Grid Grid.Row=\"3\" Margin=\"16\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <wpfui:Button\n                Grid.Column=\"1\"\n                MinWidth=\"100\"\n                Margin=\"8,0,0,0\"\n                Click=\"DefaultButton_Click\"\n                Content=\"{x:Static resources:Resource.Default}\" />\n        </Grid>\n\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/SymbolRegularPicker.xaml.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Linq;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing System.Windows.Controls;\nusing LenovoLegionToolkit.Lib.Utils;\nusing Wpf.Ui.Common;\nusing Button = Wpf.Ui.Controls.Button;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic partial class SymbolRegularPicker\n{\n    private readonly ThrottleLastDispatcher _throttleDispatcher = new(TimeSpan.FromMilliseconds(500));\n\n    private readonly TaskCompletionSource<SymbolRegular?> _tcs = new();\n\n    public Task<SymbolRegular?> SymbolRegularTask => _tcs.Task;\n\n    public SymbolRegularPicker()\n    {\n        InitializeComponent();\n    }\n\n    private void SymbolRegularPicker_Loaded(object sender, RoutedEventArgs e) => Refresh();\n\n    private void SymbolRegularPicker_Closing(object? sender, CancelEventArgs e) => _tcs.TrySetCanceled();\n\n    private async void FilterTextBox_TextChanged(object sender, TextChangedEventArgs e) => await _throttleDispatcher.DispatchAsync(() =>\n    {\n        Dispatcher.Invoke(Refresh);\n        return Task.CompletedTask;\n    });\n\n    private void ItemButton_Click(object sender, RoutedEventArgs e)\n    {\n        if (sender is not Button button)\n            return;\n\n        _tcs.TrySetResult(button.Icon);\n        Close();\n    }\n\n    private void DefaultButton_Click(object sender, RoutedEventArgs e)\n    {\n        _tcs.TrySetResult(null);\n        Close();\n    }\n\n    private void Refresh()\n    {\n        _itemsControl.Items.Clear();\n\n        var items = Enum.GetNames<SymbolRegular>()\n                .Where(s => s.EndsWith(\"24\", StringComparison.CurrentCultureIgnoreCase))\n                .Where(s => s.Contains(_filterTextBox.Text, StringComparison.CurrentCultureIgnoreCase))\n                .OrderBy(s => s)\n                .ToArray();\n\n        foreach (var item in items)\n        {\n            var button = new Button()\n            {\n                Icon = Enum.Parse<SymbolRegular>(item),\n                FontSize = 32,\n                Width = 80,\n                Height = 80,\n                Margin = new(0, 0, 4, 4)\n            };\n            button.Click += ItemButton_Click;\n            _itemsControl.Items.Add(button);\n        }\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/UnsupportedWindow.xaml",
    "content": "﻿<wpfui:UiWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Utils.UnsupportedWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.UnsupportedWindow_Title}\"\n    MinWidth=\"650\"\n    MinHeight=\"420\"\n    MaxWidth=\"650\"\n    MaxHeight=\"420\"\n    Closed=\"Window_Closed\"\n    ExtendsContentIntoTitleBar=\"True\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Loaded=\"Window_Loaded\"\n    ResizeMode=\"NoResize\"\n    Topmost=\"True\"\n    WindowStartupLocation=\"CenterScreen\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Title=\"{x:Static resources:Resource.UnsupportedWindow_Title}\"\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid Grid.Row=\"1\" Margin=\"16\">\n            <Grid.RowDefinitions>\n                <RowDefinition Height=\"*\" />\n                <RowDefinition Height=\"Auto\" />\n            </Grid.RowDefinitions>\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"Auto\" />\n                <ColumnDefinition Width=\"*\" />\n            </Grid.ColumnDefinitions>\n\n            <StackPanel\n                Grid.Row=\"0\"\n                Grid.Column=\"0\"\n                Margin=\"0,0,16,0\">\n                <wpfui:SymbolIcon FontSize=\"56\" Symbol=\"ErrorCircle24\" />\n            </StackPanel>\n\n            <StackPanel Grid.Row=\"0\" Grid.Column=\"1\">\n                <TextBlock\n                    Margin=\"0,0,0,16\"\n                    Focusable=\"True\"\n                    FontWeight=\"Medium\"\n                    Text=\"{x:Static resources:Resource.UnsupportedWindow_Message}\"\n                    TextWrapping=\"Wrap\" />\n\n                <Grid>\n                    <Grid.RowDefinitions>\n                        <RowDefinition Height=\"Auto\" />\n                        <RowDefinition Height=\"Auto\" />\n                        <RowDefinition Height=\"Auto\" />\n                    </Grid.RowDefinitions>\n                    <Grid.ColumnDefinitions>\n                        <ColumnDefinition Width=\"100\" />\n                        <ColumnDefinition Width=\"Auto\" />\n                    </Grid.ColumnDefinitions>\n\n                    <TextBlock\n                        Grid.Row=\"0\"\n                        Grid.Column=\"0\"\n                        Focusable=\"True\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.UnsupportedWindow_Vendor}\" />\n                    <TextBlock\n                        Grid.Row=\"1\"\n                        Grid.Column=\"0\"\n                        Focusable=\"True\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.UnsupportedWindow_Model}\" />\n                    <TextBlock\n                        Grid.Row=\"2\"\n                        Grid.Column=\"0\"\n                        Focusable=\"True\"\n                        FontWeight=\"Medium\"\n                        Text=\"{x:Static resources:Resource.UnsupportedWindow_MachineType}\" />\n\n                    <TextBlock\n                        x:Name=\"_vendorText\"\n                        Grid.Row=\"0\"\n                        Grid.Column=\"1\"\n                        Focusable=\"True\" />\n                    <TextBlock\n                        x:Name=\"_modelText\"\n                        Grid.Row=\"1\"\n                        Grid.Column=\"1\"\n                        Focusable=\"True\" />\n                    <TextBlock\n                        x:Name=\"_machineTypeText\"\n                        Grid.Row=\"2\"\n                        Grid.Column=\"1\"\n                        Focusable=\"True\" />\n                </Grid>\n\n                <TextBlock\n                    Margin=\"0,16,0,24\"\n                    Focusable=\"True\"\n                    Text=\"{x:Static resources:Resource.UnsupportedWindow_Disclaimer}\"\n                    TextWrapping=\"Wrap\" />\n\n                <wpfui:Hyperlink Content=\"{x:Static resources:Resource.UnsupportedWindow_Disclaimer_GitHub}\" NavigateUri=\"https://github.com/BartoszCichecki/LenovoLegionToolkit#contribution\" />\n\n            </StackPanel>\n\n            <Grid\n                Grid.Row=\"1\"\n                Grid.Column=\"0\"\n                Grid.ColumnSpan=\"2\"\n                Margin=\"0,16,0,0\"\n                HorizontalAlignment=\"Right\">\n                <Grid.ColumnDefinitions>\n                    <ColumnDefinition Width=\"Auto\" />\n                    <ColumnDefinition Width=\"16\" />\n                    <ColumnDefinition Width=\"Auto\" />\n                </Grid.ColumnDefinitions>\n\n                <wpfui:Button\n                    Grid.Column=\"0\"\n                    MinWidth=\"120\"\n                    Appearance=\"Primary\"\n                    Click=\"Exit_Click\"\n                    Content=\"{x:Static resources:Resource.Exit}\" />\n                <wpfui:Button\n                    x:Name=\"_continueButton\"\n                    Grid.Column=\"2\"\n                    MinWidth=\"120\"\n                    Appearance=\"Secondary\"\n                    Click=\"Continue_Click\"\n                    Content=\"{x:Static resources:Resource.Continue}\"\n                    IsEnabled=\"False\" />\n            </Grid>\n        </Grid>\n    </Grid>\n\n</wpfui:UiWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/UnsupportedWindow.xaml.cs",
    "content": "﻿using System;\nusing System.Threading.Tasks;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic partial class UnsupportedWindow\n{\n    private readonly TaskCompletionSource<bool> _taskCompletionSource = new();\n\n    public Task<bool> ShouldContinue => _taskCompletionSource.Task;\n\n    public UnsupportedWindow(MachineInformation mi)\n    {\n        InitializeComponent();\n\n        _vendorText.Text = mi.Vendor;\n        _modelText.Text = mi.Model;\n        _machineTypeText.Text = mi.MachineType;\n    }\n\n    private async void Window_Loaded(object sender, RoutedEventArgs e)\n    {\n        for (var i = 5; i > 0; i--)\n        {\n            _continueButton.Content = $\"Continue ({i})\";\n            await Task.Delay(TimeSpan.FromSeconds(1));\n        }\n\n        _continueButton.Content = \"Continue\";\n        _continueButton.IsEnabled = true;\n    }\n\n    private void Window_Closed(object sender, EventArgs e)\n    {\n        _taskCompletionSource.TrySetResult(false);\n    }\n\n    private void Continue_Click(object sender, RoutedEventArgs e)\n    {\n        _taskCompletionSource.TrySetResult(true);\n        Close();\n    }\n\n    private void Exit_Click(object sender, RoutedEventArgs e)\n    {\n        _taskCompletionSource.TrySetResult(false);\n        Close();\n    }\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/UpdateWindow.xaml",
    "content": "﻿<local:BaseWindow\n    x:Class=\"LenovoLegionToolkit.WPF.Windows.Utils.UpdateWindow\"\n    xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"\n    xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\"\n    xmlns:local=\"clr-namespace:LenovoLegionToolkit.WPF.Windows\"\n    xmlns:markdig=\"clr-namespace:Markdig.Wpf;assembly=Markdig.Wpf\"\n    xmlns:resources=\"clr-namespace:LenovoLegionToolkit.WPF.Resources\"\n    xmlns:utils=\"clr-namespace:LenovoLegionToolkit.WPF.Utils\"\n    xmlns:wpfui=\"http://schemas.lepo.co/wpfui/2022/xaml\"\n    Title=\"{x:Static resources:Resource.UpdateWindow_Title}\"\n    MinWidth=\"800\"\n    MinHeight=\"600\"\n    MaxWidth=\"800\"\n    MaxHeight=\"600\"\n    Closing=\"UpdateWindow_Closing\"\n    ExtendsContentIntoTitleBar=\"True\"\n    FlowDirection=\"{x:Static utils:LocalizationHelper.Direction}\"\n    Loaded=\"UpdateWindow_Loaded\"\n    ResizeMode=\"NoResize\"\n    ShowInTaskbar=\"False\"\n    WindowStartupLocation=\"CenterOwner\">\n\n    <Grid>\n        <Grid.RowDefinitions>\n            <RowDefinition Height=\"Auto\" />\n            <RowDefinition Height=\"*\" />\n        </Grid.RowDefinitions>\n\n        <wpfui:TitleBar\n            Grid.Row=\"0\"\n            CanMaximize=\"false\"\n            ShowMaximize=\"false\"\n            ShowMinimize=\"false\"\n            UseSnapLayout=\"false\" />\n\n        <Grid\n            Grid.Row=\"0\"\n            Height=\"24\"\n            Margin=\"12,8,12,8\">\n            <Grid.ColumnDefinitions>\n                <ColumnDefinition Width=\"*\" />\n                <ColumnDefinition Width=\"Auto\" />\n            </Grid.ColumnDefinitions>\n\n            <TextBlock\n                Grid.Column=\"0\"\n                VerticalAlignment=\"Center\"\n                Focusable=\"True\"\n                FontSize=\"12\"\n                IsHitTestVisible=\"False\"\n                Text=\"{x:Static resources:Resource.UpdateWindow_Title}\" />\n\n        </Grid>\n\n        <Grid Grid.Row=\"1\" Margin=\"16,12,16,12\">\n            <Grid>\n                <Grid.RowDefinitions>\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"*\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                    <RowDefinition Height=\"Auto\" />\n                </Grid.RowDefinitions>\n\n                <TextBlock\n                    Grid.Row=\"0\"\n                    Margin=\"0,0,0,24\"\n                    Focusable=\"True\"\n                    FontSize=\"24\"\n                    FontWeight=\"Medium\"\n                    Text=\"{x:Static resources:Resource.UpdateWindow_WhatsNew}\" />\n\n                <markdig:MarkdownViewer\n                    x:Name=\"_markdownViewer\"\n                    Grid.Row=\"1\"\n                    Focusable=\"True\" />\n\n                <ProgressBar\n                    x:Name=\"_downloadProgressBar\"\n                    Grid.Row=\"2\"\n                    Margin=\"0,16,0,16\"\n                    IsIndeterminate=\"True\"\n                    Maximum=\"1\"\n                    Minimum=\"0\"\n                    Visibility=\"Hidden\" />\n\n                <wpfui:Button\n                    x:Name=\"_downloadButton\"\n                    Grid.Row=\"3\"\n                    Width=\"150\"\n                    Height=\"32\"\n                    Margin=\"0,0,0,16\"\n                    HorizontalAlignment=\"Center\"\n                    Appearance=\"Primary\"\n                    Click=\"DownloadButton_Click\"\n                    Content=\"{x:Static resources:Resource.Update}\"\n                    IsEnabled=\"False\" />\n\n                <wpfui:Button\n                    x:Name=\"_cancelDownloadButton\"\n                    Grid.Row=\"4\"\n                    Width=\"150\"\n                    Height=\"32\"\n                    Margin=\"0,0,0,16\"\n                    HorizontalAlignment=\"Center\"\n                    Click=\"CancelDownloadButton_Click\"\n                    Content=\"{x:Static resources:Resource.Cancel}\"\n                    IsEnabled=\"False\"\n                    Visibility=\"Collapsed\" />\n            </Grid>\n        </Grid>\n    </Grid>\n</local:BaseWindow>\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/Windows/Utils/UpdateWindow.xaml.cs",
    "content": "﻿using System;\nusing System.ComponentModel;\nusing System.Diagnostics;\nusing System.Text;\nusing System.Threading;\nusing System.Windows;\nusing LenovoLegionToolkit.Lib;\nusing LenovoLegionToolkit.Lib.Utils;\nusing LenovoLegionToolkit.WPF.Extensions;\nusing LenovoLegionToolkit.WPF.Resources;\n\nnamespace LenovoLegionToolkit.WPF.Windows.Utils;\n\npublic partial class UpdateWindow : IProgress<float>\n{\n    private readonly UpdateChecker _updateChecker = IoCContainer.Resolve<UpdateChecker>();\n\n    private CancellationTokenSource? _downloadCancellationTokenSource;\n\n    public UpdateWindow() => InitializeComponent();\n\n    private async void UpdateWindow_Loaded(object sender, RoutedEventArgs e)\n    {\n        var updates = await _updateChecker.GetUpdatesAsync();\n\n        var stringBuilder = new StringBuilder();\n        foreach (var update in updates)\n        {\n            stringBuilder.AppendLine(\"**\" + update.Title + \"**   _(\" + update.Date.ToString(\"D\") + \")_\")\n                .AppendLine()\n                .AppendLine(update.Description)\n                .AppendLine();\n        }\n\n        _markdownViewer.Markdown = stringBuilder.ToString();\n\n        _downloadButton.IsEnabled = true;\n    }\n\n    private void UpdateWindow_Closing(object? sender, CancelEventArgs e) => _downloadCancellationTokenSource?.Cancel();\n\n    private async void DownloadButton_Click(object sender, RoutedEventArgs e)\n    {\n        try\n        {\n            if (_downloadCancellationTokenSource is not null)\n                await _downloadCancellationTokenSource.CancelAsync();\n\n            _downloadCancellationTokenSource = new();\n\n            SetDownloading(true);\n\n            var path = await _updateChecker.DownloadLatestUpdateAsync(this, _downloadCancellationTokenSource.Token);\n\n            _downloadCancellationTokenSource = null;\n\n            Process.Start(path, $\"/SILENT /RESTARTAPPLICATIONS /LANG={Resource.Culture.Name.Replace(\"-\", string.Empty)}\");\n            await App.Current.ShutdownAsync();\n        }\n        catch (OperationCanceledException)\n        {\n            SetDownloading(false);\n        }\n        catch\n        {\n            SetDownloading(false);\n\n            Constants.LatestReleaseUri.Open();\n            Close();\n        }\n    }\n\n    private void CancelDownloadButton_Click(object sender, RoutedEventArgs e) => _downloadCancellationTokenSource?.Cancel();\n\n    private void SetDownloading(bool isDownloading)\n    {\n        if (isDownloading)\n        {\n            _downloadProgressBar.Visibility = Visibility.Visible;\n\n            _downloadButton.Visibility = Visibility.Collapsed;\n            _downloadButton.IsEnabled = false;\n\n            _cancelDownloadButton.Visibility = Visibility.Visible;\n            _cancelDownloadButton.IsEnabled = true;\n        }\n        else\n        {\n            _downloadProgressBar.Value = 0;\n            _downloadProgressBar.IsIndeterminate = true;\n            _downloadProgressBar.Visibility = Visibility.Hidden;\n\n            _downloadButton.Visibility = Visibility.Visible;\n            _downloadButton.IsEnabled = true;\n\n            _cancelDownloadButton.Visibility = Visibility.Collapsed;\n            _cancelDownloadButton.IsEnabled = false;\n        }\n    }\n\n    public void Report(float value) => Dispatcher.Invoke(() =>\n    {\n        _downloadProgressBar.IsIndeterminate = !(value > 0);\n        _downloadProgressBar.Value = value;\n    });\n}\n"
  },
  {
    "path": "LenovoLegionToolkit.WPF/app.manifest",
    "content": "﻿<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<assembly manifestVersion=\"1.0\" xmlns=\"urn:schemas-microsoft-com:asm.v1\">\n\n\t<assemblyIdentity version=\"1.0.0.0\" name=\"MyApplication.app\"/>\n\n\t<trustInfo xmlns=\"urn:schemas-microsoft-com:asm.v2\">\n\t\t<security>\n\t\t\t<requestedPrivileges xmlns=\"urn:schemas-microsoft-com:asm.v3\">\n\t\t\t\t<requestedExecutionLevel level=\"requireAdministrator\" uiAccess=\"false\" />\n\t\t\t</requestedPrivileges>\n\t\t</security>\n\t</trustInfo>\n\n\t<compatibility xmlns=\"urn:schemas-microsoft-com:compatibility.v1\">\n\t\t<application>\n\t\t\t<!-- Windows 10 -->\n\t\t\t<supportedOS Id=\"{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}\" />\n\t\t</application>\n\t</compatibility>\n\n\t<application xmlns=\"urn:schemas-microsoft-com:asm.v3\">\n\t\t<windowsSettings>\n\t\t\t<dpiAwareness xmlns=\"http://schemas.microsoft.com/SMI/2016/WindowsSettings\">PerMonitorV2</dpiAwareness>\n\t\t\t<highResolutionScrollingAware xmlns=\"http://schemas.microsoft.com/SMI/2013/WindowsSettings\">true</highResolutionScrollingAware>\n\t\t\t<ultraHighResolutionScrollingAware xmlns=\"http://schemas.microsoft.com/SMI/2013/WindowsSettings\">false</ultraHighResolutionScrollingAware>\n\t\t</windowsSettings>\n\t</application>\n\n</assembly>\n"
  },
  {
    "path": "LenovoLegionToolkit.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.0.31903.59\nMinimumVisualStudioVersion = 10.0.40219.1\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"LenovoLegionToolkit.WPF\", \"LenovoLegionToolkit.WPF\\LenovoLegionToolkit.WPF.csproj\", \"{DC01FDB3-CDCF-4D08-B87E-CCCAE5A24FF7}\"\n\tProjectSection(ProjectDependencies) = postProject\n\t\t{656AC74B-A298-4D0F-88CC-7CC7B5AB32C3} = {656AC74B-A298-4D0F-88CC-7CC7B5AB32C3}\n\tEndProjectSection\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"LenovoLegionToolkit.Lib\", \"LenovoLegionToolkit.Lib\\LenovoLegionToolkit.Lib.csproj\", \"{4B902DDC-0EBE-44B3-A53B-5EA176C7522B}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"LenovoLegionToolkit.Lib.Automation\", \"LenovoLegionToolkit.Lib.Automation\\LenovoLegionToolkit.Lib.Automation.csproj\", \"{CB52B339-4311-47C9-B9EB-23643F10BEC9}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"LenovoLegionToolkit.SpectrumTester\", \"LenovoLegionToolkit.SpectrumTester\\LenovoLegionToolkit.SpectrumTester.csproj\", \"{BB54FD85-CB1C-401F-A520-02396718595C}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"Tools\", \"Tools\", \"{CC081CCC-BA76-4603-8444-9F33C3DD2025}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"LenovoLegionToolkit.Lib.Macro\", \"LenovoLegionToolkit.Lib.Macro\\LenovoLegionToolkit.Lib.Macro.csproj\", \"{AC885CE1-A229-4437-B969-266DB6516AD1}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"LenovoLegionToolkit.CLI\", \"LenovoLegionToolkit.CLI\\LenovoLegionToolkit.CLI.csproj\", \"{656AC74B-A298-4D0F-88CC-7CC7B5AB32C3}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"LenovoLegionToolkit.CLI.Lib\", \"LenovoLegionToolkit.CLI.Lib\\LenovoLegionToolkit.CLI.Lib.csproj\", \"{2C7AB13C-5877-459D-98F3-F91F88CE3216}\"\nEndProject\nProject(\"{2150E333-8FDC-42A3-9474-1A3956D46DE8}\") = \"CLI\", \"CLI\", \"{F8070067-370A-4E50-898A-8E31A3D77569}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|x64 = Debug|x64\n\t\tRelease|x64 = Release|x64\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{DC01FDB3-CDCF-4D08-B87E-CCCAE5A24FF7}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{DC01FDB3-CDCF-4D08-B87E-CCCAE5A24FF7}.Debug|x64.Build.0 = Debug|x64\n\t\t{DC01FDB3-CDCF-4D08-B87E-CCCAE5A24FF7}.Release|x64.ActiveCfg = Release|x64\n\t\t{DC01FDB3-CDCF-4D08-B87E-CCCAE5A24FF7}.Release|x64.Build.0 = Release|x64\n\t\t{4B902DDC-0EBE-44B3-A53B-5EA176C7522B}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{4B902DDC-0EBE-44B3-A53B-5EA176C7522B}.Debug|x64.Build.0 = Debug|x64\n\t\t{4B902DDC-0EBE-44B3-A53B-5EA176C7522B}.Release|x64.ActiveCfg = Release|x64\n\t\t{4B902DDC-0EBE-44B3-A53B-5EA176C7522B}.Release|x64.Build.0 = Release|x64\n\t\t{CB52B339-4311-47C9-B9EB-23643F10BEC9}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{CB52B339-4311-47C9-B9EB-23643F10BEC9}.Debug|x64.Build.0 = Debug|x64\n\t\t{CB52B339-4311-47C9-B9EB-23643F10BEC9}.Release|x64.ActiveCfg = Release|x64\n\t\t{CB52B339-4311-47C9-B9EB-23643F10BEC9}.Release|x64.Build.0 = Release|x64\n\t\t{BB54FD85-CB1C-401F-A520-02396718595C}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{BB54FD85-CB1C-401F-A520-02396718595C}.Debug|x64.Build.0 = Debug|x64\n\t\t{BB54FD85-CB1C-401F-A520-02396718595C}.Release|x64.ActiveCfg = Release|x64\n\t\t{BB54FD85-CB1C-401F-A520-02396718595C}.Release|x64.Build.0 = Release|x64\n\t\t{AC885CE1-A229-4437-B969-266DB6516AD1}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{AC885CE1-A229-4437-B969-266DB6516AD1}.Debug|x64.Build.0 = Debug|x64\n\t\t{AC885CE1-A229-4437-B969-266DB6516AD1}.Release|x64.ActiveCfg = Release|x64\n\t\t{AC885CE1-A229-4437-B969-266DB6516AD1}.Release|x64.Build.0 = Release|x64\n\t\t{656AC74B-A298-4D0F-88CC-7CC7B5AB32C3}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{656AC74B-A298-4D0F-88CC-7CC7B5AB32C3}.Debug|x64.Build.0 = Debug|x64\n\t\t{656AC74B-A298-4D0F-88CC-7CC7B5AB32C3}.Release|x64.ActiveCfg = Release|x64\n\t\t{656AC74B-A298-4D0F-88CC-7CC7B5AB32C3}.Release|x64.Build.0 = Release|x64\n\t\t{2C7AB13C-5877-459D-98F3-F91F88CE3216}.Debug|x64.ActiveCfg = Debug|x64\n\t\t{2C7AB13C-5877-459D-98F3-F91F88CE3216}.Debug|x64.Build.0 = Debug|x64\n\t\t{2C7AB13C-5877-459D-98F3-F91F88CE3216}.Release|x64.ActiveCfg = Release|x64\n\t\t{2C7AB13C-5877-459D-98F3-F91F88CE3216}.Release|x64.Build.0 = Release|x64\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(NestedProjects) = preSolution\n\t\t{BB54FD85-CB1C-401F-A520-02396718595C} = {CC081CCC-BA76-4603-8444-9F33C3DD2025}\n\t\t{656AC74B-A298-4D0F-88CC-7CC7B5AB32C3} = {F8070067-370A-4E50-898A-8E31A3D77569}\n\t\t{2C7AB13C-5877-459D-98F3-F91F88CE3216} = {F8070067-370A-4E50-898A-8E31A3D77569}\n\tEndGlobalSection\n\tGlobalSection(ExtensibilityGlobals) = postSolution\n\t\tSolutionGuid = {DA77E337-1B57-4D70-B454-BE5EA6E618D6}\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "LenovoLegionToolkit.sln.DotSettings",
    "content": "﻿<wpf:ResourceDictionary xml:space=\"preserve\" xmlns:x=\"http://schemas.microsoft.com/winfx/2006/xaml\" xmlns:s=\"clr-namespace:System;assembly=mscorlib\" xmlns:ss=\"urn:shemas-jetbrains-com:settings-storage-xaml\" xmlns:wpf=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">\n\t<s:Boolean x:Key=\"/Default/CodeEditing/Intellisense/CodeCompletion/IntelliSenseCompletingCharacters/CSharpCompletingCharacters/UpgradedFromVSSettings/@EntryValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/CodeInspection/ExcludedFiles/FileMasksToSkip/=_002A_002Eg_002Ecs/@EntryIndexedValue\">True</s:Boolean>\n\t<s:String x:Key=\"/Default/CodeInspection/GeneratedCode/GeneratedFileMasks/=_002A_002Eg_002Ecs/@EntryIndexedValue\">*.g.cs</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=ArrangeObjectCreationWhenTypeNotEvident/@EntryIndexedValue\">DO_NOT_SHOW</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=ClassNeverInstantiated_002EGlobal/@EntryIndexedValue\">HINT</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=NotDeclaredInParentCulture/@EntryIndexedValue\">SUGGESTION</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=NotOverriddenInSpecificCulture/@EntryIndexedValue\">SUGGESTION</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=RedundantConfigureAwait/@EntryIndexedValue\">WARNING</s:String>\n\t<s:String x:Key=\"/Default/CodeInspection/Highlighting/InspectionSeverities/=UseConfigureAwaitFalse/@EntryIndexedValue\">WARNING</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/CodeCleanup/RecentlyUsedProfile/@EntryValue\">Built-in: Reformat &amp; Apply Syntax Style</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/CodeCleanup/SilentCleanupProfile/@EntryValue\">Built-in: Reformat &amp; Apply Syntax Style</s:String>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/CodeFormatting/CommonFormatter/SHOW_AUTODETECT_CONFIGURE_FORMATTING_TIP/@EntryValue\">False</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/CodeFormatting/CSharpFormat/LINE_FEED_AT_FILE_END/@EntryValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/Generate/=EqualityComparer/@KeyIndexDefined\">True</s:Boolean>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=EqualityComparer/Options/=UseSystemHashCode/@EntryIndexedValue\">True</s:String>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/Generate/=EqualityMembers/@KeyIndexDefined\">True</s:Boolean>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=EqualityMembers/Options/=ChangeEquals/@EntryIndexedValue\">Replace</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=EqualityMembers/Options/=ChangeGetHashCode/@EntryIndexedValue\">Replace</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=EqualityMembers/Options/=EqualityOperators/@EntryIndexedValue\">True</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=EqualityMembers/Options/=ImplementIEquatable/@EntryIndexedValue\">False</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=EqualityMembers/Options/=UseSystemHashCode/@EntryIndexedValue\">True</s:String>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/Generate/=Formatting/@KeyIndexDefined\">True</s:Boolean>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=Formatting/Options/=UseNameOf/@EntryIndexedValue\">True</s:String>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/Generate/=Implementations/@KeyIndexDefined\">True</s:Boolean>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=Implementations/Options/=Async/@EntryIndexedValue\">False</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=Implementations/Options/=Mutable/@EntryIndexedValue\">False</s:String>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/Generate/=Overrides/@KeyIndexDefined\">True</s:Boolean>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=Overrides/Options/=Async/@EntryIndexedValue\">False</s:String>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/Generate/=RelationalMembers/@KeyIndexDefined\">True</s:Boolean>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=RelationalMembers/Options/=ImplementIComparable/@EntryIndexedValue\">False</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Generate/=RelationalMembers/Options/=RelationalOperators/@EntryIndexedValue\">False</s:String>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/Naming/CSharpAutoNaming/IsNotificationDisabled/@EntryValue\">True</s:Boolean>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AC/@EntryIndexedValue\">AC</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AI/@EntryIndexedValue\">AI</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AMD/@EntryIndexedValue\">AMD</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ANSI/@EntryIndexedValue\">ANSI</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AP/@EntryIndexedValue\">AP</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=APU/@EntryIndexedValue\">APU</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=APUSPPT/@EntryIndexedValue\">APUSPPT</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=BIOS/@EntryIndexedValue\">BIOS</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CLI/@EntryIndexedValue\">CLI</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CMD/@EntryIndexedValue\">CMD</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CNY/@EntryIndexedValue\">CNY</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CPU/@EntryIndexedValue\">CPU</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=CPUPL/@EntryIndexedValue\">CPUPL</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DGPU/@EntryIndexedValue\">DGPU</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GPU/@EntryIndexedValue\">GPU</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HDR/@EntryIndexedValue\">HDR</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=HW/@EntryIndexedValue\">HW</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ID/@EntryIndexedValue\">ID</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IGPU/@EntryIndexedValue\">IGPU</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ISO/@EntryIndexedValue\">ISO</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LTR/@EntryIndexedValue\">LTR</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NFO/@EntryIndexedValue\">NFO</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=NVAPI/@EntryIndexedValue\">NVAPI</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OC/@EntryIndexedValue\">OC</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=OS/@EntryIndexedValue\">OS</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PC/@EntryIndexedValue\">PC</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PL/@EntryIndexedValue\">PL</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PPT/@EntryIndexedValue\">PPT</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RGB/@EntryIndexedValue\">RGB</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RTL/@EntryIndexedValue\">RTL</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SPPT/@EntryIndexedValue\">SPPT</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=TGP/@EntryIndexedValue\">TGP</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UEFI/@EntryIndexedValue\">UEFI</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UI/@EntryIndexedValue\">UI</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=USB/@EntryIndexedValue\">USB</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=WMI/@EntryIndexedValue\">WMI</s:String>\n\t<s:Boolean x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/ApplyAutoDetectedRules/@EntryValue\">False</s:Boolean>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=Constants/@EntryIndexedValue\">&lt;Policy Inspect=\"True\" Prefix=\"\" Suffix=\"\" Style=\"AA_BB\" /&gt;</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateConstants/@EntryIndexedValue\">&lt;Policy Inspect=\"True\" Prefix=\"\" Suffix=\"\" Style=\"AA_BB\" /&gt;</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/UserRules/=236f7aa5_002D7b06_002D43ca_002Dbf2a_002D9b31bfcff09a/@EntryIndexedValue\">&lt;Policy&gt;&lt;Descriptor Staticness=\"Any\" AccessRightKinds=\"Private\" Description=\"Constant fields (private)\"&gt;&lt;ElementKinds&gt;&lt;Kind Name=\"CONSTANT_FIELD\" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect=\"True\" Prefix=\"\" Suffix=\"\" Style=\"AA_BB\" /&gt;&lt;/Policy&gt;</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/CSharpNaming/UserRules/=669e5282_002Dfb4b_002D4e90_002D91e7_002D07d269d04b60/@EntryIndexedValue\">&lt;Policy&gt;&lt;Descriptor Staticness=\"Any\" AccessRightKinds=\"Protected, ProtectedInternal, Internal, Public, PrivateProtected\" Description=\"Constant fields (not private)\"&gt;&lt;ElementKinds&gt;&lt;Kind Name=\"CONSTANT_FIELD\" /&gt;&lt;/ElementKinds&gt;&lt;/Descriptor&gt;&lt;Policy Inspect=\"True\" Prefix=\"\" Suffix=\"\" Style=\"AA_BB\" /&gt;&lt;/Policy&gt;</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=GPU/@EntryIndexedValue\">GPU</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=PL/@EntryIndexedValue\">PL</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=SPPT/@EntryIndexedValue\">SPPT</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/XamlNaming/Abbreviations/=TGP/@EntryIndexedValue\">TGP</s:String>\n\t<s:String x:Key=\"/Default/CodeStyle/Naming/XamlNaming/UserRules/=XAML_005FFIELD/@EntryIndexedValue\">&lt;Policy Inspect=\"True\" Prefix=\"_\" Suffix=\"\" Style=\"aaBb\" /&gt;</s:String>\n\t<s:Boolean x:Key=\"/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EPredefinedNamingRulesToUserRulesUpgrade/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Autorun/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Backlight/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Bartosz/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=BSOD/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Cichecki/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=CIMV/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=CTGP/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Debounce/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=DGPU/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=DGPUHW/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Disabler/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Dont/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Downloader/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Edid/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Endianness/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=GAMEZONE/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=GPU/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=hbitmap/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Heatsink/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=HKEY/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Hotkeys/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=HW/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=hwinfo/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=IGPU/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Immersive/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Interruptable/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Karakalpak/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=latn/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=LBLDESP/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=LBLDVC/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=LBUTTON/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Lenovo/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=luid/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=MBUTTON/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=mountvol/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=mylogo/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Nvidia/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Optimus/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=pnputil/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=powercfg/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=powrprof/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=ppab/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=RBUTTON/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Snackbar/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=SUBKEY/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Taskbar/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Touchpad/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=Vidia/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=wpfui/@EntryIndexedValue\">True</s:Boolean>\n\t<s:Boolean x:Key=\"/Default/UserDictionary/Words/=XBUTTON/@EntryIndexedValue\">True</s:Boolean></wpf:ResourceDictionary>"
  },
  {
    "path": "README.md",
    "content": "> [!IMPORTANT]\n> _Archived on July 24, 2025, This project is no longer actively maintained._\n> \n> Thank you to everyone who supported, used, contributed to, and shared this project. It's been an amazing journey watching it grow among Legion users.\n> \n> As I no longer have time to maintain it, I’ve decided to archive the repo. Feel free to fork and continue development, if you'd like to carry it forward. All code remains available under the existing license.\n> \n> For questions, issues, or maintenance, I recommend checking out forks from the community—or even starting your own!\n> \n> Much love and happy coding,\n>\n> – Bartosz\n\n\n# Lenovo Legion Toolkit\n\n[![Build](https://github.com/BartoszCichecki/LenovoLegionToolkit/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/BartoszCichecki/LenovoLegionToolkit/actions/workflows/build.yml)\n[![Crowdin](https://badges.crowdin.net/llt/localized.svg)](https://crowdin.com/project/llt)\n[![Join Discord](https://img.shields.io/discord/761178912230473768?label=Legion%20Series%20Discord)](https://discord.com/invite/legionseries)\n<a href=\"https://hellogithub.com/repository/dd55be3ac0c146208259f17b29d2162f\" target=\"_blank\"><img src=\"https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=dd55be3ac0c146208259f17b29d2162f&claim_uid=LBbuUlZqTIm1JAP&theme=small\" alt=\"Featured｜HelloGitHub\" /></a>\n\n---\n\n#### Other language versions of this README file:\n* [简体中文版简介](README_zh-hans.md)\n* [日本語版のREADME](README_ja-JP.md)\n\n---\n\n<br />\n\nLenovo Legion Toolkit (LLT) is a utility created for Lenovo Legion (and similar) series laptops, that allows changing a couple of features that are only available in Lenovo Vantage or Legion Zone.\n\nIt runs no background services, uses less memory, uses virtually no CPU, and contains no telemetry. Just like Lenovo Vantage, this application is Windows only.\n\n_Join the Legion Series Discord: https://discord.com/invite/legionseries!_\n\n<img src=\"assets/screenshot_main.png\" width=\"700\" />\n\n&nbsp;\n\n# Table of Contents\n  - [Disclaimer](#disclaimer)\n  - [Download](#download)\n  - [Compatibility](#compatibility)\n  - [Features](#features)\n  - [Donate](#donate)\n  - [Credits](#credits)\n  - [FAQ](#faq)\n  - [Arguments](#arguments)\n  - [How to collect logs?](#how-to-collect-logs)\n  - [Contribution](#contribution)\n\n## Disclaimer\n\n**The tool comes with no warranty. Use at your own risk.**\n\nPlease be patient and read through this readme carefully - it contains important information.\n\n## Download\n\nYou can download the program by the following ways:\n\n- Manually from the [Releases page](https://github.com/BartoszCichecki/LenovoLegionToolkit/releases/latest)\n- Using [winget](https://github.com/microsoft/winget-cli):\n\n  ```sh\n  winget install BartoszCichecki.LenovoLegionToolkit\n  ```\n\n- Using [Scoop](https://scoop.sh):\n\n  ```sh\n  scoop bucket add versions\n  ```\n\n  ```sh\n  scoop bucket add extras\n  ```\n  \n  ```sh\n  scoop install extras/lenovolegiontoolkit\n  ```\n  \n> [!TIP]\n> If you are looking for a Vantage alternative for Linux, check [LenovoLegionLinux](https://github.com/johnfanv2/LenovoLegionLinux) project out.\n\n#### Next steps\n\nLLT works best when it's running in the background, so go to Settings and enable _Autorun_ and _Minimize on close_. Next thing is to either disable Vantage and Hotkeys or just uninstall them. After that LLT will always run on startup and will take over all functions that were handled by Vantage and Hotkeys.\n\n> [!WARNING]\n> If you close LLT completely some functions will not work, like synchronizing Windows Power Modes or Windows Power Plans with current Power Mode, Macros or Actions. This is due to the fact that LLT does not run any background services and won't be able to respond to changes.\n\n#### Required drivers\n\nIf you installed LLT on a clean Windows install, make sure to have necessary drivers installed. If drivers are missing, some options might not be available. Especially make sure that these two are installed on your system:\n1. Lenovo Energy Management\n2. Lenovo Vantage Gaming Feature Driver\n\n#### Problems with .NET?\n\nIf for whatever reason LLT installer did not setup .NET properly:\n1. Go to https://dotnet.microsoft.com/en-us/download/dotnet/8.0\n2. Find section \".NET Desktop Runtime\"\n3. Download x64 Windows installer\n4. Run the installer\n\n> [!NOTE]\n> If you installed LLT from Scoop, .NET 8 should have been installed automatically as a dependency. If anything fails, use `scoop update` to update all packages and try to reinstall LLT with `--force` argument.\n\nAfter following these steps, you can open Terminal and type: `dotnet --info`. In the output look for section `.NET runtimes installed`, in this section you should see something like:\n\n`Microsoft.NETCore.App 8.0.0 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]`\n\nand\n\n`Microsoft.WindowsDesktop.App 8.0.0 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]`\n\nThe exact version number can be different, but as long as it is `8.x.x` it should be fine. If after these steps LLT still shows an error on startup that .NET couldn't be found or similar, the problem is on your machine and not with LLT.\n\n#### Want to help with testing?\n\nJoin the [Legion Series Discord](https://discord.com/invite/legionseries) and head to `#legion-toolkit` channel. Beta versions of future releases are posted there frequently!\n\n## Compatibility\n\nLenovo Legion Toolkit is made for Lenovo Legion laptops, and other similar laptops like Ideapad Gaming, LOQ and their Chinese variants.\n\nGenerations 6 (MY2021), 7 (MY2022), 8 (MY2023) and 9 (MY2024) are supported, although some features also work on the 5th generation (MY2020). Issues related to devices older than Gen 6 or that are not Legions are out of scope of this project.\n\nIf you are getting an incompatible message on startup, you can check the *Contribution* section down at the bottom, to see how can you help. Keep in mind, that not always I can make all options compatible with all hardware since I do not have access to it.\n\n**Support for other laptops is not planned.**\n\n### Lenovo's software\n\nOverall the recommendation is to disable or uninstall Vantage, Hotkeys and Legion Zone while using LLT. There are some functions that cause conflicts or may not work properly when LLT is working along side other Lenovo apps.\n\n> [!TIP]\n> Using the disable option in LLT is often the easiest option.\n\n### Other remarks\n\nLLT currently does not support installation for multiple users, so if you need to have multiple users on you laptop you might encounter issues. Same goes for accounts without Administrator rights - LLT needs an account with Administrator rights. If you install LLT on an account without such rights, LLT will not work properly.\n\n## Features\n\nThe app allows to:\n\n- Change settings like power mode, battery charging mode, etc. that are available only through Vantage.\n- Spectrum RGB, 4-zone RGB and White backlight keyboards support.\n- Monitor dGPU activity (NVIDIA only).\n- Define Actions that will run when the laptop is i.e. connected to AC power.\n- View battery statistics.\n- Control laptop features from command line\n- Check for driver and software updates.\n- Check warranty status.\n- Disable/enable Lenovo Vantage, Legion Zone and Lenovo Hotkeys service without uninstalling them.\n- ... and more!\n\n### Custom Mode\n\nCustom Mode is available on all devices that support it. You can find it in the Power Mode dropdown as it basically is 4th power mode and it allows for adjusting power limits and fans. Custom Mode can't be accessed with Fn+Q shortcut. Not all features of Custom Mode are supported by all devices.\n\nIf you have one of the following BIOSes:\n* G9CN (24 or higher)\n* GKCN (46 or higher)\n* H1CN (39 or higher)\n* HACN (31 or higher)\n* HHCN (20 or higher)\n\nMake sure to update it to at least minimum version mentioned above for Custom Mode to function properly.\n\n### RGB and lighting\n\nBoth Spectrum per-key RGB and 4-zone RGB backlight is supported. Vantage and it's services need to be disabled to avoid conflicts when communicating with hardware. If you use other RGB apps that might conflict with LLT, check [FAQ](#faq) for solutions.\n\nOther lighting features like both 1 and 3 level white keyboard backlight, panel logo and rear ports backlight are also supported, however there are some constraints:\n\n* GKCN54WW and lower - some lighting features are disabled due to a bug in these BIOS versions causing BSOD\n* some (mostly Gen 6) laptops models might not show all options or show options that aren't there - this is due misconfigured BIOS that doesn't report availability of these features\n\nLighting that required Corsair iCue is not supported by LLT.\n\n> [!IMPORTANT]\n> Riot Vanguard DRM (used in Valorant for example) is known to cause issues with RGB controls. If you don't see RGB settings and have it installed, make sure it doesn't run on startup or uninstall it._\n\n### Hybrid Mode and GPU Working Modes\n\n> [!NOTE]\n> Hybrid Mode/GPU Working Mode options _are not_ Advanced Optimus and work separately from it.\n\nThere are two main way you can use your dGPU:\n\n1. Hybrid mode on - internal laptop display is connected to integrated GPU, discrete GPU will work when needed and power off when not in use, giving better battery life\n2. Hybrid mode off (aka dGPU) - internal laptop display is conenected directly to discreted GPU, giving best performance but also worst battery life\n\nSwitching between two modes requires restart.\n\nOn Gen 7 and 8 laptops, there are additional 2 settings for Hybrid mode:\n\n1. Hybrid iGPU-only - in this mode dGPU will be disconnected (think of it like ejecting USB drive), so there is no risk of it using power when you want to achieve best battery life\n2. Hybrid Auto - similar to the above, but tries to automate the process by automatically disconnecting dGPU on battery power and reconnecting it when you plug in AC adapter\n\nDiscrete GPU may not disconnect, and in most cases will not disconnect, when it is used. That includes apps using dGPU, external monitor connected and probably some other cases that aren't specified by Lenovo. If you use the \"Deactivate GPU\" option in LLT, make sure that it reports dGPU Powered Off and no external screens are connected, before switching between Hybrid Modes in case you encounter problems.\n\nAll above settings are using built in functions of the EC and how well they work relies on Lenovo's firmware implementation. From my observations, they are reliable, unless you start switching them frequently. Be patient, because changes to this methods are not instantanous. LLT also attempts to mitigate these issues, by disallowing frequent Hybrid Mode switching and additional attempts to wake dGPU if EC failed to do so. It may take up to 10 seconds for dGPU to reappear when switching to Hybrid Mode, in case EC failed to wake it.\n\nIf you encounter issues, you might try to try alternative, experimental method of handling GPU Working Mode - see [Arguments](#arguments) section for more details.\n\n> [!WARNING]\n> Disabling dGPU via Device Manager DOES NOT disconnect the device and will cause high power consumption!\n\n### Deactivate discrete NVIDIA GPU\n\nSometimes discrete GPU stays active even when it should not. This can happen for example, if you work with an external screen and you disconnect it - some processes will keep running on discrete GPU keeping it alive and shortening battery life.\n\nThere are two ways to help the GPU deactivate:\n\n1. killing all processes running on dGPU (this one seems to work better),\n2. disabling dGPU for a short amount of time, which will force all processes to move to the integrated GPU.\n\nDeactivate button will be enabled when dGPU is active, you have Hybrid mode enabled and there are no screens connected to dGPU. If you hover over the button, you will see the current P state of dGPU and the list of processes running on it.\n\n> [!NOTE]\n> Some apps may not like this feature and crash when you use deactivate dGPU option.\n\n### Overclock discrete NVIDIA GPUs\n\nThe overclock option is intended for simple overclocking, similar to the one available in Vantage. It is not intended to replace tools like Afterburner. Here are some points to keep in mind:\n* Make sure GPU overclocking is enabled in BIOS, if your laptop has such option.\n* Overclocking does not work with Vantage or LegionZone running in the background.\n* It is not recommended to use the option while using other tools like Afterburner.\n* If you edited your Dashboard, you might need to add the control manually.\n\n### Windows Power Plans & Windows Power Mode\n\nFirst of all, the Power Mode you see in LLT (or toggle with Fn+Q) **is not** the same as Power Plans (that you access from Control Panel) or Power Mode (that you can change from Settings app).\n\nThe modern (and recommended) approach is to use Windows Power Modes and only one, default, \"Balanced (recommended)\" power plan. You should have 3 Power Modes to choose from in Windows Settings app:\n\n* Best power efficiency\n* Balanced\n* Best performance\n\nYou can assign these in LLT settings to each of Legion Power Modes: Quiet, Balance, Performance and Custom. If you choose to do so, respective Windows Power Mode will be automatically set when you change Legion Power Modes.\n\nThe legacy approach is to use multiple Power Plans, that some devices had installed from factory. If you decide to use them, or configure your own plans, leave the settings in Windows Settings app on the default \"Balanced\" setting. You can configure LLT to switch Power Plans automatically whenever you change the \"Legion\" Power Mode in LLT settings.\n\nIf you encounter issues with power mode or plan synchronization, especially when switching between the two approaches, you can reset Windows power settings to default using `powercfg -restoredefaultschemes; shutdown /r /t ` command. This command will reset all power plans to default and reboot your device. All plans except for the default \"Balanced (recommended)\" will be deleted, so make sure to make a copy, if you plan on using them again.\n\n### Boot Logo\n\nOn some laptops, it is possible to change the boot logo (the default \"Legion\" image you see at boot). Boot logo is *not* stored in UEFI - it is stored on the UEFI partition on boot drive. When setting custom boot logo, LLT conducts basic checks, like resolution, image format and calculates a checksum to ensure compatibility. However, the real verification happens on the next boot. UEFI will attempt to load the image from UEFI partition and show it. If that fails for whatever reason, default image will be used. Exact criteria, except for resolution and image format, are not known and some images might not be shown. In this case, try another image, edited with different image editor.\n\n### Running programs or scripts from actions\n\nYou can use \"Run\" step in Actions to start any program or script from Actions. To configure it, you need to provide path to the executable (`.exe`) or a script (`.bat`). Optionally, you can also provide arguments that the script or program supports - just like running anything from command line.\n\n<details>\n<summary>Examples</summary>\n\n_Shutdown laptop_\n - Executable path: `shutdown`\n - Arguments: `/s /t 0`\n\n_Restart laptop_\n - Executable path: `shutdown`\n - Arguments: `/r`\n\n_Runing a program_\n - Executable path: `C:\\path\\to\\the\\program.exe` (if the program is on your PATH variable, you can use the name only)\n - Arguments: ` ` (optional, for list of supported argument check the program's readme, website etc.)\n\n_Running a script_\n - Executable path: `C:\\path\\to\\the\\script.bat` (if the script is on your PATH variable, you can use the name only)\n - Arguments: ` ` (optional, for list of supported argument check the script's readme, website etc.)\n\n_Python script_\n - Executable path: `C:\\path\\to\\python.exe` (or just `python`, if it is on your PATH variable)\n - Arguments: `C:\\path\\to\\script.py`\n\n </details>\n\n#### Environment\n\nLLT automatically adds some variables to the process environment that can be accessed, from within the script. They are useful for more advanced scripts, where context is needed. Depending on what was the trigger, different variables are added.\n\n<details>\n<summary>Environment variables</summary>\n\n- When AC power adapter is connected\n\t- `LLT_IS_AC_ADAPTER_CONNECTED=TRUE`\n- When low wattage AC power adapter is connected\n\t- `LLT_IS_AC_ADAPTER_CONNECTED=TRUE`\n\t- `LLT_IS_AC_ADAPTER_LOW_POWER=TRUE`\n- When AC power adapter is disconnected\n\t- `LLT_IS_AC_ADAPTER_CONNECTED=FALSE`\n- When Power Mode is changed:\n\t- `LLT_POWER_MODE=<value>`, where `value` is one of: `1` - Quiet, `2` - Balance, `3` - Performance, `255` - Custom\n\t- `LLT_POWER_MODE_NAME=<value>`, where `value` is one of: `QUIET`, `BALANCE`, `PERFORMANCE`, `CUSTOM`\n- When game is running\n\t- `LLT_IS_GAME_RUNNING=TRUE`\n- When game closes\n\t- `LLT_IS_GAME_RUNNING=FALSE`\n- When app starts\n\t- `LLT_PROCESSES_STARTED=TRUE`\n\t- `LLT_PROCESSES=<value>`, where `value` is comma separated list of process names\n- When app closes\n\t- `LLT_PROCESSES_STARTED=FALSE`\n\t- `LLT_PROCESSES=<value>`, where `value` is comma separated list of process names\n- Lid opened\n\t- `LLT_IS_LID_OPEN=TRUE`\n- Lid closed\n\t- `LLT_IS_LID_OPEN=FALSE`\n- When displays turn on\n\t- `LLT_IS_DISPLAY_ON=TRUE`\n- When displays turn off\n\t- `LLT_IS_DISPLAY_ON=FALSE`\n- When external display is connected\n\t- `LLT_IS_EXTERNAL_DISPLAY_CONNECTED=TRUE`\n- When external display is disconnected\n\t- `LLT_IS_EXTERNAL_DISPLAY_CONNECTED=FALSE`\n- When HDR is on\n\t- `LLT_IS_HDR_ON=TRUE`\n- When HDR is off\n\t- `LLT_IS_HDR_ON=FALSE`\n- When WiFi is connected\n\t- `LLT_WIFI_CONNECTED=TRUE`\n\t- `LLT_WIFI_SSID=<value>`, where `value` is the SSID of the network\n- When WiFi is disconnected\n\t- `LLT_WIFI_CONNECTED=FALSE`\n- At specified time\n\t- `LLT_IS_SUNSET=<value>`, where `value` is `TRUE` or `FALSE`, depending on configuration of the trigger\n\t- `LLT_IS_SUNRISE=<value>`, where `value` is `TRUE` or `FALSE`, depending on configuration of the trigger\n\t- `LLT_TIME\"`, where `value` is `HH:mm`, depending on configuration of the trigger\n\t- `LLT_DAYS\"`, where `value` is comma separated list of: `MONDAY`, `TUESDAY`, `WEDNESDAY`, `THURSDAY`, `FRIDAY`, `SATURDAY`, `SUNDAY`, depending on configuration of the trigger\n- Periodic action\n\t- `LLT_PERIOD=<value>`, where `value` is the interval in seconds\n- On startup\n\t- `LLT_STARTUP=TRUE`\n- On resume\n\t- `LLT_RESUME=TRUE`\n\n</details>\n\n#### Output\n\nIf \"Wait for exit\" is checked, LLT will capture the output from standard output of the launched process. This output is stored in `$RUN_OUTPUT$` variable and can be displayed in Show notification step.\n\n### CLI\n\nIt is possible to control some features of LLT directly from the command line. The CLI executable is called `llt.exe` and can be found in the install directory.\n\nFor CLI to work properly, LLT needs to run in the background and CLI option needs to be enabled in LLT settings. You can also chose to add `llt.exe` to your PATH variable for easier access.\n\nCLI does not need to be ran as Administrator.\n\n<details>\n<summary>Features</summary>\n\n* `llt quickAction --list` - list all Quick Actions\n* `llt quickAction <name>` - run Quick Action with given `<name>`\n* `llt feature --list` - list all supported features\n* `llt feature get <name>` - get value of a feature with given `<name>`\n* `llt feature set <name> --list` - list all values for a feature with given `<name>`\n* `llt feature set <name> <value>` - set feature with given `<name>` to a specified `<value>`\n* `llt spectrum profile get` - get current profile Spectrum RGB is set to\n* `llt spectrum profile set <profile>` - set Spectrum RGB profile to `<profile>`\n* `llt spectrum brightness get` - get current brightness Spectrum RGB is set to\n* `llt spectrum brightness set <brightness>` - set Spectrum RGB brightness to `<brightness>`\n* `llt rgb get` - get current 4-zone RGB preset\n* `llt rgb set <profile>` - set 4-zone RGB to `<preset>`\n\n</details>\n\n## Donate\n\nIf you enjoy using the Lenovo Legion Toolkit, consider donating.\n\n[Donate with PayPal](https://www.paypal.com/donate/?hosted_button_id=22AZE2NBP3HTL)\n\n<img src=\"LenovoLegionToolkit.WPF/Assets/Donate/paypal_qr.png\" width=\"200\" alt=\"PayPal QR code\" />\n\n## Credits\n\nSpecial thanks to:\n\n* [ViRb3](https://github.com/ViRb3), for creating [Lenovo Controller](https://github.com/ViRb3/LenovoController), which was used as a base for this tool\n* [falahati](https://github.com/falahati), for creating [NvAPIWrapper](https://github.com/falahati/NvAPIWrapper) and [WindowsDisplayAPI](https://github.com/falahati/WindowsDisplayAPI)\n* [SmokelessCPU](https://github.com/SmokelessCPU), for help with 4-zone RGB and Sprectrum keyboard support\n* [Mario Bălănică](https://github.com/mariobalanica), for all contributions\n* [Ace-Radom](https://github.com/Ace-Radom), for all contributions\n\nTranslations provided by:\n* Bulgarian - [Ekscentricitet](https://github.com/Ekscentricitet)\n* Chinese (Simplified) - [凌卡Karl](https://github.com/KarlLee830), [Ace-Radom](https://github.com/Ace-Radom)\n* Chinese (Traditional) - [flandretw](https://github.com/flandretw)\n* Czech - J0sef\n* Dutch - Melm, [JarneStaalPXL](https://github.com/JarneStaalPXL)\n* French - EliotAku, [Georges de Massol](https://github.com/jojo2massol), Rigbone, ZeroDegree\n* German - Sko-Inductor, Running_Dead89\n* Greek - GreatApo\n* Italian - [Lampadina17](https://github.com/Lampadina17)\n* Karakalpak - KarLin, Gulnaz, Niyazbek Tolibaev, Shingis Joldasbaev\n* Latvian - RJSkudra\n* Romanian - [Mario Bălănică](https://github.com/mariobalanica)\n* Slovak - Mitschud, Newbie414\n* Spanish - M.A.G.\n* Polish - Mariusz Dziemianowicz\n* Portugese - dvsilva\n* Portuguese (Brasil) - Vernon\n* Russian - [Edward Johan](https://github.com/younyokel)\n* Turkish - Undervolt\n* Ukrainian -  [Vladyslav Prydatko](https://github.com/va1dee), [Dmytro Zozulia](https://github.com/Nollasko)\n* Vietnamese - Not_Nhan, Kuri, Nagidrop\n\nMany thanks to everyone else, who monitors and corrects translations!\n\n## FAQ\n\n- [Why do I get a message that Vantage is still running, even though I uninstalled it?](#why-do-i-get-a-message-that-vantage-is-still-running-even-though-i-uninstalled-it)\n- [Why is my antivirus reporting that the installer contains a virus/trojan/malware?](#why-is-my-antivirus-reporting-that-the-installer-contains-a-virustrojanmalware)\n- [Can I customize hotkeys?](#can-i-customize-hotkeys)\n- [Can I customize Conservation mode threshold?](#can-i-customize-conservation-mode-threshold)\n- [Can I customize fans in Quiet, Balance or Performance modes?](#can-i-customize-fans-in-quiet-balance-or-performance-modes)\n- [Why can't I switch to Performance or Custom Power Mode on battery?](#why-cant-i-switch-to-performance-or-custom-power-mode-on-battery)\n- [Why does switching to Performance mode seem buggy, when AI Engine is enabled?](#why-does-switching-to-performance-mode-seem-buggy-when-ai-engine-is-enabled)\n- [Why am I getting incompatible message after motherboard replacement?](#why-am-i-getting-incompatible-message-after-motherboard-replacement)\n- [Why isn't a game detected, even though Actions are configured properly?](#why-isnt-a-game-detected-even-though-actions-are-configured-properly)\n- [Can I use other RGB software while using LLT?](#can-i-use-other-rgb-software-while-using-llt)\n- [Will iCue RGB keyboards be supported?](#will-icue-rgb-keyboards-be-supported)\n- [Can I have more RGB effects?](#can-i-have-more-rgb-effects)\n- [Can you add fan control to other models?](#can-you-add-fan-control-to-other-models)\n- [Why don't I see the custom tooltip when I hover LLT icon in tray?](#why-dont-i-see-the-custom-tooltip-when-i-hover-llt-icon-in-tray)\n- [How can I OC/UV my CPU?](#how-can-i-ocuv-my-cpu)\n- [What if I overclocked my GPU too much?](#what-if-i-overclocked-my-gpu-too-much)\n- [Why is my Boot Logo not applied?](#why-is-my-boot-logo-not-applied)\n- [Why do I see stuttering when using Smart Fn Lock?](#why-do-i-see-stuttering-when-using-smart-fn-lock)\n- [Which generation is my laptop?](#which-generation-is-my-laptop)\n\n\n\n#### Why do I get a message that Vantage is still running, even though I uninstalled it?\n\nStarting from version 2.14.0, LLT is much more strict about detecting leftover processes related to Vantage. Vantage installs 3 components:\n\n1. Lenovo Vantage app\n2. Lenovo Vantage Service\n3. System Interface Foundation V2 Device\n\nThe easiest solution is to go into LLT settings and select options to disable Lenovo Vantage, LegionZone and Hotkeys (only still installed ones are shown).\n\nIf you want to remove them instead, make sure that you uninstall all 3, otherwise some options in LLT will not be available. You can check Task Manager for any processes containing `Vantage` or `ImController`. You can also check this guide for more info: [Uninstalling System Interface Foundation V2 Device](https://support.lenovo.com/us/en/solutions/HT506070), if you have troubles getting rid of `ImController` processes.\n\n#### Why is my antivirus reporting that the installer contains a virus/trojan/malware?\n\nLLT makes use of many low-level Windows APIs that can be falsely flagged by antiviruses as suspicious, resulting in a false-positive. LLT is open source and can easily be audited by anyone who has any doubts as to what this software does. All installers are built directly on GitHub with GitHub Actions, so that there is no doubt what they contain. This problem could be solved by signing all code, but I can't afford spending hundreds of dollars per year for an Extended Validation certificate.\n\nIf you downloaded the installer from this projects website, you shouldn't worry - the warning is a false-positive. That said, if you can help with resolving this issue, let's get in touch.\n\n#### Can I customize hotkeys?\n\nYou can customize Fn+F9 hotkey in LLT settings. Other hotkeys can't be customized.\n\n#### Can I customize Conservation mode threshold?\n\nNo. Conservation mode threshold is set in firmware to 60% (2021 and earlier) or 80% (2022 and later) and it can't be changed.\n\n#### Can I customize fans in Quiet, Balance or Performance modes?\n\nNo, it isn't possible to customize how the fan works in power modes other than Custom.\n\n#### Why can't I switch to Performance or Custom Power Mode on battery?\n\nStarting with version 2.11.0, LLT's behavior was aligned with Vantage and Legion Zone and it does not allow using them without an appropriate power source.\n\nIf for whatever reason you want to use these modes on battery anyway, you can use `--allow-all-power-modes-on-battery` argument. Check [Arguments](#arguments) section for more details.\n\n> [!WARNING]\n> Power limits and other settings are not applied correctly on most devices when laptop is not connected to full power AC adapter and unpredictable and weird behavior is expected. Therefore, no support is provided for issues related to using this argument.*\n\n#### Why does switching to Performance mode seem buggy, when AI Engine is enabled?\n\nIt seems that some BIOS versions indeed have weird issues when using Fn+Q. Only hope is to wait for Lenovo to fix it.\n\n#### Why am I getting incompatible message after motherboard replacement?\n\nSometimes new motherboard does not contain correct model numbers and serial numbers. You should try [this tutorial](https://laptopwiki.eu/laptopwiki/guides/lenovo/legion_bios_lvarrecovery) to try and recover them. If that method does not succeed, you can workaround it with `--skip-compat-check` argument. Check [Arguments](#arguments) section for more details.\n\n#### Why isn't a game detected, even though Actions are configured properly?\n\nGame detection feature is built on top of Windows' game detection, meaning LLT will react to EXE files that Windows considers \"a game\". That also means that if you nuked Xbox Game Bar from your installation, there is 99.9% chance this feature will not work.\n\nWindows probably doesn't recognize all games properly, but you can mark any program as game in Xbox Game Bar settings (Win+G). You can find list of recognized games in registry: `HKEY_CURRENT_USER\\System\\GameConfigStore\\Children`.\n\n#### Can I use other RGB software while using LLT?\n\nIn general, yes. LLT will disable RGB controls when Vantage is running to avoid conflicts. If you use other RGB software like [L5P-Keyboard-RGB](https://github.com/4JX/L5P-Keyboard-RGB) or [OpenRGB](https://openrgb.org/), you can disable RGB in LLT to avoid conflicts with `--force-disable-rgbkb` or `--force-disable-spectrumkb` argument. Check [Arguments](#arguments) section for more details.\n\n#### Will iCue RGB keyboards be supported?\n\nNo. Check out [OpenRGB](https://openrgb.org/) project.\n\n#### Can I have more RGB effects?\n\nOnly options natively supported by hardware are available; adding support for custom effects is not planned. If you would like more customization check out [L5P-Keyboard-RGB](https://github.com/4JX/L5P-Keyboard-RGB) or [OpenRGB](https://openrgb.org/).\n\n#### Can you add fan control to other models?\n\nFan control is available on Gen 7 and later models. Older models will not be supported due to technical limitations.\n\n#### Why don't I see the custom tooltip when I hover LLT icon in tray?\n\nIn Windows 10 and 11, Microsoft did plenty of changes to the tray, breaking a lot of things on the way. As a results custom tooltips not always work properly. Solution? Update your Windows and keep fingers crossed.\n\n#### How can I OC/UV my CPU?\n\nThere are very good tools like [Intel XTU](https://www.intel.com/content/www/us/en/download/17881/intel-extreme-tuning-utility-intel-xtu.html) (which is used by Vantage) or [ThrottleStop](https://www.techpowerup.com/download/techpowerup-throttlestop/) made just for that.\n\n#### What if I overclocked my GPU too much?\n\nIf you end up in a situation where your GPU is not stable and you can't boot into Windows, there are two things you can do:\n\n1. Go into BIOS and try to find and option similar to \"Enabled GPU Overclocking\" and disable it, start Windows, and toggle the BIOS option again to Enabled.\n2. Start Windows in Safe Mode, and delete `gpu_oc.json` file under LLT settings, which are located in `\"%LOCALAPPDATA%\\LenovoLegionToolkit`.\n\n#### Why is my Boot Logo not applied?\n\nWhen you change the Boot Logo, LLT verifies that it is in the format that is correct format and correct resolution. If LLT shows that boot logo is applied, it means that the setting was correctly saved to UEFI. If you don't see the custom boot logo, it means that even though UEFI is configured and custom image is saved to UEFI partition, your UEFI for some reason does not render it. In this case the best idea is to try a different image, maybe in different format, edited with different image editor etc. If the boot logo is not shown after all these steps, it's probably a problem with your BIOS version.\n\n#### Why do I see stuttering when using Smart Fn Lock?\n\nOn some BIOS versions, toggling Fn Lock causes a brief stutter and since Smart Fn Lock is basically an automatic toggle for Fn Lock, it is also affected by this issue. Try disabling \"Fool proof Fn Lock\" (or similar) option in BIOS - it was reported that it fixes stutter when toggling Fn Lock.\n\n#### Why don't I see warranty infos in device information?\n\nIn latest version LLT removes this feature for Chinese models due to increasing unreliability. If you got warranty infos before it should be displayed normally, but after manually refreshing or deleting stored datas the infos will disappear. This change only affects users with a Chinese Legion laptop.\n\n#### Which generation is my laptop?\n\nCheck the model number. Example model numbers are `16ACH6H` or `16IAX7`. The last number of the model number indicates generation.\n\n## Arguments\n\nSome, less frequently needed, features or options can be enabled by using additional arguments. These arguments can either be passed as parameters or added to `args.txt` file.\n\n* `--trace` - enables logging to `%LOCALAPPDATA%\\LenovoLegionToolkit\\log`\n* `--minimized` - starts LLT minimized to tray\n* `--skip-compat-check` - disables compatibility check on startup _(No support is provided when this argument is used)_\n* `--disable-tray-tooltip` - disables tray tooltip that is shown when you hover the cursors over tray icon\n* `--allow-all-power-modes-on-battery` - allows using all Power Modes without AC adapter _(No support is provided when this argument is used)_\n* `--enable-hybrid-mode-automation` - allows changing Hybrid Mode/GPU Working Mode with actions _(No support is provided when this argument is used)_\n* `--force-disable-rgbkb` - disables all lighting features for 4-zone RGB keyboards\n* `--force-disable-spectrumkb` - disables all lighting features for Spectrum per-key RGB keyboards\n* `--force-disable-lenovolighting` - disables all lighting features related to panel logo, ports backlight and some white backlit keyboards\n* `--experimental-gpu-working-mode` - changes GPU Working Mode switch to use experimental method, that is used by LegionZone _(No support is provided when this argument is used)_\n* `--proxy-url=example.com` - specifies proxy server URL that LLT should use\n* `--proxy-username=some_username` - if applicable, specifies proxy server username to use\n* `--proxy-password=some_password` - if applicable, specifies proxy server password to use\n* `--proxy-allow-all-certs` - if needed relaxes criteria needed to establish HTTPS/SSL connections via proxy server\n* `--disable-update-checker` - disable update checks in LLT, in case you want to rely on winget, scoop etc.\n* `--disable-conflicting-software-warning` - disables warning banners when conflicting software is running\n\nIf you decide to use the arguments with `args.txt` file:\n1. Go to `%LOCALAPPDATA%\\LenovoLegionToolkit`\n2. Create or edit `args.txt` file in there\n3. Paste **one** argument per line\n4. Start LLT\n\nArguments not listed above are no longer needed or available.\n\n## How to collect logs?\n\nIn all troubleshooting situations, logs provide important information. **Always** attach logs to your issues. Critical error logs are saved automatically and saved under `\"%LOCALAPPDATA%\\LenovoLegionToolkit\\log\"`.\n\nTo collect logs:\n\n1. Make sure that Lenovo Legion Toolkit is not running (also gone from tray area).\n2. Open `Run` (Win+R) and type there: `\"%LOCALAPPDATA%\\Programs\\LenovoLegionToolkit\\Lenovo Legion Toolkit.exe\" --trace` and hit OK\n3. LLT will start and in the title bar you should see: `[LOGGING ENABLED]`\n4. Reproduce the issue you have (i.e. try to use the option that causes issues)\n5. Close LLT (also make sure it's gone from tray area)\n6. Again, in `Run` (Win+R) type `\"%LOCALAPPDATA%\\LenovoLegionToolkit\\log\"`\n7. You should see at least one file. Theses are the logs you should attach to the issue.\n\n## Contribution\n\nI appreciate any feedback that you have, so please do not hesitate to report issues.\nPull Requests are also welcome, but make sure to check out [CONTRIBUTING.md](CONTRIBUTING.md) first!\n\n#### Compatibility\n\n> [!IMPORTANT]\n> If your laptop is not part of Legion, IdeaPad Gaming or LOQ series, this software is not for you. Do not open compatibility requests for other devices.\n\nIt would be great to expand the list of compatible devices, but to do it your help is needed!\n\nIf you are willing to check if this app works correctly on your device that is currently unsupported, click _Continue_ on the popup you saw on startup. Lenovo Legion Toolkit will start logging automatically so you can submit them if anything goes wrong.\n\n*Remember that some functions may not function properly.*\n\nI would appreciate it, if you create an issue here on GitHub with the results of your testing.\n\nMake sure to include the following information in your issue:\n\n1. Full model name (i.e. Legion 5 Pro 16ACH6H)\n2. List of features that are working as expected.\n3. List of features that seem to not work.\n4. List of features that crash the app.\n\nThe more info you add, the better the app will get over time. If anything seems off, write down precisely what was wrong and attach logs (`%LOCALAPPDATA%\\LenovoLegionToolkit\\log`). \n\n\n\nThanks in advance!\n"
  },
  {
    "path": "README_ja-JP.md",
    "content": "<img height=\"128\" align=\"left\" src=\"assets/logo.png\" alt=\"Logo\">\n\n# レノボ・レギオン・ツールキット\n\n[![Build](https://github.com/BartoszCichecki/LenovoLegionToolkit/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/BartoszCichecki/LenovoLegionToolkit/actions/workflows/build.yml)\n[![Crowdin](https://badges.crowdin.net/llt/localized.svg)](https://crowdin.com/project/llt)\n[![Join Discord](https://img.shields.io/discord/761178912230473768?label=Legion%20Series%20Discord)](https://discord.com/invite/legionseries)\n<a href=\"https://hellogithub.com/repository/dd55be3ac0c146208259f17b29d2162f\" target=\"_blank\"><img src=\"https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=dd55be3ac0c146208259f17b29d2162f&claim_uid=LBbuUlZqTIm1JAP&theme=small\" alt=\"Featured｜HelloGitHub\" /></a>\n\n---\n\n#### 他の言語バージョンのこのREADMEファイル：\n* [英語版のREADME](README.md)\n* [簡体字中国語版のREADME](README_zh-hans.md)\n\n---\n\n<br />\n\nレノボ・レギオン・ツールキット（LLT）は、レノボ・レギオン（および類似の）シリーズのノートパソコン向けに作成されたユーティリティで、Lenovo VantageやLegion Zoneでのみ利用可能な機能を変更することができます。\n\nバックグラウンドサービスを実行せず、メモリを少なく使用し、CPUをほとんど使用せず、テレメトリを含みません。Lenovo Vantageと同様に、このアプリケーションはWindows専用です。\n\n_レギオンシリーズのDiscordに参加してください：https://discord.com/invite/legionseries!_\n\n<img src=\"assets/screenshot_main.png\" width=\"700\" />\n\n&nbsp;\n\n# 目次\n  - [免責事項](#免責事項)\n  - [ダウンロード](#ダウンロード)\n  - [互換性](#互換性)\n  - [機能](#機能)\n  - [寄付](#寄付)\n  - [クレジット](#クレジット)\n  - [FAQ](#faq)\n  - [引数](#引数)\n  - [ログの収集方法](#ログの収集方法)\n  - [貢献](#貢献)\n\n## 免責事項\n\n**このツールには保証がありません。自己責任で使用してください。**\n\nこのREADMEを注意深く読んでください。重要な情報が含まれています。\n\n## ダウンロード\n\n次の方法でプログラムをダウンロードできます：\n\n- [リリースページ](https://github.com/BartoszCichecki/LenovoLegionToolkit/releases/latest)から手動でダウンロード\n- [winget](https://github.com/microsoft/winget-cli)を使用：\n\n  ```sh\n  winget install BartoszCichecki.LenovoLegionToolkit\n  ```\n\n- [Scoop](https://scoop.sh)を使用：\n\n  ```sh\n  scoop bucket add versions\n  ```\n\n  ```sh\n  scoop bucket add extras\n  ```\n  \n  ```sh\n  scoop install extras/lenovolegiontoolkit\n  ```\n  \n> [!TIP]\n> Linux用のVantageの代替品を探している場合は、[LenovoLegionLinux](https://github.com/johnfanv2/LenovoLegionLinux)プロジェクトをチェックしてください。\n\n#### 次のステップ\n\nLLTはバックグラウンドで実行されているときに最適に動作するため、設定に移動して_自動起動_と_閉じると最小化_を有効にします。次に、VantageとHotkeysを無効にするか、アンインストールします。その後、LLTは常に起動時に実行され、VantageとHotkeysが処理していたすべての機能を引き継ぎます。\n\n> [!WARNING]\n> LLTを完全に閉じると、Windowsの電源モードや電源プランの同期、マクロ、アクションなどの一部の機能が動作しなくなります。これは、LLTがバックグラウンドサービスを実行せず、変更に応答できないためです。\n\n#### 必要なドライバ\n\nクリーンなWindowsインストールにLLTをインストールした場合、必要なドライバがインストールされていることを確認してください。ドライバが不足している場合、一部のオプションが利用できないことがあります。特に、次の2つがシステムにインストールされていることを確認してください：\n1. Lenovo Energy Management\n2. Lenovo Vantage Gaming Feature Driver\n\n#### .NETの問題？\n\n何らかの理由でLLTインストーラーが.NETを正しく設定しなかった場合：\n1. https://dotnet.microsoft.com/en-us/download/dotnet/8.0にアクセスします\n2. \".NET Desktop Runtime\"セクションを見つけます\n3. x64 Windowsインストーラーをダウンロードします\n4. インストーラーを実行します\n\n> [!NOTE]\n> ScoopからLLTをインストールした場合、.NET 8は依存関係として自動的にインストールされるはずです。何かが失敗した場合、`scoop update`を使用してすべてのパッケージを更新し、`--force`引数を使用してLLTを再インストールしてみてください。\n\nこれらの手順を実行した後、ターミナルを開いて`dotnet --info`と入力できます。出力で`.NET runtimes installed`セクションを探し、このセクションに次のようなものが表示されるはずです：\n\n`Microsoft.NETCore.App 8.0.0 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]`\n\nおよび\n\n`Microsoft.WindowsDesktop.App 8.0.0 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]`\n\n正確なバージョン番号は異なる場合がありますが、`8.x.x`であれば問題ありません。これらの手順を実行した後でも、LLTが起動時に.NETが見つからないなどのエラーを表示する場合、問題はLLTではなく、あなたのマシンにあります。\n\n#### テストに協力したいですか？\n\n[Legion Series Discord](https://discord.com/invite/legionseries)に参加し、`#legion-toolkit`チャンネルに移動してください。将来のリリースのベータ版が頻繁に投稿されます！\n\n## 互換性\n\nLenovo Legion Toolkitは、Lenovo LegionノートパソコンおよびIdeapad Gaming、LOQなどの類似のノートパソコン向けに作成されています。\n\n第6世代（MY2021）、第7世代（MY2022）、第8世代（MY2023）がサポートされていますが、一部の機能は第5世代（MY2020）でも動作します。第6世代以前のデバイスやLegion以外のデバイスに関連する問題は、このプロジェクトの範囲外です。\n\n起動時に互換性のないメッセージが表示される場合は、下部の*貢献*セクションを確認して、どのように支援できるかを確認してください。すべてのハードウェアとすべてのオプションを互換性のあるものにすることはできない場合がありますので、ご了承ください。\n\n**他のノートパソコンのサポートは計画されていません。**\n\n### Lenovoのソフトウェア\n\n全体的な推奨事項として、LLTを使用している間はVantage、Hotkeys、Legion Zoneを無効にするかアンインストールすることをお勧めします。LLTが他のLenovoアプリと一緒に動作する場合、一部の機能が競合したり、正常に動作しないことがあります。\n\n> [!TIP]\n> LLTの無効化オプションを使用するのが最も簡単な方法です。\n\n### その他の注意事項\n\nLLTは現在、複数のユーザーのインストールをサポートしていないため、ノートパソコンに複数のユーザーが必要な場合、問題が発生する可能性があります。管理者権限のないアカウントにも同様の問題が発生します。LLTは管理者権限のあるアカウントが必要です。管理者権限のないアカウントにLLTをインストールすると、LLTは正常に動作しません。\n\n## 機能\n\nこのアプリは次のことができます：\n\n- Vantageを通じてのみ利用可能な電源モード、バッテリーチャージモードなどの設定を変更します。\n- Spectrum RGB、4ゾーンRGB、ホワイトバックライトキーボードのサポート。\n- dGPUのアクティビティを監視します（NVIDIAのみ）。\n- ノートパソコンがAC電源に接続されたときに実行されるアクションを定義します。\n- バッテリースタティスティクスを表示します。\n- コマンドラインからノートパソコンの機能を制御します。\n- ドライバとソフトウェアの更新を確認します。\n- 保証ステータスを確認します。\n- Lenovo Vantage、Legion Zone、Lenovo Hotkeysサービスをアンインストールせずに無効にします。\n- ...その他多数！\n\n### カスタムモード\n\nカスタムモードは、すべてのデバイスでサポートされています。電源モードのドロップダウンに表示され、基本的には4番目の電源モードであり、電力制限やファンの調整が可能です。カスタムモードはFn+Qショートカットでアクセスできません。すべてのデバイスがカスタムモードのすべての機能をサポートしているわけではありません。\n\n次のBIOSを持っている場合：\n* G9CN（24以上）\n* GKCN（46以上）\n* H1CN（39以上）\n* HACN（31以上）\n* HHCN（20以上）\n\nカスタムモードが正常に機能するために、上記の最小バージョンに更新してください。\n\n### RGBと照明\n\nSpectrum per-key RGBと4ゾーンRGBバックライトの両方がサポートされています。競合を避けるために、Vantageとそのサービスを無効にする必要があります。他のRGBアプリを使用している場合は、[FAQ](#faq)の解決策を確認してください。\n\n他の照明機能（1レベルおよび3レベルのホワイトキーボードバックライト、パネルロゴ、リアポートバックライトなど）もサポートされていますが、いくつかの制約があります：\n\n* GKCN54WWおよびそれ以下のバージョン - これらのBIOSバージョンのバグにより、一部の照明機能が無効になっています\n* 一部の（主に第6世代の）ノートパソコンモデルは、すべてのオプションを表示しないか、存在しないオプションを表示することがあります - これは、これらの機能の可用性を報告しない誤ったBIOS設定によるものです\n\nCorsair iCueを必要とする照明は、LLTではサポートされていません。\n\n> [!IMPORTANT]\n> Riot Vanguard DRM（Valorantなどで使用される）は、RGBコントロールに問題を引き起こすことが知られています。RGB設定が表示されず、インストールされている場合は、起動時に実行されないようにするか、アンインストールしてください。\n\n### ハイブリッドモードとGPU動作モード\n\n> [!NOTE]\n> ハイブリッドモード/GPU動作モードオプションはAdvanced Optimusではなく、それとは別に動作します。\n\ndGPUを使用する主な方法は2つあります：\n\n1. ハイブリッドモードオン - 内部ノートパソコンディスプレイが統合GPUに接続され、必要に応じてdGPUが動作し、使用されていないときに電源がオフになります。これにより、バッテリー寿命が向上します。\n2. ハイブリッドモードオフ（dGPU） - 内部ノートパソコンディスプレイが直接dGPUに接続され、最高のパフォーマンスを提供しますが、バッテリー寿命が最悪になります。\n\nこれらの2つのモードを切り替えるには、再起動が必要です。\n\n第7世代および第8世代のノートパソコンでは、ハイブリッドモードに追加の2つの設定があります：\n\n1. ハイブリッドiGPUのみ - このモードでは、dGPUが切断されます（USBドライブの取り外しのように考えてください）。これにより、最高のバッテリー寿命を達成するために電力を使用するリスクがありません。\n2. ハイブリッド自動 - 上記と同様ですが、バッテリー電源でdGPUを自動的に切断し、ACアダプタを接続すると再接続します。\n\ndGPUが使用されている場合、dGPUは切断されないことがあり、ほとんどの場合、切断されません。これには、dGPUを使用するアプリ、外部モニターの接続、およびLenovoによって指定されていないその他のケースが含まれます。LLTの「Deactivate GPU」オプションを使用する場合、問題が発生する前に、dGPUがオフになっており、外部画面が接続されていないことを確認してください。\n\n上記のすべての設定は、ECの組み込み機能を使用しており、これらの機能がどれだけうまく機能するかは、Lenovoのファームウェア実装に依存します。私の観察によると、頻繁に切り替えない限り、これらの機能は信頼性があります。これらの方法の変更は瞬時に行われないため、忍耐が必要です。LLTは、頻繁なハイブリッドモードの切り替えを禁止し、ECがdGPUを起動できなかった場合に追加の試行を行うことで、これらの問題を軽減しようとします。dGPUが再表示されるまでに最大10秒かかる場合があります。\n\n問題が発生した場合は、GPU動作モードの実験的な方法を試してみてください。詳細については、[引数](#引数)セクションを参照してください。\n\n> [!WARNING]\n> デバイスマネージャーを使用してdGPUを無効にしても、デバイスは切断されず、高い電力消費を引き起こします！\n\n### NVIDIA dGPUの無効化\n\ndGPUがアクティブなままになることがあります。たとえば、外部画面を接続して切断した場合、一部のプロセスがdGPUで実行され続け、バッテリー寿命が短くなります。\n\nGPUを無効にするための2つの方法があります：\n\n1. dGPUで実行されているすべてのプロセスを強制終了します（これが最も効果的です）。\n2. dGPUを短時間無効にし、すべてのプロセスを統合GPUに移動させます。\n\ndGPUがアクティブで、ハイブリッドモードが有効で、dGPUに接続された画面がない場合、無効化ボタンが有効になります。ボタンにカーソルを合わせると、dGPUの現在のP状態とdGPUで実行されているプロセスのリストが表示されます。\n\n> [!NOTE]\n> 一部のアプリは、この機能を使用するとクラッシュすることがあります。\n\n### NVIDIA dGPUのオーバークロック\n\nオーバークロックオプションは、Vantageで利用可能なものと同様のシンプルなオーバークロックを目的としています。Afterburnerなどのツールの代わりにはなりません。次の点に注意してください：\n* ノートパソコンにそのようなオプションがある場合、BIOSでGPUオーバークロックが有効になっていることを確認してください。\n* VantageまたはLegionZoneがバックグラウンドで実行されている場合、オーバークロックは機能しません。\n* 他のツール（Afterburnerなど）を使用している場合、このオプションを使用することはお勧めしません。\n* ダッシュボードを編集した場合、コントロールを手動で追加する必要があるかもしれません。\n\n### Windows電源プランとWindows電源モード\n\nまず、LLTで表示される電源モード（またはFn+Qで切り替える）は、電源プラン（コントロールパネルからアクセスするもの）や電源モード（設定アプリから変更できるもの）とは異なります。\n\n現代の（お勧めの）アプローチは、Windows電源モードを使用し、デフォルトの「バランス（推奨）」電源プランのみを使用することです。Windows設定アプリで選択できる3つの電源モードがあります：\n\n* 最高の電力効率\n* バランス\n* 最高のパフォーマンス\n\nこれらをLLT設定で、Quiet、Balance、Performance、Customの各レギオン電源モードに割り当てることができます。これを行うと、レギオン電源モードを変更するたびに、対応するWindows電源モードが自動的に設定されます。\n\n従来のアプローチは、複数の電源プランを使用することです。これらのプランは、一部のデバイスに工場出荷時にインストールされています。これらを使用するか、独自のプランを構成する場合、Windows設定アプリの設定をデフォルトの「バランス」に設定しておきます。LLT設定で、レギオン電源モードを変更するたびに電源プランを自動的に切り替えるように構成できます。\n\n電源モードやプランの同期に問題がある場合、特に2つのアプローチを切り替える場合、`powercfg -restoredefaultschemes; shutdown /r /t `コマンドを使用してWindows電源設定をデフォルトにリセットできます。このコマンドは、すべての電源プランをデフォルトにリセットし、デバイスを再起動します。デフォルトの「バランス（推奨）」以外のすべてのプランが削除されるため、再度使用する予定がある場合は、コピーを作成してください。\n\n### ブートロゴ\n\n第6世代および第7世代のノートパソコンでは、ブートロゴ（起動時に表示されるデフォルトの「Legion」画像）を変更することができます。ブートロゴはUEFIに保存されておらず、ブートドライブのUEFIパーティションに保存されています。カスタムブートロゴを設定する際、LLTは解像度、画像形式などの基本的なチェックを行い、互換性を確保するためにチェックサムを計算します。ただし、実際の検証は次回の起動時に行われます。UEFIはUEFIパーティションから画像を読み込み、表示しようとします。何らかの理由で失敗した場合、デフォルトの画像が使用されます。解像度と画像形式以外の正確な基準は不明であり、一部の画像は表示されないことがあります。この場合、別の画像を試してみてください。\n\n### アクションからプログラムやスクリプトを実行する\n\nアクションの「実行」ステップを使用して、アクションから任意のプログラムやスクリプトを開始できます。構成するには、実行可能ファイル（`.exe`）またはスクリプト（`.bat`）へのパスを提供する必要があります。オプションで、スクリプトやプログラムがサポートする引数を提供することもできます。これは、コマンドラインから何かを実行するのと同じです。\n\n<details>\n<summary>例</summary>\n\n_ノートパソコンをシャットダウン_\n - 実行可能ファイルのパス：`shutdown`\n - 引数：`/s /t 0`\n\n_ノートパソコンを再起動_\n - 実行可能ファイルのパス：`shutdown`\n - 引数：`/r`\n\n_プログラムを実行_\n - 実行可能ファイルのパス：`C:\\path\\to\\the\\program.exe`（プログラムがPATH変数にある場合、名前のみを使用できます）\n - 引数：` `（オプション、サポートされている引数のリストについては、プログラムのREADME、ウェブサイトなどを確認してください）\n\n_スクリプトを実行_\n - 実行可能ファイルのパス：`C:\\path\\to\\the\\script.bat`（スクリプトがPATH変数にある場合、名前のみを使用できます）\n - 引数：` `（オプション、サポートされている引数のリストについては、スクリプトのREADME、ウェブサイトなどを確認してください）\n\n_Pythonスクリプト_\n - 実行可能ファイルのパス：`C:\\path\\to\\python.exe`（またはPATH変数にある場合は`python`）\n - 引数：`C:\\path\\to\\script.py`\n\n </details>\n\n#### 環境\n\nLLTは、スクリプト内からアクセスできるいくつかの変数をプロセス環境に自動的に追加します。これらの変数は、コンテキストが必要な高度なスクリプトに役立ちます。トリガーに応じて、異なる変数が追加されます。\n\n<details>\n<summary>環境変数</summary>\n\n- AC電源アダプタが接続されたとき\n\t- `LLT_IS_AC_ADAPTER_CONNECTED=TRUE`\n- 低電力AC電源アダプタが接続されたとき\n\t- `LLT_IS_AC_ADAPTER_CONNECTED=TRUE`\n\t- `LLT_IS_AC_ADAPTER_LOW_POWER=TRUE`\n- AC電源アダプタが切断されたとき\n\t- `LLT_IS_AC_ADAPTER_CONNECTED=FALSE`\n- 電源モードが変更されたとき\n\t- `LLT_POWER_MODE=<value>`、ここで`value`は次のいずれか：`1` - Quiet、`2` - Balance、`3` - Performance、`255` - Custom\n\t- `LLT_POWER_MODE_NAME=<value>`、ここで`value`は次のいずれか：`QUIET`、`BALANCE`、`PERFORMANCE`、`CUSTOM`\n- ゲームが実行されているとき\n\t- `LLT_IS_GAME_RUNNING=TRUE`\n- ゲームが終了したとき\n\t- `LLT_IS_GAME_RUNNING=FALSE`\n- アプリが開始されたとき\n\t- `LLT_PROCESSES_STARTED=TRUE`\n\t- `LLT_PROCESSES=<value>`、ここで`value`はカンマ区切りのプロセス名のリスト\n- アプリが終了したとき\n\t- `LLT_PROCESSES_STARTED=FALSE`\n\t- `LLT_PROCESSES=<value>`、ここで`value`はカンマ区切りのプロセス名のリスト\n- 蓋が開いたとき\n\t- `LLT_IS_LID_OPEN=TRUE`\n- 蓋が閉じたとき\n\t- `LLT_IS_LID_OPEN=FALSE`\n- ディスプレイがオンになったとき\n\t- `LLT_IS_DISPLAY_ON=TRUE`\n- ディスプレイがオフになったとき\n\t- `LLT_IS_DISPLAY_ON=FALSE`\n- 外部ディスプレイが接続されたとき\n\t- `LLT_IS_EXTERNAL_DISPLAY_CONNECTED=TRUE`\n- 外部ディスプレイが切断されたとき\n\t- `LLT_IS_EXTERNAL_DISPLAY_CONNECTED=FALSE`\n- HDRがオンになったとき\n\t- `LLT_IS_HDR_ON=TRUE`\n- HDRがオフになったとき\n\t- `LLT_IS_HDR_ON=FALSE`\n- WiFiが接続されたとき\n\t- `LLT_WIFI_CONNECTED=TRUE`\n\t- `LLT_WIFI_SSID=<value>`、ここで`value`はネットワークのSSID\n- WiFiが切断されたとき\n\t- `LLT_WIFI_CONNECTED=FALSE`\n- 指定された時間に\n\t- `LLT_IS_SUNSET=<value>`、ここで`value`はトリガーの設定に応じて`TRUE`または`FALSE`\n\t- `LLT_IS_SUNRISE=<value>`、ここで`value`はトリガーの設定に応じて`TRUE`または`FALSE`\n\t- `LLT_TIME\"`、ここで`value`はトリガーの設定に応じて`HH:mm`\n\t- `LLT_DAYS\"`, ここで`value`はトリガーの設定に応じて次のいずれかのカンマ区切りリスト：`MONDAY`、`TUESDAY`、`WEDNESDAY`、`THURSDAY`、`FRIDAY`、`SATURDAY`、`SUNDAY`\n- 定期的なアクション\n\t- `LLT_PERIOD=<value>`、ここで`value`は間隔の秒数\n- 起動時\n\t- `LLT_STARTUP=TRUE`\n- 再開時\n\t- `LLT_RESUME=TRUE`\n\n</details>\n\n#### 出力\n\n「終了を待つ」がチェックされている場合、LLTは起動されたプロセスの標準出力からの出力をキャプチャします。この出力は`$RUN_OUTPUT$`変数に保存され、「通知を表示」ステップで表示できます。\n\n### CLI\n\nLLTの一部の機能をコマンドラインから直接制御することができます。CLI実行可能ファイルは`llt.exe`と呼ばれ、インストールディレクトリにあります。\n\nCLIが正常に動作するためには、LLTがバックグラウンドで実行されており、CLIオプションがLLT設定で有効になっている必要があります。`llt.exe`をPATH変数に追加して、より簡単にアクセスできるようにすることもできます。\n\nCLIは管理者として実行する必要はありません。\n\n<details>\n<summary>機能</summary>\n\n* `llt quickAction --list` - すべてのクイックアクションをリストします\n* `llt quickAction <name>` - 指定された`<name>`のクイックアクションを実行します\n* `llt feature --list` - サポートされているすべての機能をリストします\n* `llt feature get <name>` - 指定された`<name>`の機能の値を取得します\n* `llt feature set <name> --list` - 指定された`<name>`の機能のすべての値をリストします\n* `llt feature set <name> <value>` - 指定された`<name>`の機能を指定された`<value>`に設定します\n* `llt spectrum profile get` - 現在のSpectrum RGBプロファイルを取得します\n* `llt spectrum profile set <profile>` - Spectrum RGBプロファイルを`<profile>`に設定します\n* `llt spectrum brightness get` - 現在のSpectrum RGBの明るさを取得します\n* `llt spectrum brightness set <brightness>` - Spectrum RGBの明るさを`<brightness>`に設定します\n* `llt rgb get` - 現在の4ゾーンRGBプリセットを取得します\n* `llt rgb set <profile>` - 4ゾーンRGBを`<preset>`に設定します\n\n</details>\n\n## 寄付\n\nLenovo Legion Toolkitを楽しんで使用している場合は、寄付を検討してください。\n\n[PayPalで寄付](https://www.paypal.com/donate/?hosted_button_id=22AZE2NBP3HTL)\n\n<img src=\"LenovoLegionToolkit.WPF/Assets/Donate/paypal_qr.png\" width=\"200\" alt=\"PayPal QR code\" />\n\n## クレジット\n\n特別な感謝を：\n\n* [ViRb3](https://github.com/ViRb3)、[Lenovo Controller](https://github.com/ViRb3/LenovoController)を作成し、このツールの基盤として使用されました\n* [falahati](https://github.com/falahati)、[NvAPIWrapper](https://github.com/falahati/NvAPIWrapper)および[WindowsDisplayAPI](https://github.com/falahati/WindowsDisplayAPI)を作成しました\n* [SmokelessCPU](https://github.com/SmokelessCPU)、4ゾーンRGBおよびSpectrumキーボードのサポートに協力しました\n* [Mario Bălănică](https://github.com/mariobalanica)、すべての貢献に感謝します\n* [Ace-Radom](https://github.com/Ace-Radom)、すべての貢献に感謝します\n\n翻訳提供者：\n* ブルガリア語 - [Ekscentricitet](https://github.com/Ekscentricitet)\n* 簡体字中国語 - [凌卡Karl](https://github.com/KarlLee830)、[Ace-Radom](https://github.com/Ace-Radom)\n* 繁体字中国語 - [flandretw](https://github.com/flandretw)\n* チェコ語 - J0sef\n* オランダ語 - Melm、[JarneStaalPXL](https://github.com/JarneStaalPXL)\n* フランス語 - EliotAku、[Georges de Massol](https://github.com/jojo2massol)、Rigbone、ZeroDegree\n* ドイツ語 - Sko-Inductor、Running_Dead89\n* ギリシャ語 - GreatApo\n* イタリア語 - [Lampadina17](https://github.com/Lampadina17)\n* カラカルパク語 - KarLin、Gulnaz、Niyazbek Tolibaev、Shingis Joldasbaev\n* ラトビア語 - RJSkudra\n* ルーマニア語 - [Mario Bălănică](https://github.com/mariobalanica)\n* スロバキア語 - Mitschud、Newbie414\n* スペイン語 - M.A.G.\n* ポルトガル語 - dvsilva\n* ポルトガル語（ブラジル） - Vernon\n* ロシア語 - [Edward Johan](https://github.com/younyokel)\n* トルコ語 - Undervolt\n* ウクライナ語 - [Vladyslav Prydatko](https://github.com/va1dee)、[Dmytro Zozulia](https://github.com/Nollasko)\n* ベトナム語 - Not_Nhan、Kuri、Nagidrop\n\n翻訳を監視および修正してくれたすべての人に感謝します！\n\n## FAQ\n\n- [Vantageをアンインストールしたのに、なぜまだ実行中のメッセージが表示されるのですか？](#Vantageをアンインストールしたのになぜまだ実行中のメッセージが表示されるのですか)\n- [インストーラーにウイルス/トロイの木馬/マルウェアが含まれているとアンチウイルスが報告するのはなぜですか？](#インストーラーにウイルストロイの木馬マルウェアが含まれているとアンチウイルスが報告するのはなぜですか)\n- [ホットキーをカスタマイズできますか？](#ホットキーをカスタマイズできますか)\n- [コンザベーションモードのしきい値をカスタマイズできますか？](#コンザベーションモードのしきい値をカスタマイズできますか)\n- [Quiet、Balance、Performanceモードでファンをカスタマイズできますか？](#QuietBalancePerformanceモードでファンをカスタマイズできますか)\n- [バッテリーでPerformanceまたはCustom Power Modeに切り替えられないのはなぜですか？](#バッテリーでPerformanceまたはCustom-Power-Modeに切り替えられないのはなぜですか)\n- [AIエンジンが有効な場合、Performanceモードへの切り替えがバグのように見えるのはなぜですか？](#AIエンジンが有効な場合Performanceモードへの切り替えがバグのように見えるのはなぜですか)\n- [マザーボードの交換後に互換性のないメッセージが表示されるのはなぜですか？](#マザーボードの交換後に互換性のないメッセージが表示されるのはなぜですか)\n- [アクションが正しく構成されているのに、ゲームが検出されないのはなぜですか？](#アクションが正しく構成されているのにゲームが検出されないのはなぜですか)\n- [LLTを使用している間に他のRGBソフトウェアを使用できますか？](#LLTを使用している間に他のRGBソフトウェアを使用できますか)\n- [iCue RGBキーボードはサポートされますか？](#iCue-RGBキーボードはサポートされますか)\n- [RGBエフェクトを増やすことはできますか？](#RGBエフェクトを増やすことはできますか)\n- [他のモデルにファンコントロールを追加できますか？](#他のモデルにファンコントロールを追加できますか)\n- [LLTアイコンにカーソルを合わせたときにカスタムツールチップが表示されないのはなぜですか？](#LLTアイコンにカーソルを合わせたときにカスタムツールチップが表示されないのはなぜですか)\n- [CPUをオーバークロック/アンダーボルトする方法は？](#CPUをオーバークロックアンダーボルトする方法は)\n- [GPUをオーバークロックしすぎた場合はどうすればよいですか？](#GPUをオーバークロックしすぎた場合はどうすればよいですか)\n- [ブートロゴが適用されないのはなぜですか？](#ブートロゴが適用されないのはなぜですか)\n- [スマートFnロックを使用しているときにスタッタリングが発生するのはなぜですか？](#スマートFnロックを使用しているときにスタッタリングが発生するのはなぜですか)\n- [私のノートパソコンはどの世代ですか？](#私のノートパソコンはどの世代ですか)\n\n#### Vantageをアンインストールしたのに、なぜまだ実行中のメッセージが表示されるのですか？\n\nバージョン2.14.0以降、LLTはVantageに関連する残りのプロセスの検出に関して非常に厳格です。Vantageは3つのコンポーネントをインストールします：\n\n1. Lenovo Vantageアプリ\n2. Lenovo Vantageサービス\n3. System Interface Foundation V2デバイス\n\n最も簡単な解決策は、LLT設定に移動し、Lenovo Vantage、LegionZone、Hotkeysを無効にするオプションを選択することです（インストールされているもののみが表示されます）。\n\nそれらを削除したい場合は、すべての3つをアンインストールすることを確認してください。そうしないと、LLTの一部のオプションが利用できなくなります。タスクマネージャーで`Vantage`または`ImController`を含むプロセスを確認できます。`ImController`プロセスを削除するのに問題がある場合は、[System Interface Foundation V2デバイスのアンインストール](https://support.lenovo.com/us/en/solutions/HT506070)ガイドを参照してください。\n\n#### インストーラーにウイルス/トロイの木馬/マルウェアが含まれているとアンチウイルスが報告するのはなぜですか？\n\nLLTは、多くの低レベルのWindows APIを使用しており、アンチウイルスによって疑わしいと誤ってフラグが立てられることがあります。LLTはオープンソースであり、このソフトウェアが何をしているのか疑問がある人は誰でも簡単に監査できます。すべてのインストーラーはGitHubで直接ビルドされており、GitHub Actionsを使用しているため、含まれているものに疑問の余地はありません。この問題は、すべてのコードに署名することで解決できますが、拡張検証証明書に年間数百ドルを費やす余裕はありません。\n\nこのプロジェクトのウェブサイトからインストーラーをダウンロードした場合、心配する必要はありません - 警告は誤検知です。問題の解決に協力できる場合は、連絡を取りましょう。\n\n#### ホットキーをカスタマイズできますか？\n\nLLT設定でFn+F9ホットキーをカスタマイズできます。他のホットキーはカスタマイズできません。\n\n#### コンザベーションモードのしきい値をカスタマイズできますか？\n\nいいえ。コンザベーションモードのしきい値は、ファームウェアで60％（2021年およびそれ以前）または80％（2022年およびそれ以降）\n"
  },
  {
    "path": "README_zh-hans.md",
    "content": "<img height=\"128\" align=\"left\" src=\"assets/logo.png\" alt=\"Logo\">\n\n# 拯救者工具箱 Lenovo Legion Toolkit\n\n[![Build](https://github.com/BartoszCichecki/LenovoLegionToolkit/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/BartoszCichecki/LenovoLegionToolkit/actions/workflows/build.yml)\n[![Crowdin](https://badges.crowdin.net/llt/localized.svg)](https://crowdin.com/project/llt)\n[![Join Discord](https://img.shields.io/discord/761178912230473768?label=Legion%20Series%20Discord)](https://discord.com/invite/legionseries)\n<a href=\"https://hellogithub.com/repository/dd55be3ac0c146208259f17b29d2162f\" target=\"_blank\"><img src=\"https://abroad.hellogithub.com/v1/widgets/recommend.svg?rid=dd55be3ac0c146208259f17b29d2162f&claim_uid=LBbuUlZqTIm1JAP&theme=small\" alt=\"Featured｜HelloGitHub\" /></a>\n\n---\n\n联想拯救者工具箱 Lenovo Legion Toolkit (LLT) 是为联想拯救者系列笔记本打造的轻量化工具箱。可实现原来联想软件如 Lenovo Vantage、Legion Zone、联想电脑管家才可实现的功能。\n\n**本软件仅适配拯救者系列，如果你不是拯救者系列笔记本则这个软件不适合你，请不要提出兼容 Issue ，如果提出将被直接关闭不作受理。**\n\n本软件不运行后台服务，使用较少的内存，几乎不使用 CPU，并且不收集用户信息。本程序仅适用于 Windows。\n\n加入 Legion Series Discord 频道: https://discord.com/invite/legionseries!\n\n**中文用户可加入[拯救者工具箱 QQ 频道](https://pd.qq.com/s/jj0737)，频道内推送正式版/测试版更新并附带国内镜像加速下载链接。**\n\n<img src=\"assets/screenshot_zh_hans.png\" width=\"700\" />\n\n&nbsp;\n\n# 目录\n  - [免责声明](#免责声明)\n  - [下载](#下载)\n  - [兼容性](#兼容性)\n  - [功能介绍](#功能介绍)\n  - [赞助](#赞助)\n  - [贡献者](#贡献者)\n  - [FAQ](#faq)\n  - [如何开启记录Log](#如何开启记录Log)\n  - [贡献此项目](#贡献此项目)\n\n## 免责声明\n\n**本软件非联想官方出品软件，使用需要自担风险。**\n\n请仔细耐心地阅读本文档，以便了解关于本软件的一些重要信息。\n\n## 下载\n\n- 你可以在这里下载最新版本：[发行版页面 Releases page](https://github.com/BartoszCichecki/LenovoLegionToolkit/releases/latest)。\n- 使用 [winget](https://github.com/microsoft/winget-cli)：\n\n  ```sh\n  winget install BartoszCichecki.LenovoLegionToolkit\n  ```\n\n- 使用 [Scoop](https://scoop.sh)：\n\n  ```sh\n  scoop bucket add versions\n  ```\n\n  ```sh\n  scoop bucket add extras\n  ```\n\n  ```sh\n  scoop install extras/lenovolegiontoolkit\n  ```\n\n> [!TIP]\n> 如果你正在寻找一个 Lenovo Vantage 在 Linux 系统下的替代品，请查看 [LenovoLegionLinux](https://github.com/johnfanv2/LenovoLegionLinux) 项目。\n\n#### 接下来的步骤\n\n拯救者工具箱在后台运行时效果最好，所以去设置中启用_开机启动_和_关闭时最小化_。接下载就是在设置中禁用 Lenovo Vantage, Legion Zone 与 Lenovo Hotkeys，或者你也可以直接卸载他们。之后，拯救者工具箱将会在开机后自启并在后台一直保持运行，并接管 Lenovo Vantage, Legion Zone 与 Lenovo Hotkeys 的功能。\n\n> [!WARNING]\n> 如果你完全关闭拯救者工具箱，一些功能例如同步不同的性能模式（Fn + Q）与电源计划，键盘宏以及自动化功能将无法正常工作。这是因为 LLT **不运行任何后台服务**，也就意味着其无法在被完全关闭时响应指令或执行设置同步。\n\n另外，请查看下方的 [兼容性](#兼容性) 部分。\n\n#### 驱动依赖\n\n如果你是在一个纯净的 Windows 系统上安装 LLT，请确保你已经安装了必要的驱动，否则一些选项将不可用。请特别注意以下两个驱动已经被安装在你的系统上了：\n\n1. Lenovo Energy Management\n2. Lenovo Vantage Gaming Feature Driver\n\n#### 在安装 .NET 依赖时出现问题？\n\n如果拯救者工具箱安装程序没有正确安装 .NET 依赖，则请按照以下步骤手动安装：\n\n1. 打开 https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0\n2. 找到 “.NET 桌面运行时” 一栏；\n3. 点击安装程序下的“X64”一栏下载安装程序；\n4. 运行安装程序并按照指引进行安装。\n\n> [!NOTE]\n> 如果你是使用 Scoop 安装了 LLT，.NET 8 依赖应该已经被自动安装。如果它没有被安装或 LLT 无法正常启动，可以使用 `scoop update` 以更新所有软件包并加上 `--force` 参数以强制重新安装 LLT。\n\n\n在完成这些步骤后，你可以打开终端并输入： `dotnet --info`。在输出中寻找 \"已安装的 .NET 运行时 \"部分，你应该能看到类似的内容：\n\n`Microsoft.NETCore.App 8.0.0 [C:\\Program Files\\dotnet\\shared\\Microsoft.NETCore.App]`\n\n和\n\n`Microsoft.WindowsDesktop.App 8.0.0 [C:\\Program Files\\dotnet\\shared\\Microsoft.WindowsDesktop.App]`\n\n确切的版本号可能不同，但只要是`8.x.x`就应该没问题。如果经过上述步骤确认后，拯救者工具箱在启动时仍然报错提示找不到 .NET 之类的信息，那么就是你的机器或系统的问题，而不是拯救者工具箱的问题。\n\n#### 想要帮助我们测试？\n\n加入 [Legion Series Discord](https://discord.com/invite/legionseries) 并前往 `#legion-toolkit` 子频道，Beta 测试版与未来更新将会在那里频繁更新。\n\n中文用户可加入 [拯救者工具箱 QQ 频道](https://pd.qq.com/s/jj0737) 并前往 `#测试版更新💻` 子频道，Beta 测试版将会经常在那里同步发布。\n\n## 兼容性\n\n拯救者工具箱适配 2020 款及其之后的拯救者机型。\n\n一些功能在 2020 款之前发布的机型和 Ideapad Gaming 3 笔记本可以正常工作（或者说大部分工作），但可能会遇到一些小问题。这里是测试过支持的型号列表 [Compatibility.cs](https://github.com/BartoszCichecki/LenovoLegionToolkit/blob/master/LenovoLegionToolkit.Lib/Utils/Compatibility.cs)。\n\n如果你在启动时看到不兼容弹窗，你可以查看底部的*贡献*部分，查看你能否帮助我适配你的机型。谨记我没有那么多的笔记本型号，所以一些功能我无法适配。\n\n**拯救者系列与 Ideapad Gaming 系列之外的笔记本暂不考虑适配**\n\n### 联想软件兼容\n\n总的来说，建议在使用拯救者工具箱时禁用或卸载 Lenovo Vantage、Hotkeys 和 Legion Zone。当拯救者工具箱与其他联想应用程序一起工作时，可能会导致部分功能冲突或可能无法正常工作。\n\n> [!TIP]\n> 一般来说最简单的解决方法就是使用拯救者工具箱内的禁用选项。\n\n### 备注\n\n拯救者工具箱目前不支持多用户安装，所以如果你的笔记本电脑上有多个用户，你可能会遇到兼容性问题，即使是没有管理员权限的账户。拯救者工具箱需要一个有管理员权限的账户，拯救者工具箱无法在普通账户上正常运行。\n\n## 功能介绍\n\n拯救者工具箱可以做到：\n\n- 改变诸如性能模式、充电模式等只有通过 Lenovo Vantage、联想电脑管家才能更改的设置。\n- 使用并修改自定义模式，包括 2022 款及更新的机型的调节风扇曲线功能。\n- 支持调节 Spectrum RGB 键盘、4 分区 RGB 键盘和白色背光的键盘。\n- 监控独立显卡活动（仅限英伟达显卡）。\n- 设置当电脑接通电源时自动运行的操作。\n- 查看电池统计数据。\n- 从命令行控制设备。\n- 下载、更新驱动。\n- 无需卸载即可禁用 Lenovo Vantage、Legion Zone 和 Lenovo Hotkeys 服务。\n\n### 自定义模式\n\n以下版本的 BIOS 支持自定义模式：\n* GKCN（24及以上）\n* GKCN（46及以上）\n* H1CN（39及以上）\n* HACN（31及以上）\n* HHCN（20及以上）\n\n请确保你的 BIOS 版本达到以上最低版本限制。如果你仍然在使用更老版本的 BIOS，你需要先更新才能使用自定义模式。\n\n### RGB 和灯光控制\n\nLLT 支持 Spectrum 单键 RGB 和四分区 RGB 背光。请在使用这些功能前确保你已经禁用了 Lenovo Vantage，以避免双方同时发送控制信息造成冲突。如果你在使用别的可能和 LLT 冲突的 RGB 控制软件，请参考 [FAQ](#faq) 里的解决方案。\n\nLLT 也支持其他像一级或三级白色键盘背光，Legion Logo 背光和后部接口背光等灯光控制功能，不过有以下限制：\n\n* GKCN54WW 及以下版本的 BIOS 由于其中的 bug 会造成系统蓝屏，因此部分灯光控制功能被禁用。\n* 部分 Legion 笔记本型号（尤其是 2021 年的型号）可能不显示所有控制选项或显示部分不存在的选项。这主要是由于 BIOS 中对于功能可用性的配置错误。\n\n需要 Corsair iCue 的灯光控制不会被 LLT 支持。\n\n> [!IMPORTANT]\n> 目前已知 Riot Vanguard DRM（使用它的游戏有例如：瓦罗兰特） 会造成 RGB 和灯光控制功能出现问题。如果你在安装了它之后发现了 LLT 内 RGB 设置消失的错误，请卸载它或确保它并非开机自启项。\n\n### 混合模式和显卡工作模式\n\n> [!NOTE]\n> 请注意这些功能和英伟达 Advanced Optimus 动态显示切换不同，也不与其一同工作。\n\n你有两种主要工作模式来控制你的独立显卡工作方式：\n\n1. 启用混合模式 - 内置显示器会被连接到集成显卡，独立显卡只会在需要时工作以延长续航。\n2. 禁用混合模式（独显直连）- 内置显示器被直接连接到独立显卡以提高性能，但这也意味着电池续航会缩短。\n\n切换这两种工作模式需要重启电脑。\n\n在 2022 及 2023 年的型号上混合模式还有两个附加选项：\n\n1. 禁用独立显卡 - 这会断开独立显卡连接，以最大限度延长电池续航。\n2. 自动混合模式 - 这会在笔记本使用电池供电时尝试断开独立显卡连接，并在重新连接电源时重新启用独立显卡。\n\n当独立显卡在被使用时（包括有软件或程序调用了独立显卡，连接了外部显示器或其他联想没有说明的情况）独立显卡连接大概率无法被断开。请在使用 LLT 的强制休眠显卡功能之前确保 LLT 已经监测到了独立显卡关闭并没有连接外部显示器，否则可能会造成错误。\n\n所有以上提到的功能均是通过调用 EC（嵌入式控制器）的功能实现的，因此这些功能工作与否取决于联想固件的适配性，而非 LLT。据我的观察和测试，这些功能在大多数时候都是可靠的，除非你频繁切换显卡工作模式。电脑可能需要一定的时间才能完成切换，因此请在每次切换后稍作等待。LLT 也尝试通过阻止频繁切换显卡工作模式和在 EC 未能正常唤醒独立显卡时重试唤醒来缓解这个问题。因此在切换到混合模式时，当 EC 未能唤醒独立显卡时，独立显卡可能需要十秒左右才能重新出现。\n\n如果你还遇到问题，请尝试[命令行参数](#命令行参数)内的其他实验性显卡工作模式。\n\n> [!WARNING]\n> 通过设备管理器禁用独立显卡并不会断开独立显卡连接，并同时会导致高耗电量！\n\n### 强制休眠英伟达显卡\n\n有时独立显卡会一直保持活动状态。例如在你插上外接显示器并断开后，一些进程会继续使用独显上运行，导致续航骤减。\n\n在拯救者工具箱中有两种办法强制休眠显卡。\n\n1. 强制关闭所有在独显上运行的进程。（这种方式貌似更有效）,\n2. 短暂强制禁用独立显卡，使在独显上运行的进程全部切换到核显。\n\n当独显处于活动状态，并使用混合模式且没有外接显示器到独显上时，强制休眠显卡才会亮起。如果你将鼠标悬停在右侧的问号标志上，将会看到独显的状态与正在使用独显的进程。\n\n> [!NOTE]\n> 强制休眠显卡可能会导致一些应用崩溃。\n\n### 超频英伟达独立显卡\n\n此超频选项用于简单的超频，类似于 Legion Zone 与 Vantage 中的超频。它并不打算取代微星小飞机（Afterburner）等工具。同时以下有几点你需要注意：\n* 确保在 BIOS 中开启了 GPU 超频选项（如果你的电脑有的话）。\n* 当 Vantage 或 Legion Zone 运行时，超频无法生效。\n* 不建议在使用微星小飞机（Afterburner）等超频工具时使用此选项。\n* 如果你之前修改过控制台，那么你需要点击“自定义”按钮并添加此选项才能看到此选项。\n\n### Windows 电源计划和 Windows 性能模式\n\n首先，你在 LLT 中（或使用 Fn+Q）切换的性能模式和 Windows 电源计划或 Windows 性能模式**是不同的**。\n\n现代的（也是更推荐的）管理 Windows 电源计划及性能模式的方法是只使用一个默认的“平衡（推荐）”电源计划，同时在 Windows 设置内选择以下三种 Windows 性能模式其中之一：\n\n* 推荐的项目\n* 更好的性能\n* 最佳性能\n\n（译者注：原文此处的三种性能模式直译为：最佳效能，平衡，最佳性能，但在译者的设备上三种性能模式则是上文所写的三种。我无法确定这是系统翻译的不一致性，还是不同代设备之间的差异性造成的，故在使用译者设备上系统内的名称的同时在此注解。）\n\n你可以在 LLT 的设置中为 LLT 性能模式（安静、均衡、野兽和自定义模式）分配对应的 Windows 性能模式。在这之后，当你切换 LLT 性能模式时，LLT 会自动切换 Windows 性能模式。\n\n传统的方法是使用多个“电源计划”，有些设备出厂时已经安装了这些计划。如果你决定使用这种传统的方法，请将 Windows 设置中的设置保持为默认或推荐设置，并将 LLT 设置为在切换性能模式时自动切换电源计划。\n\n如果你在同步电源模式/计划，尤其是在以上提到的两种方法之间切换时遇到问题，你可以使用 `powercfg -restoredefaultschemes; shutdown /r /t ` 命令重置 Windows 电源设置。此命令会重置**所有** Windows 电源计划回默认并重启电脑。这意味着，所有除“平衡（推荐）”以外的电源计划均将会被删除，因此如果你在这之后还希望使用这些电源计划，请务必在此之前手动备份。\n\n### 开机画面\n\n在 2021 及 2022 年的拯救者笔记本上可以使用 LLT 更改开机画面（默认为拯救者的 Logo 图像）。\n\n开机画面**并不被储存在 UEFI 内**，而是在启动盘的 UEFI 分区内。在设置开机画面时，LLT 会做一些基本的图像检查，比如分辨率、图像格式检查，并计算校验和以确保兼容性。不过，**LLT 无法保证通过检查的图像一定会正确的被 UEFI 读取**。在更改开机画面后的下一次启动时，UEFI 会尝试从 UEFI 分区中加载图像并在开机时显示出来，但若加载失败，则会沿用默认图像。具体的标准除了分辨率和格式外尚不清楚。\n\n若你设置的开机画面无法被正确显示，请尝试别的图片。\n\n### 在自动化中运行程序或脚本\n\n你可以在自动化中使用“运行”步骤执行任何程序或脚本。在配置时你需要提供程序（`.exe`）或脚本（`.bat`）的路径。你也可以提供程序或脚本的参数，就像在命令行下运行它们一样。\n\n<details>\n<summary>实例</summary>\n\n_关闭电脑_\n - 执行路径：`shutdown`\n - 参数：`/s /t 0`\n\n_重启电脑_\n - 执行路径：`shutdown`\n - 参数：`/r`\n\n_运行程序_\n - 执行路径：`C:\\path\\to\\the\\program.exe`（如果该程序所在文件夹已经被加入了 PATH 环境变量，你也可以直接输入程序名）\n - 参数：` `（可选，请查阅你使用的程序的文档或网站以获取可用的参数列表）\n\n_运行脚本_\n - 执行路径：`C:\\path\\to\\the\\script.bat`（如果该脚本所在文件夹已经被加入了 PATH 环境变量，你也可以直接输入程序名）\n - 参数：` `（可选，请查阅你使用的程序的文档或网站以获取可用的参数列表）\n\n_运行 Python 脚本_\n - 执行路径：`C:\\path\\to\\python.exe`（若你已经将 Python 的安装路径加入了 PATH 环境变量，你也可以直接使用 `python`）\n - 参数：`C:\\path\\to\\script.py`\n\n </details>\n\n#### 环境变量\n\nLLT 会自动在进程运行环境内添加一些可被访问的环境变量。这些环境变量对于需要执行上下文的高级脚本会十分实用。根据触发器的不同 LLT 会添加不同的环境变量。\n\n<details>\n<summary>环境变量</summary>\n\n- 当电源适配器插入时\n\t- `LLT_IS_AC_ADAPTER_CONNECTED=TRUE`\n- 当较低功率电源适配器插入时\n\t- `LLT_IS_AC_ADAPTER_CONNECTED=TRUE`\n\t- `LLT_IS_AC_ADAPTER_LOW_POWER=TRUE`\n- 当电源适配器断开时\n\t- `LLT_IS_AC_ADAPTER_CONNECTED=FALSE`\n- 当性能模式改变时\n\t- `LLT_POWER_MODE=<value>`，`value` 的值由当前性能模式决定：`1` 为安静模式，`2` 为均衡模式，`3` 为野兽模式，`255` 为自定义模式\n\t- `LLT_POWER_MODE_NAME=<value>`，`value` 的值为当前性能模式对应的英语大写名称：`QUIET`, `BALANCE`, `PERFORMANCE`, `CUSTOM`\n- 当打开游戏时\n\t- `LLT_IS_GAME_RUNNING=TRUE`\n- 当关闭游戏时\n\t- `LLT_IS_GAME_RUNNING=FALSE`\n- 当应用程序启动时\n\t- `LLT_PROCESSES_STARTED=TRUE`\n\t- `LLT_PROCESSES=<value>`，`value` 的值为以逗号分隔的进程名\n- 当指定的应用关闭时\n\t- `LLT_PROCESSES_STARTED=FALSE`\n\t- `LLT_PROCESSES=<value>`，`value` 的值为以逗号分隔的进程名\t\n- 打开盖子时\n\t- `LLT_IS_LID_OPEN=TRUE`\n- 合上盖子时\n\t- `LLT_IS_LID_OPEN=FALSE`\n- 当显示器打开时\n\t- `LLT_IS_DISPLAY_ON=TRUE`\n- 当显示器关闭时\n\t- `LLT_IS_DISPLAY_ON=FALSE`\n- 当连接了外置屏幕后\n\t- `LLT_IS_EXTERNAL_DISPLAY_CONNECTED=TRUE`\n- 当断开了外置屏幕后\n\t- `LLT_IS_EXTERNAL_DISPLAY_CONNECTED=FALSE`\n- 当启用 HDR 时\n\t- `LLT_IS_HDR_ON=TRUE`\n- 当关闭 HDR 时\n\t- `LLT_IS_HDR_ON=FALSE`\n- 当与 Wi-Fi 连接时\n\t- `LLT_WIFI_CONNECTED=TRUE`\n\t- `LLT_WIFI_SSID=<value>`，`value` 的值为网络的 SSID\n- 当与 Wi-Fi 断开连接时\n\t- `LLT_WIFI_CONNECTED=FALSE`\t\n- 在特定的时间\n\t- `LLT_IS_SUNSET=<value>`，`value` 的值为 `TRUE` 或 `FALSE`，取决于触发器的设置\n\t- `LLT_IS_SUNRISE=<value>`，`value` 的值为 `TRUE` 或 `FALSE`，取决于触发器的设置\n\t- `LLT_TIME\"`，`value` 的值为 `HH:mm`，取决于触发器的设置\n\t- `LLT_DAYS\"`, `value` 的值为以逗号分隔的包含以下内容的列表：`MONDAY`、`TUESDAY`、`WEDNESDAY`、`THURSDAY`、`FRIDAY`、`SATURDAY`、`SUNDAY`，取决于触发器的设置\n- 循环自动化\n\t- `LLT_PERIOD=<value>`，`value` 的值为间隔的秒数\n- 当开机时\n\t- `LLT_STARTUP=TRUE`\n- 当唤醒时\n\t- `LLT_RESUME=TRUE`\n\n</details>\n\n#### 程序输出\n\n当 `等待运行结束` 被启用时，LLT 会抓取被启动的进程的标准输出流内的内容。这些程序输出会被存入 `$RUN_OUTPUT$` 变量，并可在“显示提示弹窗”步骤中使用。\n\n### 命令行界面\n\n你可以在命令行内直接控制 LLT 的部分功能。LLT 命令行界面的可执行文件位于安装文件夹下，名为 `llt.exe`。\n\n命令行界面需要 LLT 在后台运行并且在设置内启用命令行界面，否则其无法正常工作。你也可以选择将命令行界面添加至你的用户 `PATH` 环境变量。\n\n使用命令行界面无需管理员权限。\n\n<details>\n<summary>功能</summary>\n\n* `llt quickAction --list` - 列出所有快捷操作\n* `llt quickAction <name>` - 执行快捷操作 `<name>`\n* `llt feature --list` - 列出所有可用功能\n* `llt feature get <name>` - 打印功能 `<name>` 当前的值\n* `llt feature set <name> --list` - 列出功能 `<name>` 所有可设定的值\n* `llt feature set <name> <value>` - 将功能 `<name>` 的值设定为 `<value>`\n* `llt spectrum profile get` - 打印当前 Spectrum RGB 预设\n* `llt spectrum profile set <profile>` - 将 Spectrum RGB 预设设定为 `<profile>`\n* `llt spectrum brightness get` - 打印当前 Spectrum RGB 的亮度\n* `llt spectrum brightness set <brightness>` - 将 Spectrum RGB 的亮度设定为 `<brightness>`\n* `llt rgb get` - 打印当前四分区 RGB 预设\n* `llt rgb set <profile>` - 将四分区 RGB 预设设定为 `<preset>`\n\n</details>\n\n## 赞助\n\n开发不易，如果你觉得拯救者工具箱不错的话，可以考虑赞助以支持开发。\n\n[使用PayPal赞助](https://www.paypal.com/donate/?hosted_button_id=22AZE2NBP3HTL)\n\n<img src=\"LenovoLegionToolkit.WPF/Assets/Donate/paypal_qr.png\" width=\"200\" alt=\"PayPal QR code\" />\n\n## 贡献者\n\n特别感谢：\n\n* [ViRb3](https://github.com/ViRb3) 创建了 [Lenovo Controller](https://github.com/ViRb3/LenovoController)，这是拯救者工具箱的基础。\n* [falahati](https://github.com/falahati) 创建了 [NvAPIWrapper](https://github.com/falahati/NvAPIWrapper) 和 [WindowsDisplayAPI](https://github.com/falahati/WindowsDisplayAPI)\n* [SmokelessCPU](https://github.com/SmokelessCPU) 帮助我适配了四分区 RGB 键盘背光。\n* [Mario Bălănică](https://github.com/mariobalanica) 的所有贡献。\n* [Ace-Radom](https://github.com/Ace-Radom) 的所有贡献。\n\n翻译贡献者：\n* 保加利亚语 - [Ekscentricitet](https://github.com/Ekscentricitet)\n* 简体中文 - [凌卡Karl](https://github.com/KarlLee830), [Ace-Radom](https://github.com/Ace-Radom)\n* 繁体中文 - [flandretw](https://github.com/flandretw)\n* 捷克语 - J0sef\n* 荷兰语 - Melm, [JarneStaalPXL](https://github.com/JarneStaalPXL)\n* 法语 - EliotAku, [Georges de Massol](https://github.com/jojo2massol), Rigbone, ZeroDegree\n* 德语 - Sko-Inductor, Running_Dead89\n* 希腊语 - GreatApo\n* 意大利语 - [Lampadina17](https://github.com/Lampadina17)\n* 卡拉卡尔帕克语 - KarLin, Gulnaz, Niyazbek Tolibaev, Shingis Joldasbaev\n* 拉脱维亚语 - RJSkudra\n* 罗马尼亚语 - [Mario Bălănică](https://github.com/mariobalanica)\n* 斯洛伐克语 - Mitschud, Newbie414\n* 西班牙语 - M.A.G.\n* 葡萄牙语 - dvsilva\n* 葡萄牙语（巴西） - Vernon\n* 俄语 - [Edward Johan](https://github.com/younyokel)\n* 土耳其语 - Undervolt\n* 乌克兰语 - [Vladyslav Prydatko](https://github.com/va1dee), [Dmytro Zozulia](https://github.com/Nollasko)\n* 越南语 - Not_Nhan, Kuri, Nagidrop\n\n## FAQ\n\n* [为什么即使我已经卸载了 Vantage，我依然可以看到它正在运行？](#为什么即使我已经卸载了-Vantage，我依然可以看到它正在运行？)\n* [为什么我的杀毒软件报告安装程序含有病毒/木马/恶意软件？](#为什么我的杀毒软件报告安装程序含有病毒/木马/恶意软件？)\n* [我能自定义热键吗？](#我能自定义热键吗？)\n* [我可以自定义节能模式充电阈值吗？](#我可以自定义节能模式充电阈值吗？)\n* [我可以更改安静，均衡及野兽模式的风扇策略吗？](#我可以更改安静，均衡及野兽模式的风扇策略吗？)\n* [更换主板后提示不兼容？](#更换主板后提示不兼容？)\n* [为什么我无法在使用电池供电时切换到野兽与自定义模式？](#为什么我无法在使用电池供电时切换到野兽与自定义模式？)\n* [我可以在使用拯救者工具箱时使用其他RGB软件吗？](#我可以在使用拯救者工具箱时使用其他RGB软件吗？)\n* [支持 iCue RGB 键盘吗？](#支持-iCue-RGB-键盘吗？)\n* [能不能多增加一些 RGB 效果？](#能不能多增加一些-RGB-效果？)\n* [2022 款之前的机器能否自定义调节风扇曲线？](#2022-款之前的机器能否自定义调节风扇曲线？)\n* [为啥在启用 Legion AI 引擎后切换性能模式看起来似乎有些问题？](#为啥在启用-Legion-AI-引擎后切换性能模式看起来似乎有些问题？)\n* [为何即使自动化配置正确，游戏检测仍无法正常触发？](#为何即使自动化配置正确，游戏检测仍无法正常触发？)\n* [为什么将鼠标悬停在拯救者工具箱托盘图标上却看不到自定义工具提示？](#为什么将鼠标悬停在拯救者工具箱托盘图标上却看不到自定义工具提示？)\n* [我在哪里可以找到 CPU 睿频模式的设置？](#我在哪里可以找到-CPU-睿频模式的设置？)\n* [如果我在对 GPU 进行超频时超过了阈值，该怎么办？](#如果我在对-GPU-进行超频时超过了阈值，该怎么办？)\n* [我的开机画面为什么没有生效？](#我的开机画面为什么没有生效？)\n* [为什么使用智能 Fn 锁时会出现卡顿？](#为什么使用智能-Fn-锁时会出现卡顿？)\n\n#### 为什么即使我已经卸载了 Vantage，我依然可以看到它正在运行？\n\n自 2.14.0 版本开始，LLT 对于 Vantage 残留进程检测更加严格。总的来说，Vantage 安装了三个组件：\n\n1. Lenovo Vantage App\n2. Lenovo Vantage Service\n3. System Interface Foundation V2 Device\n\n最简单的解决方法是进入 LLT 的设置界面并禁用 Lenovo Vantage，LegionZone 和 Hotkeys（只有没有被卸载的软件会被显示在设置界面）。\n\n如果你还是想卸载它们，请确保卸载全部三个组件，否则 LLT 的部分功能可能无法正常运行。你可以检查任务管理器中是否有名称中包含 “Vantage” 或是 “ImController” 字样的进程。如果你需要别的帮助或是在卸载 `ImController` 过程中遇到问题，可以参考：[Uninstalling System Interface Foundation V2 Device](https://support.lenovo.com/us/en/solutions/HT506070)。\n\n#### 为什么我的杀毒软件报告安装程序含有病毒/木马/恶意软件？\n\n拯救者工具箱使用了许多底层的 Windows API，杀毒软件可能会识别这些 API 的调用为可疑的，从而造成误报。拯救者工具箱本身是开源的，任何感觉此软件有问题的人可以很简单的审查此软件源代码。同时所有安装包都是直接在 Github 上使用 Github Actions 构建的，所以你也不需要担心安装包含有恶意内容。此问题可以通过对程序签名来解决，但此项目只是我业余时间来制作的开源项目，我无法负担每年花几百美元买一个证书。\n\n简而言之，如果你从这个项目的网站上下载了安装程序，不需要担心杀毒软件的报毒，这只是一个误报。同时如果你有能力帮助解决杀毒软件的误报问题，欢迎联系我。\n\n#### 我能自定义热键吗？\n\n你可以在 LLT 的设置界面内自定义 Fn+F9 的热键功能。其余的热键是无法被自定义的。\n\n#### 我可以自定义节能模式充电阈值吗？\n\n不能，该阈值是在固件中被锁死的，无法被更改。对于 2021 年及以前的型号该阈值为 60%，对于之后的型号则为 80%。\n\n#### 我可以更改安静，均衡及野兽模式的风扇策略吗？\n\n不能。除自定义模式以外，风扇策略都是不能更改的。\n\n#### 更换主板后提示不兼容？\n\n有时新主板内的机型和序列号信息出错，你可以尝试 [这篇教程](https://laptopwiki.eu/laptopwiki/guides/lenovo/legion_bios_lvarrecovery) 来恢复。如果这不起作用你可以尝试打开 `%LOCALAPPDATA%\\LenovoLegionToolkit` 并创建一个名为 `args.txt` 的文件并打开文件后呼入 `--skip-compat-check` ，这会禁用拯救者工具箱的兼容性检查。我们建议你在无法正确恢复型号、序列号等信息的情况下再使用这个办法。\n\n#### 为什么我无法在使用电池供电时切换到野兽与自定义模式？\n\n在 2.11.0 版本后，拯救者工具箱与 Lenovo Vantage 与 Legion Zone 的行为保持一致，将不再允许在没有插入适当电源适配器的情况下启用野兽与自定义模式。\n\n如果出于某种原因，你想在电池供电的情况下使用这些模式，你可以使用`--allow-all-power-modes-on-battery`参数来启用（参见[命令行参数](#命令行参数)）。\n\n> [!WARNING]\n> 当笔记本电脑没有连接到全功率的电源适配器时，功耗限制与其他设置在大多数设备上无法正常应用，同时可能会出现一些未知的问题。\n\n#### 我可以在使用拯救者工具箱时使用其他RGB软件吗？\n\n总的来说，可以。 当 Lenovo Vantage 运行时，拯救者工具箱将禁用 RGB 控制，以避免冲突。如果你想使用其他 RGB 软件，如 [L5P-Keyboard-RGB](https://github.com/4JX/L5P-Keyboard-RGB) 或 [OpenRGB](https://openrgb.org/)，你可以在拯救者工具箱中使用 `--force-disable-rgbkb` 或 `--force-disable-spectrumkb` 参数禁用 RGB 以避免冲突（参考[命令行参数](#命令行参数)）。\n\n#### 支持 iCue RGB 键盘吗？\n\n不支持，我推荐你看看 [OpenRGB](https://openrgb.org/) 这个项目。\n\n#### 能不能多增加一些 RGB 效果？\n\n只有硬件支持的选项可用，不计划支持自定义效果。如果你想要自定义效果可以看看 [L5P-Keyboard-RGB](https://github.com/4JX/L5P-Keyboard-RGB) 或 [OpenRGB](https://openrgb.org/)。\n\n#### 2022 款之前的机器能否自定义调节风扇曲线？\n\n如果你是 2022 款与更新的机型的拯救者，但不支持自定义风扇曲线的话，请提交 Issue，我们会尝试适配。2022 款之前的机型由于技术原因无法支持。\n\n#### 为啥在启用 Legion AI 引擎后切换性能模式看起来似乎有些问题？\n\n貌似有些 BIOS 版本在使用 Fn+Q 快捷键时有一个奇怪的问题，你可以试试更新 BIOS，除此之外只能等联想修复它了。\n\n#### 为何即使自动化配置正确，游戏检测仍无法正常触发？\n\n拯救者工具箱的游戏检测功能是基于 Windows 游戏检测的。这意味着游戏检测功能仅能被 Windows 认为是游戏的 EXE 文件触发。同时如果你删除了 Xbox Game Bar，此功能大概率将无法正常工作。\n\nWindows 可能无法正确识别所有的游戏，但你可以在 Xbox Game Bar (Win + G) 设置中将任何程序标记为游戏。你可以在注册表中找到可识别的游戏列表：`HKEY_CURRENT_USER\\System\\GameConfigStore\\Children`。\n\n#### 为什么将鼠标悬停在拯救者工具箱托盘图标上却看不到自定义工具提示？\n\n在 Windows 10 和 11 中，微软对托盘做了大量的修改，修改导致了很多东西产生了变化，从而导致许多东西无法正常工作。因此，自定义工具提示有时会无法正常工作。你可以试试更新你的 Windows，除此之外没什么好办法了。\n\n#### 我在哪里可以找到 CPU 睿频模式的设置？\n\n简而言之，在 Windows 控制面板中。此选项因很难维护已经从拯救者工具箱中删除了。在拯救者工具箱的设置中，你可以找到一个直接跳转到控制面板中电源计划设置页面的按钮，在那里你可以轻松地编辑 CPU 睿频模式设置以及 Windows 电源计划的其他设置。\n\n默认情况下，这个设置是隐藏的，但你也可以通过在终端运行`powercfg.exe -attributes sub_processor perfboostmode -attrib_hide`来重新打开这个选项。\n另外我还推荐其他一些应用程序可以轻松地管理多个电源计划设置：[PowerSettingsExplorer](https://forums.guru3d.com/threads/windows-power-plan-settings-explorer-utility.416058/) 与 [QuickCPU](https://coderbag.com/product/quickcpu)。\n\n#### 如果我在对 GPU 进行超频时超过了阈值，该怎么办？\n\n如果你超频到 GPU 无法稳定运行，甚至无法启动 Windows 的情况，你可以通过以下两种方法尝试解决：\n\n1. 进入 BIOS，尝试找到类似于 “Enabled GPU Overclocking” 与“显卡超频”的选项并将其禁用，启动 Windows，修改拯救者工具箱中的超频参数，并将此选项再次启用。\n2. 在安全模式下启动 Windows，删除拯救者工具箱设置下的 `gpu_oc.json` 文件，该文件位于 `\"%LOCALAPPDATA%\\LenovoLegionToolkit`。\n\n#### 我的开机画面为什么没有生效？\n\n当你设置开机画面时，LLT会做一些基本的检查以确保图像的分辨率和格式符合标准。如果 LLT 显示开机画面已被设置，意味着该图像已经被写入了启动盘的 UEFI 分区。如果你在启动时没有看到开机画面，这意味着你的开机画面无法被正确显示，即使相关选项已经在 UEFI 中被成功配置。在这种情况下，你也许可以尝试使用另外的一张图片，更改图片的格式，或使用别的图像编辑软件，等等。如果你尝试了所有可能的解决方案但你的开机画面还是无法被正常显示，那这也许就是由 BIOS 造成的问题了，你可以尝试更新 BIOS 版本再重试。\n\n#### 为什么使用智能 Fn 锁时会出现卡顿？\n\n在一些版本的 BIOS 上切换 Fn 锁是会造成一定的卡顿。由于智能 Fn 锁本质上是自动的 Fn 锁切换，因此也会受到这个问题的影响。\n\n如果你遇到了这个问题，你可以尝试关闭 BIOS 内的 `Fn键动态替换`（英语版 BIOS 则为 `Fool Proof Fn Ctrl`）功能。这也许可以解决 Fn 锁切换的卡顿。\n\n#### 为什么我无法在设备信息中找到保修信息？\n\n由于联想不断更新国行保修服务的 API 造成此功能越来越难以维护，在最新版本中 LLT 移除了该功能对国内拯救者全部型号的支持。如果你曾经通过 LLT 获取过保修信息那它将保持正常显示，但一旦你手动刷新保修信息或删除了储存的数据这些信息就会消失。这一改动仅会影响使用国行拯救者型号的用户。\n\n## 命令行参数\n\n一些并不常用的功能在 GUI 中没有对应的启动开关。这些功能需要通过在启动 LLT 时添加命令行参数，或将参数添加到 `args.txt` 中的方式启用。\n\n* `--trace` - 启用日志记录并将日志保存到 `%LOCALAPPDATA%\\LenovoLegionToolkit\\log`\n* `--minimized` - 以最小化到托盘的方式启动 LLT\n* `--skip-compat-check` - 在启动 LLT 时不检查设备兼容性 _（使用该参数时 LLT 不保证能够正常运行，也不会为此参数造成的问题提供技术支持）_\n* `--disable-tray-tooltip` - 当鼠标悬停在托盘图标上方时不显示 LLT 托盘自定义工具提示\n* `--allow-all-power-modes-on-battery` - 允许在未接通外部电源的情况下启用所有性能模式 _（使用该参数时 LLT 不保证能够正常运行，也不会为此参数造成的问题提供技术支持）_\n* `--enable-hybrid-mode-automation` - 允许使用 LLT 自动化操作切换混合模式或其他显卡工作模式 _（使用该参数时 LLT 不保证能够正常运行，也不会为此参数造成的问题提供技术支持）_\n* `--force-disable-rgbkb` - 禁用四分区 RGB 键盘的所有光效控制功能\n* `--force-disable-spectrumkb` - 禁用 Spectrum 单键 RGB 的所有光效控制功能\n* `--force-disable-lenovolighting` - 禁用拯救者 Logo，白色键盘背光，和其他如端口背光的光效控制功能\n* `--experimental-gpu-working-mode` - 将显卡工作模式切换至和 LegionZone 相同的实验性模式 _（使用该参数时 LLT 不保证能够正常运行，也不会为此参数造成的问题提供技术支持）_\n* `--proxy-url=example.com` - 指定 LLT 应该使用的代理服务器地址\n* `--proxy-username=some_username` - 如果需要，指定 LLT 使用的代理服务器的用户名\n* `--proxy-password=some_password` - 如果需要，指定 LLT 使用的代理服务器的密码\n* `--proxy-allow-all-certs` - 如果需要，放宽通过代理服务器建立 HTTPS/SSL 连接的所需标准\n* `--disable-update-checker` - 禁用 LLT 自动新版本检测 _（若你希望依赖于 winget，scoop 等等软件更新 LLT，你可以启用此选项）_\n\n如果你希望将所需参数保存至 `args.txt` 文件内：\n1. 进入 `%LOCALAPPDATA%\\LenovoLegionToolkit` 文件夹\n2. 在那里创建一个名为 `args.txt` 的文本文件\n3. 在文件内的每一行添加**一个**参数\n4. 启动 LLT\n\n任何没有在上方列出的，曾经可用的命令行参数均已被废弃，也无法再使用。\n\n## 如何开启记录Log\n\n在一些情况下如果你能提交应用记录的日志信息，将会对我调试和解决问题十分十分有用。\n\n记录 Log 日志的步骤：\n\n1. 确保拯救者工具箱已关闭（后台也记得关掉）；\n2. 打开 `运行` （使用 Win + R 打开）然后输入 `\"%LOCALAPPDATA%\\Programs\\LenovoLegionToolkit\\Lenovo Legion Toolkit.exe\" --trace` 然后点击确定；\n3. 拯救者工具箱将会启动并且可以在左上角能看到 `[LOGGING ENABLED]` ；\n4. 复现你遇到的问题；\n5. 关闭拯救者工具箱 （同样记得关掉后台）；\n6. 然后打开 `运行` （使用 Win + R 打开）然后输入 `\"%LOCALAPPDATA%\\LenovoLegionToolkit\\log\"` ；\n7. 这里就是存放日志文件的地方了，请在 Issue 内汇报 Bug 时一并提交。\n\n## 贡献此项目\n\n我感谢你们提交的任何反馈！不要犹豫，直接提交 Issue。我们也欢迎提交 PR，但提交 PR 前务必查看 [CONTRIBUTING.md](CONTRIBUTING.md) 文件！\n\n> [!IMPORTANT]\n> 译者提示：由于 LLT 并非由国人发起的项目，主要开发者也大多来自欧美，为了整体交流环境的统一和协调，所有 Issue，PR 和 Commit Message **必须**使用英语书写，否则将被直接关闭并锁定，**没有例外**。此点也已在 [CONTRIBUTING.md](CONTRIBUTING.md) 中说明。若你无法流畅地使用英语表达，你可以在使用中文完成草稿后使用百度翻译或 [DeepL](https://www.deepl.com/zh/translator) 等翻译网站或软件将草稿翻译为英语后提交。\n\n#### 适配\n\n> [!IMPORTANT]\n> 拯救者工具箱只目标适配联想拯救者（海内及海外版）、IdeaPad Gaming 和 LOQ 系列。请不要为除上述系列以外的设备提出兼容请求。\n\n如果能适配更多设备就更好了！但要做到这点，我真的很需要你的帮助！\n\n如果你愿意在未适配的机型上试试这个软件，请在启动时点击弹窗的继续按钮，拯救者工具箱会自动打开日志记录，这样你就可以在提交 Issue 时提交了！\n\n*注意一些功能可能无法正常运行*\n\n如果你在 Github 上提交 Issue 并附上你的测试结果和日志我将十分感谢你！\n\n请确保在你提交的 Issue 中包含以下信息：\n\n1. 完整的设备型号 (例如：Legion Y9000X 2022款 IAH7)\n2. 正常工作的功能\n3. 出错的功能\n4. 会导致崩溃闪退的功能\n\n你提交的信息越多，随着时间的推进，拯救者工具箱就会变得越来越好！如果有什么出错的地方请准确写下问题并附上日志。(日志保存地址 `%LOCALAPPDATA%\\LenovoLegionToolkit\\log`). \n\n**万分感谢！**\n"
  },
  {
    "path": "clean.bat",
    "content": "@echo off\n\nrmdir /s /q .vs\nrmdir /s /q _ReSharper.Caches\n\nrmdir /s /q build\nrmdir /s /q build_installer\n\nrmdir /s /q LenovoLegionToolkit.CLI\\bin\nrmdir /s /q LenovoLegionToolkit.CLI\\obj\n\nrmdir /s /q LenovoLegionToolkit.Lib\\bin\nrmdir /s /q LenovoLegionToolkit.Lib\\obj\n\nrmdir /s /q LenovoLegionToolkit.Lib.Automation\\bin\nrmdir /s /q LenovoLegionToolkit.Lib.Automation\\obj\n\nrmdir /s /q LenovoLegionToolkit.Lib.CLI\\bin\nrmdir /s /q LenovoLegionToolkit.Lib.CLI\\obj\n\nrmdir /s /q LenovoLegionToolkit.Lib.Macro\\bin\nrmdir /s /q LenovoLegionToolkit.Lib.Macro\\obj\n\nrmdir /s /q LenovoLegionToolkit.WPF\\bin\nrmdir /s /q LenovoLegionToolkit.WPF\\obj\n\nrmdir /s /q LenovoLegionToolkit.SpectrumTester\\bin\nrmdir /s /q LenovoLegionToolkit.SpectrumTester\\obj\n"
  },
  {
    "path": "crowdin.yml",
    "content": "files:\n  - source: Resource.resx\n    translation: /%original_path%/Resource.%two_letters_code%.resx\n"
  },
  {
    "path": "make.bat",
    "content": "@echo off\n\nIF \"%1\"==\"\" (\n\tSET VERSION=0.0.1\n) ELSE (\n\tSET VERSION=%1\n)\n\t\n\nSET PATH=%PATH%;\"C:\\Program Files (x86)\\Inno Setup 6\"\n\ndotnet publish LenovoLegionToolkit.WPF -c release -o build /p:DebugType=None /p:FileVersion=%VERSION% /p:Version=%VERSION% || exit /b\ndotnet publish LenovoLegionToolkit.SpectrumTester -c release -o build /p:DebugType=None /p:FileVersion=%VERSION% /p:Version=%VERSION% || exit /b\ndotnet publish LenovoLegionToolkit.CLI -c release -o build /p:DebugType=None /p:FileVersion=%VERSION% /p:Version=%VERSION% || exit /b\n\niscc make_installer.iss /DMyAppVersion=%VERSION% || exit /b\n"
  },
  {
    "path": "make_installer.iss",
    "content": "#include \"InnoDependencies\\install_dotnet.iss\"\n\n#define MyAppName \"Lenovo Legion Toolkit\"\n#define MyAppNameCompact \"LenovoLegionToolkit\"\n#define MyAppPublisher \"Bartosz Cichecki\"\n#define MyAppURL \"https://github.com/BartoszCichecki/LenovoLegionToolkit\"\n#define MyAppExeName \"Lenovo Legion Toolkit.exe\"\n\n#ifndef MyAppVersion\n  #define MyAppVersion \"0.0.1\"\n#endif\n\n[Setup]\nUsedUserAreasWarning=false\nAppId={{0C37B9AC-9C3D-4302-8ABB-125C7C7D83D5}\nAppName={#MyAppName}\nAppVersion={#MyAppVersion}\nAppPublisher={#MyAppPublisher}\nAppPublisherURL={#MyAppURL}\nAppSupportURL={#MyAppURL}\nAppUpdatesURL={#MyAppURL}\nDefaultDirName={userpf}\\{#MyAppNameCompact}\nDisableProgramGroupPage=yes\nLicenseFile=LICENSE\nPrivilegesRequired=admin\nOutputBaseFilename=LenovoLegionToolkitSetup\nCompression=lzma2/ultra64  \nSolidCompression=yes\nWizardStyle=modern\nUninstallDisplayIcon={app}\\{#MyAppExeName}\nOutputDir=build_installer\nArchitecturesInstallIn64BitMode=x64\n\n[Code]\nfunction InitializeSetup: Boolean;\nbegin\n  InstallDotNet6DesktopRuntime;\n  Result := True;\nend;\n\n[Languages]\nName: \"en\";      MessagesFile: \"compiler:Default.isl\"\nName: \"ptbr\";    MessagesFile: \"compiler:Languages\\BrazilianPortuguese.isl\"\nName: \"bg\";      MessagesFile: \"compiler:Languages\\Bulgarian.isl\" \nName: \"cs\";      MessagesFile: \"compiler:Languages\\Czech.isl\" \nName: \"nlnl\";    MessagesFile: \"compiler:Languages\\Dutch.isl\"\nName: \"fr\";      MessagesFile: \"compiler:Languages\\French.isl\"\nName: \"de\";      MessagesFile: \"compiler:Languages\\German.isl\"\nName: \"hu\";      MessagesFile: \"compiler:Languages\\Hungarian.isl\"\nName: \"it\";      MessagesFile: \"compiler:Languages\\Italian.isl\"\nName: \"ja\";      MessagesFile: \"compiler:Languages\\Japanese.isl\"\nName: \"pl\";      MessagesFile: \"compiler:Languages\\Polish.isl\"\nName: \"pt\";      MessagesFile: \"compiler:Languages\\Portuguese.isl\"\nName: \"ru\";      MessagesFile: \"compiler:Languages\\Russian.isl\"\nName: \"sk\";      MessagesFile: \"compiler:Languages\\Slovak.isl\"\nName: \"es\";      MessagesFile: \"compiler:Languages\\Spanish.isl\"\nName: \"tr\";      MessagesFile: \"compiler:Languages\\Turkish.isl\"\nName: \"ukr\";     MessagesFile: \"compiler:Languages\\Ukrainian.isl\"\nName: \"ar\";      MessagesFile: \"InnoDependencies\\Arabic.isl\"\nName: \"lv\";      MessagesFile: \"InnoDependencies\\Latvian.isl\"\nName: \"zhhans\";  MessagesFile: \"InnoDependencies\\ChineseSimplified.isl\"\nName: \"zhhant\";  MessagesFile: \"InnoDependencies\\ChineseTraditional.isl\"\nName: \"el\";      MessagesFile: \"InnoDependencies\\Greek.isl\"\nName: \"ro\";      MessagesFile: \"InnoDependencies\\Romanian.isl\"\nName: \"vi\";      MessagesFile: \"InnoDependencies\\Vietnamese.isl\"\n\n[Tasks]\nName: \"desktopicon\"; Description: \"{cm:CreateDesktopIcon}\"; GroupDescription: \"{cm:AdditionalIcons}\"; Flags: unchecked\n\n[Files]\nSource: \"build\\*\"; DestDir: \"{app}\"; Flags: ignoreversion recursesubdirs createallsubdirs\nSource: \"LICENSE\"; DestDir: \"{app}\"; Flags: ignoreversion\n\n[Icons]\nName: \"{autoprograms}\\{#MyAppName}\"; Filename: \"{app}\\{#MyAppExeName}\"\nName: \"{autodesktop}\\{#MyAppName}\"; Filename: \"{app}\\{#MyAppExeName}\"; Tasks: desktopicon\n\n[InstallDelete]\nType: filesandordirs; Name: \"{app}\"\n\n[Run]\nFilename: \"{app}\\{#MyAppExeName}\"; Description: \"{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}\"; Flags: runascurrentuser nowait postinstall\n\n[UninstallDelete]\nType: filesandordirs; Name: \"{localappdata}\\{#MyAppNameCompact}\"\n\n[UninstallRun]\nRunOnceId: \"DelAutorun\"; Filename: \"schtasks\"; Parameters: \"/Delete /TN \"\"LenovoLegionToolkit_Autorun_6efcc882-924c-4cbc-8fec-f45c25696f98\"\" /F\"; Flags: runhidden \n"
  }
]