diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index b36d34f..39bfe62 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -59,6 +59,7 @@ repos: rev: v0.10.0.1 hooks: - id: shellcheck + args: [--exclude=SC2086] stages: [pre-commit] - repo: https://github.com/lovesegfault/beautysh rev: v6.2.1 @@ -81,4 +82,5 @@ repos: args: [--fix] stages: [pre-commit] +exclude: irnas.code-profile default_install_hook_types: [pre-commit, commit-msg] diff --git a/CHANGELOG.md b/CHANGELOG.md index 6258a8f..d256c93 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,3 +5,7 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## [Unreleased] + +### Added + +- Initial project structure and VSCode configs. diff --git a/README.md b/README.md index 009d83c..c7721b2 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,103 @@ -# Irnas's Projects template - -IRNAS template for a GitHub repository. It comes with a -[basic group](https://github.com/IRNAS/irnas-workflows-software/tree/main/workflow-templates/basic) -of CI workflows for release automation. - -## Checklist - -- [ ] Provide a concise and accurate description of your project in the GitHub - "description" field. -- [ ] Provide a concise and accurate description of your project in this - `README.md` file, replace the title. -- [ ] Ensure that your project follows - [repository naming scheme](https://github.com/IRNAS/irnas-guidelines-docs/blob/main/docs/github_projects_guidelines.md#repository-naming-scheme-). -- [ ] Turn on `gitlint` tool by running `gitlint install-hook`. If you do not - have it yet, follow instructions - [here](https://github.com/IRNAS/irnas-guidelines-docs/tree/main/tools/gitlint). -- [ ] As the final step delete this checklist and commit changes. +# VSCode setup by IRNAS + +![vscode-banner](images/vscode-banner.webp) + +## Introduction + +This repository contains installation scripts and configuration files for setting up the VSCode +editor from scratch. The configuration files inside the `dotfiles/.config/Code` are pretty +opinionated. They are suitable for embedded Zephyr/NCS development, writing Python scripts and +JavaScript/React Native applications. + +The configuration is especially coupled to our `.pre-commit-config.yaml` file in the +[irnas-zephyr-template] repo, as it sets up formatters, linters and other tools that are used by the +`pre-commit` tool. + +[irnas-zephyr-template]: https://github.com/IRNAS/irnas-zephyr-template/tree/main + +Currently supported operating systems: + +- Linux (specifically Ubuntu) +- MacOS + +## Editor and extra tooling + +1. To install VsCode run: + + ```shell + ./installation_scripts/install_vscode.sh + ``` + +2. To install LLVM tools run (make sure that all instances of VSCode are closed at this point): + + ```shell + ./installation_scripts/install_llvm.sh + ``` + +## Installing configuration + +You can setup configuration in two ways. + +### Importing Profile file + +1. Open VSCode. +2. Select _cogwheel_ icon on the bottom-left. +3. Navigate through _Profiles -> Import Profile -> Select File_ and select `irnas.code-profile` file + in this repo. +4. Click _Create Profile_ button on the bottom-left. +5. Choose a name for the profile and then click _Create_ button. + +The configuration and extensions will be applied to the VSCode editor. + +### Symlinks + +To install extensions and symlink VSCode settings to its correct location run: + +```shell +./installation_scripts/install_extensions.sh +cd dotfiles +./place_dotfiles.sh +``` + +## Maintaining your configuration and expected workflow + +### Using Profiles + +Users can maintain two Profiles inside the VSCode: + +- `irnas` - This should be the one provided by this repo. +- and custom user Profile, built on top of the `irnas` one. + +Whenever this repository is updated users can update the `user` Profile and then bring desired +changes to their custom Profile. + +### Using symlinks + +`place_dotfiles.sh` creates a symlink for the `.config/Code` alongside it to its correct location in +the `~/` home directory. + +This means that whatever changes are made in the `~/.config/Code`, they are reflected in this +repository and thus visible in the `git` version control system. + +Developers can thus: + +- fork this repo to their personal GitHub account, +- start with a good working VSCode configuration, +- expand it further by their preferences, commit changes and +- sync with the upstream repo, when they want to fetch new commits. + +Developers can also manually copy the things that they want and manually update when they want to. + +## Backing up existing settings + +If you care about your current VSCode configuration you may want to backup below folders: + +On Windows: + +- `%APPDATA%\Code` +- `%USERPROFILE%\.vscode` + +On Linux and macOS: + +- `$HOME/.config/Code/` +- `$HOME/.vscode` diff --git a/dotfiles/.config/Code/User/settings.json b/dotfiles/.config/Code/User/settings.json new file mode 100644 index 0000000..72654cf --- /dev/null +++ b/dotfiles/.config/Code/User/settings.json @@ -0,0 +1,78 @@ +{ + // General settings + "editor.formatOnSave": true, + "files.associations": { + "CMakeLists.txt": "cmake", + "*.h": "c", + "*.hpp": "c", + "*.cpp": "c", + "*defconfig": "kconfig", + "*.conf": "kconfig" + }, + "files.trimTrailingWhitespace": true, + "files.trimFinalNewlines": true, + "files.insertFinalNewline": true, + "[c][cpp]": { + "editor.detectIndentation": false, + "editor.tabSize": 8, + "editor.insertSpaces": false, + "editor.rulers": [ + 100 + ], + "editor.defaultFormatter": "xaver.clang-format" + }, + // Don't change focus, when debugging. + "debug.focusWindowOnBreak": false, + "debug.focusEditorOnBreak": false, + "[markdown]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "editor.autoClosingComments": "always", + "[javascript]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "[jsonc]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "git.openRepositoryInParentFolders": "never", + "security.workspace.trust.enabled": false, + // Does not ask with popup when you want to delete files + "explorer.confirmDelete": false, + "diffEditor.ignoreTrimWhitespace": false, + // Extensions + "clang-format.executable": "/usr/bin/clang-format-18", + "errorLens.enabledDiagnosticLevels": [ + "error", + "warning", + "info", + "hint" + ], + "auto-comment-blocks.singleLineBlockOnEnter": true, + "errorLens.messageEnabled": false, + "errorLens.gutterIconsEnabled": true, + "doxdocgen.generic.paramTemplate": "@param[in] {param} ", + "doxdocgen.generic.returnTemplate": "@return ", + "clangd.arguments": [ + "--enable-config", + "--query-driver=/usr/bin/**/clang-*,/bin/clang,/bin/clang++,/usr/bin/gcc,/usr/bin/g++,${env:HOME}/gnuarmemb/bin/arm-none-eabi-gcc", + "--all-scopes-completion", + "--background-index", + "-j=8", + "--clang-tidy", + "--completion-style=detailed", + "--function-arg-placeholders", + "--header-insertion-decorators", + "--header-insertion=never", + "--pch-storage=memory" + ], + "cortex-debug.enableTelemetry": false, + "cortex-debug.liveWatchRefreshRate": 250, + "C_Cpp.intelliSenseEngine": "disabled", + "workbench.colorTheme": "Default Dark Modern", + "github.copilot.enable": { + // Enable for everything, except plain text and git input boxes. + "*": true, + "plaintext": false, + "scminput": false + }, +} diff --git a/dotfiles/.config/Code/User/snippets/c.json b/dotfiles/.config/Code/User/snippets/c.json new file mode 100644 index 0000000..b1c3e8e --- /dev/null +++ b/dotfiles/.config/Code/User/snippets/c.json @@ -0,0 +1,72 @@ +{ + "hfile": { + "prefix": [ + "hfile" + ], + "body": [ + "/** @file $TM_FILENAME_BASE.h", + " *", + " * @brief ${2:A description of the module's purpose.}", + " *", + " * @par", + " * COPYRIGHT NOTICE: (c) $CURRENT_YEAR Irnas. All rights reserved.", + " */", + "", + "#ifndef ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H", + "#define ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H", + "", + "#ifdef __cplusplus", + "extern \"C\" {", + "#endif", + "", + "${0}", + "", + "#ifdef __cplusplus", + "}", + "#endif", + "", + "#endif /* ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H */", + "", + ], + "description": "IRNAS .h file template" + }, + "cfile": { + "prefix": [ + "cfile" + ], + "body": [ + "/** @file $TM_FILENAME_BASE.c", + " * ", + " * @par ", + " * COPYRIGHT NOTICE: (c) $CURRENT_YEAR Irnas. All rights reserved.", + " */", + "", + "", + "#include \"$TM_FILENAME_BASE.h\"", + "", + "${0}", + "", + ], + "description": "IRNAS .c file template" + }, + "slc": { + "prefix": [ + "slc" + ], + "body": [ + "/* ${0} */" + ], + "description": "C89-style single line comment" + }, + "mlc": { + "prefix": [ + "mlc" + ], + "body": [ + "/*", + " * ${0}", + " */" + ], + "description": "C89-style multi line comment" + } +} diff --git a/dotfiles/place_dotfiles.sh b/dotfiles/place_dotfiles.sh new file mode 100755 index 0000000..f6bc2c0 --- /dev/null +++ b/dotfiles/place_dotfiles.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +dotfilesDir=$(pwd) + +function linkDotfile { + dest="${1}/${2}" + dateStr=$(date +%Y-%m-%d-%H%M) + + if [ -h ~/${2} ]; then + # Existing symlink + echo "Removing existing symlink: ${dest}" + rm ${dest} + + elif [ -f "${dest}" ]; then + # Existing file + echo "Backing up existing file: ${dest}" + mv ${dest}{,.${dateStr}} + + elif [ -d "${dest}" ]; then + # Existing dir + echo "Backing up existing dir: ${dest}" + mv ${dest}{,.${dateStr}} + fi + + echo "Creating new symlink: ${dest}" + ln -s ${dotfilesDir}/${2} ${dest} +} + +# Create config folder if it does not exists, below symlinks fail otherwise +mkdir -p ~/.config + +# Create symlink for a file/folder on a right in the folder on the left +linkDotfile /home/"$USER" .config/Code diff --git a/images/vscode-banner.webp b/images/vscode-banner.webp new file mode 100644 index 0000000..69fe1ce Binary files /dev/null and b/images/vscode-banner.webp differ diff --git a/installation_scripts/install_extensions.sh b/installation_scripts/install_extensions.sh new file mode 100755 index 0000000..7e7ed2d --- /dev/null +++ b/installation_scripts/install_extensions.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +function install { + code --install-extension "$1" +} + +# General development core +install eamodio.gitlens +install usernamehw.errorlens + +# C/C++ extensions +install xaver.clang-format +install cheshirekow.cmake-format +install twxs.cmake +install llvm-vs-code-extensions.vscode-clangd +install cschlosser.doxdocgen +install IRNAS.auto-comment-blocks-single-star +install harry-ross-software.c-snippets +install jeff-hykin.better-c-syntax +install jeff-hykin.better-cpp-syntax + +# JS/TS extensions +install esbenp.prettier-vscode # Also used for formatting markdown files. +install dbaeumer.vscode-eslint +install xabikos.JavaScriptSnippets + +# Python extensions +install ms-python.python +install magicstack.MagicPython +install charliermarsh.ruff +install njpwerner.autodocstring +install frhtylcn.pythonsnippets + +# Cmake +install twxs.cmake +install cheshirekow.cmake-format + +# Docker +install ms-azuretools.vscode-docker +install exiasr.hadolint + +# Jupyter +install ms-toolsai.jupyter + +# Embedded development +install marus25.cortex-debug +install ms-vscode.vscode-embedded-tools +install keroc.hex-fmt +install nordic-semiconductor.nrf-kconfig +install nordic-semiconductor.nrf-kconfig +install nordic-semiconductor.nrf-terminal + +# Extras +install ms-vscode-remote.vscode-remote-extensionpack +install tekumara.typos-vscode +install DavidAnson.vscode-markdownlint +install yzhang.markdown-all-in-one +install shd101wyy.markdown-preview-enhanced +install github.copilot +install github.copilot-chat +install Graphite.gti-vscode +install wayou.vscode-todo-highlight +install mattlott.copy-github-url +install redhat.vscode-yaml +install tamasfe.even-better-toml +install coolchyni.beyond-debug +install vsciot-vscode.vscode-arduino + +# Themes +install github.github-vscode-theme +install liviuschera.noctis +install anoff.theme-monokai-light + +# Extra tools needed by some extensions, but are provided by them. +pip install cmake-format diff --git a/installation_scripts/install_llvm.sh b/installation_scripts/install_llvm.sh new file mode 100755 index 0000000..5335440 --- /dev/null +++ b/installation_scripts/install_llvm.sh @@ -0,0 +1,13 @@ +#! /usr/bin/env bash + +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + wget https://apt.llvm.org/llvm.sh + sudo chmod +x llvm.sh + sudo ./llvm.sh 18 all + rm llvm.sh +elif [[ "$OSTYPE" == "darwin"* ]]; then + brew install clang-format@18 +else + echo "Unsupported platform, exiting" + return 1 +fi diff --git a/installation_scripts/install_vscode.sh b/installation_scripts/install_vscode.sh new file mode 100755 index 0000000..1e395bd --- /dev/null +++ b/installation_scripts/install_vscode.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +if [[ "$OSTYPE" == "linux-gnu"* ]]; then + # Add microsoft's repository to apt + sudo apt update + sudo apt install software-properties-common apt-transport-https wget + wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add - + sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" + + # install + sudo apt install code +elif [[ "$OSTYPE" == "darwin"* ]]; then + brew install --cask visual-studio-code +else + echo "Unsupported platform, exiting" + return 1 +fi diff --git a/irnas.code-profile b/irnas.code-profile new file mode 100644 index 0000000..ef6289f --- /dev/null +++ b/irnas.code-profile @@ -0,0 +1 @@ +{"name":"irnas","settings":"{\"settings\":\"{\\n // General settings\\n \\\"editor.formatOnSave\\\": true,\\n \\\"files.associations\\\": {\\n \\\"CMakeLists.txt\\\": \\\"cmake\\\",\\n \\\"*.h\\\": \\\"c\\\",\\n \\\"*.hpp\\\": \\\"c\\\",\\n \\\"*.cpp\\\": \\\"c\\\",\\n \\\"*defconfig\\\": \\\"kconfig\\\",\\n \\\"*.conf\\\": \\\"kconfig\\\"\\n },\\n \\\"files.trimTrailingWhitespace\\\": true,\\n \\\"files.trimFinalNewlines\\\": true,\\n \\\"files.insertFinalNewline\\\": true,\\n \\\"[c][cpp]\\\": {\\n \\\"editor.detectIndentation\\\": false,\\n \\\"editor.tabSize\\\": 8,\\n \\\"editor.insertSpaces\\\": false,\\n \\\"editor.rulers\\\": [\\n 100\\n ],\\n \\\"editor.defaultFormatter\\\": \\\"xaver.clang-format\\\"\\n },\\n // Don't change focus, when debugging.\\n \\\"debug.focusWindowOnBreak\\\": false,\\n \\\"debug.focusEditorOnBreak\\\": false,\\n \\\"[markdown]\\\": {\\n \\\"editor.defaultFormatter\\\": \\\"esbenp.prettier-vscode\\\"\\n },\\n \\\"editor.autoClosingComments\\\": \\\"always\\\",\\n \\\"[javascript]\\\": {\\n \\\"editor.defaultFormatter\\\": \\\"esbenp.prettier-vscode\\\"\\n },\\n \\\"[jsonc]\\\": {\\n \\\"editor.defaultFormatter\\\": \\\"esbenp.prettier-vscode\\\"\\n },\\n \\\"git.openRepositoryInParentFolders\\\": \\\"never\\\",\\n \\\"security.workspace.trust.enabled\\\": false,\\n // Does not ask with popup when you want to delete files\\n \\\"explorer.confirmDelete\\\": false,\\n \\\"diffEditor.ignoreTrimWhitespace\\\": false,\\n // Extensions\\n \\\"clang-format.executable\\\": \\\"/usr/bin/clang-format-18\\\",\\n \\\"errorLens.enabledDiagnosticLevels\\\": [\\n \\\"error\\\",\\n \\\"warning\\\",\\n \\\"info\\\",\\n \\\"hint\\\"\\n ],\\n \\\"auto-comment-blocks.singleLineBlockOnEnter\\\": true,\\n \\\"errorLens.messageEnabled\\\": false,\\n \\\"errorLens.gutterIconsEnabled\\\": true,\\n \\\"doxdocgen.generic.paramTemplate\\\": \\\"@param[in] {param} \\\",\\n \\\"doxdocgen.generic.returnTemplate\\\": \\\"@return \\\",\\n \\\"clangd.arguments\\\": [\\n \\\"--enable-config\\\",\\n \\\"--query-driver=/usr/bin/**/clang-*,/bin/clang,/bin/clang++,/usr/bin/gcc,/usr/bin/g++,${env:HOME}/gnuarmemb/bin/arm-none-eabi-gcc\\\",\\n \\\"--all-scopes-completion\\\",\\n \\\"--background-index\\\",\\n \\\"-j=8\\\",\\n \\\"--clang-tidy\\\",\\n \\\"--completion-style=detailed\\\",\\n \\\"--function-arg-placeholders\\\",\\n \\\"--header-insertion-decorators\\\",\\n \\\"--header-insertion=never\\\",\\n \\\"--pch-storage=memory\\\"\\n ],\\n \\\"cortex-debug.enableTelemetry\\\": false,\\n \\\"cortex-debug.liveWatchRefreshRate\\\": 250,\\n \\\"C_Cpp.intelliSenseEngine\\\": \\\"disabled\\\",\\n \\\"workbench.colorTheme\\\": \\\"Default Dark Modern\\\",\\n \\\"github.copilot.enable\\\": {\\n // Enable for everything, except plain text and git input boxes.\\n \\\"*\\\": true,\\n \\\"plaintext\\\": false,\\n \\\"scminput\\\": false\\n },\\n}\\n\"}","snippets":"{\"snippets\":{\"c.json\":\"{\\n \\\"hfile\\\": {\\n \\\"prefix\\\": [\\n \\\"hfile\\\"\\n ],\\n \\\"body\\\": [\\n \\\"/** @file $TM_FILENAME_BASE.h\\\",\\n \\\" *\\\",\\n \\\" * @brief ${2:A description of the module's purpose.}\\\",\\n \\\" *\\\",\\n \\\" * @par\\\",\\n \\\" * COPYRIGHT NOTICE: (c) $CURRENT_YEAR Irnas. All rights reserved.\\\",\\n \\\" */\\\",\\n \\\"\\\",\\n \\\"#ifndef ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H\\\",\\n \\\"#define ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H\\\",\\n \\\"\\\",\\n \\\"#ifdef __cplusplus\\\",\\n \\\"extern \\\\\\\"C\\\\\\\" {\\\",\\n \\\"#endif\\\",\\n \\\"\\\",\\n \\\"${0}\\\",\\n \\\"\\\",\\n \\\"#ifdef __cplusplus\\\",\\n \\\"}\\\",\\n \\\"#endif\\\",\\n \\\"\\\",\\n \\\"#endif /* ${TM_FILENAME_BASE/(.*)/${1:/upcase}/}_H */\\\",\\n \\\"\\\",\\n ],\\n \\\"description\\\": \\\"IRNAS .h file template\\\"\\n },\\n \\\"cfile\\\": {\\n \\\"prefix\\\": [\\n \\\"cfile\\\"\\n ],\\n \\\"body\\\": [\\n \\\"/** @file $TM_FILENAME_BASE.c\\\",\\n \\\" * \\\",\\n \\\" * @par \\\",\\n \\\" * COPYRIGHT NOTICE: (c) $CURRENT_YEAR Irnas. All rights reserved.\\\",\\n \\\" */\\\",\\n \\\"\\\",\\n \\\"\\\",\\n \\\"#include \\\\\\\"$TM_FILENAME_BASE.h\\\\\\\"\\\",\\n \\\"\\\",\\n \\\"${0}\\\",\\n \\\"\\\",\\n ],\\n \\\"description\\\": \\\"IRNAS .c file template\\\"\\n },\\n \\\"slc\\\": {\\n \\\"prefix\\\": [\\n \\\"slc\\\"\\n ],\\n \\\"body\\\": [\\n \\\"/* ${0} */\\\"\\n ],\\n \\\"description\\\": \\\"C89-style single line comment\\\"\\n },\\n \\\"mlc\\\": {\\n \\\"prefix\\\": [\\n \\\"mlc\\\"\\n ],\\n \\\"body\\\": [\\n \\\"/*\\\",\\n \\\" * ${0}\\\",\\n \\\" */\\\"\\n ],\\n \\\"description\\\": \\\"C89-style multi line comment\\\"\\n }\\n}\\n\"}}","extensions":"[{\"identifier\":{\"id\":\"anoff.theme-monokai-light\",\"uuid\":\"b0e186eb-1506-4295-8f94-6fd2e9455c07\"},\"displayName\":\"monokai light\"},{\"identifier\":{\"id\":\"charliermarsh.ruff\",\"uuid\":\"c2ca9b43-fa38-44fc-928e-5125970b9c00\"},\"displayName\":\"Ruff\"},{\"identifier\":{\"id\":\"cheshirekow.cmake-format\",\"uuid\":\"5338f4d8-048c-433f-bce4-44aa922cedc2\"},\"displayName\":\"cmake-format\"},{\"identifier\":{\"id\":\"coolchyni.beyond-debug\",\"uuid\":\"4c6a1625-43cf-4b46-ac0b-eedb77aba254\"},\"displayName\":\"GDB Debugger - Beyond\"},{\"identifier\":{\"id\":\"cschlosser.doxdocgen\",\"uuid\":\"da7e26d5-d57c-4742-ab47-d77fb189e195\"},\"displayName\":\"Doxygen Documentation Generator\"},{\"identifier\":{\"id\":\"davidanson.vscode-markdownlint\",\"uuid\":\"daf8b44d-8aae-4da2-80c5-1f770219f643\"},\"displayName\":\"markdownlint\"},{\"identifier\":{\"id\":\"dbaeumer.vscode-eslint\",\"uuid\":\"583b2b34-2c1e-4634-8c0b-0b82e283ea3a\"},\"displayName\":\"ESLint\"},{\"identifier\":{\"id\":\"eamodio.gitlens\",\"uuid\":\"4de763bd-505d-4978-9575-2b7696ecf94e\"},\"displayName\":\"GitLens — Git supercharged\"},{\"identifier\":{\"id\":\"esbenp.prettier-vscode\",\"uuid\":\"96fa4707-6983-4489-b7c5-d5ffdfdcce90\"},\"displayName\":\"Prettier - Code formatter\"},{\"identifier\":{\"id\":\"exiasr.hadolint\",\"uuid\":\"c0f361c5-4179-43c5-9cb5-c4eba77388b4\"},\"displayName\":\"hadolint\"},{\"identifier\":{\"id\":\"frhtylcn.pythonsnippets\",\"uuid\":\"0ad8c94b-76b2-4033-b703-18596182bfcc\"},\"displayName\":\"python snippets\"},{\"identifier\":{\"id\":\"github.copilot\",\"uuid\":\"23c4aeee-f844-43cd-b53e-1113e483f1a6\"},\"displayName\":\"GitHub Copilot\"},{\"identifier\":{\"id\":\"github.copilot-chat\",\"uuid\":\"7ec7d6e6-b89e-4cc5-a59b-d6c4d238246f\"},\"displayName\":\"GitHub Copilot Chat\"},{\"identifier\":{\"id\":\"github.github-vscode-theme\",\"uuid\":\"7328a705-91fc-49e6-8293-da6f112e482d\"},\"displayName\":\"GitHub Theme\"},{\"identifier\":{\"id\":\"graphite.gti-vscode\",\"uuid\":\"144a55e8-20ab-43d4-a7d4-fd9e377a3503\"},\"displayName\":\"Graphite: visual Git for stacked PRs\"},{\"identifier\":{\"id\":\"harry-ross-software.c-snippets\",\"uuid\":\"abc71263-9aab-4c98-8dc6-f87247c08908\"},\"displayName\":\"C Snippets\"},{\"identifier\":{\"id\":\"irnas.auto-comment-blocks-single-star\",\"uuid\":\"7972d2ea-f575-49b0-a736-ec99969a7e98\"},\"displayName\":\"Auto Comment Blocks - single star\"},{\"identifier\":{\"id\":\"jeff-hykin.better-c-syntax\",\"uuid\":\"4046f8e1-9ff4-423a-9c89-a7061602f13c\"},\"displayName\":\"Better C Syntax\"},{\"identifier\":{\"id\":\"jeff-hykin.better-cpp-syntax\",\"uuid\":\"73767f91-7dcb-43cb-90b3-596d073eea1f\"},\"displayName\":\"Better C++ Syntax\"},{\"identifier\":{\"id\":\"keroc.hex-fmt\",\"uuid\":\"5149b880-bc9c-4bd7-a43a-19401d412392\"},\"displayName\":\"Intel HEX format\"},{\"identifier\":{\"id\":\"liviuschera.noctis\",\"uuid\":\"d4e2a48f-0b88-4540-92c5-a4ab4dd2c813\"},\"displayName\":\"Noctis\"},{\"identifier\":{\"id\":\"llvm-vs-code-extensions.vscode-clangd\",\"uuid\":\"103154cb-b81d-4e1b-8281-c5f4fa563d37\"},\"displayName\":\"clangd\"},{\"identifier\":{\"id\":\"magicstack.magicpython\",\"uuid\":\"1f5eb737-5496-44a3-a8a1-36a85eee4979\"}},{\"identifier\":{\"id\":\"marus25.cortex-debug\",\"uuid\":\"2fd8abff-b3ce-46c9-a6a8-92d5ad69d8d0\"},\"displayName\":\"Cortex-Debug\"},{\"identifier\":{\"id\":\"mattlott.copy-github-url\",\"uuid\":\"bb4c27ce-22a8-41af-b95a-80eac052d72b\"},\"displayName\":\"Copy GitHub URL\"},{\"identifier\":{\"id\":\"mcu-debug.debug-tracker-vscode\",\"uuid\":\"bd8507f9-4b21-4877-b045-1f20471fe96e\"},\"displayName\":\"debug-tracker-vscode\"},{\"identifier\":{\"id\":\"mcu-debug.memory-view\",\"uuid\":\"f319e29a-19e8-43fb-8e3e-e264b6144083\"},\"displayName\":\"MemoryView\"},{\"identifier\":{\"id\":\"mcu-debug.peripheral-viewer\",\"uuid\":\"e6f326b2-3602-4e64-9cd1-ebe454be1992\"},\"displayName\":\"Peripheral Viewer\"},{\"identifier\":{\"id\":\"mcu-debug.rtos-views\",\"uuid\":\"0b85f1d6-1d95-4f57-bacd-ca639159f71d\"},\"displayName\":\"RTOS Views\"},{\"identifier\":{\"id\":\"ms-azuretools.vscode-docker\",\"uuid\":\"0479fc1c-3d67-49f9-b087-fb9069afe48f\"},\"displayName\":\"Docker\"},{\"identifier\":{\"id\":\"ms-python.debugpy\",\"uuid\":\"4bd5d2c9-9d65-401a-b0b2-7498d9f17615\"},\"displayName\":\"Python Debugger\"},{\"identifier\":{\"id\":\"ms-python.python\",\"uuid\":\"f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5\"},\"displayName\":\"Python\"},{\"identifier\":{\"id\":\"ms-python.vscode-pylance\",\"uuid\":\"364d2426-116a-433a-a5d8-a5098dc3afbd\"},\"displayName\":\"Pylance\"},{\"identifier\":{\"id\":\"ms-toolsai.jupyter\",\"uuid\":\"6c2f1801-1e7f-45b2-9b5c-7782f1e076e8\"},\"displayName\":\"Jupyter\"},{\"identifier\":{\"id\":\"ms-toolsai.jupyter-keymap\",\"uuid\":\"9f6dc8db-620c-4844-b8c5-e74914f1be27\"},\"displayName\":\"Jupyter Keymap\"},{\"identifier\":{\"id\":\"ms-toolsai.jupyter-renderers\",\"uuid\":\"b15c72f8-d5fe-421a-a4f7-27ed9f6addbf\"},\"displayName\":\"Jupyter Notebook Renderers\"},{\"identifier\":{\"id\":\"ms-toolsai.vscode-jupyter-cell-tags\",\"uuid\":\"ab4fb32a-befb-4102-adf9-1652d0cd6a5e\"},\"displayName\":\"Jupyter Cell Tags\"},{\"identifier\":{\"id\":\"ms-toolsai.vscode-jupyter-slideshow\",\"uuid\":\"e153ca70-b543-4865-b4c5-b31d34185948\"},\"displayName\":\"Jupyter Slide Show\"},{\"identifier\":{\"id\":\"ms-vscode-remote.remote-containers\",\"uuid\":\"93ce222b-5f6f-49b7-9ab1-a0463c6238df\"},\"displayName\":\"Dev Containers\"},{\"identifier\":{\"id\":\"ms-vscode-remote.remote-ssh\",\"uuid\":\"607fd052-be03-4363-b657-2bd62b83d28a\"},\"displayName\":\"Remote - SSH\"},{\"identifier\":{\"id\":\"ms-vscode-remote.remote-ssh-edit\",\"uuid\":\"bfeaf631-bcff-4908-93ed-fda4ef9a0c5c\"},\"displayName\":\"Remote - SSH: Editing Configuration Files\"},{\"identifier\":{\"id\":\"ms-vscode-remote.remote-wsl\",\"uuid\":\"f0c5397b-d357-4197-99f0-cb4202f22818\"},\"displayName\":\"WSL\"},{\"identifier\":{\"id\":\"ms-vscode-remote.vscode-remote-extensionpack\",\"uuid\":\"23d72dfc-8dd1-4e30-926e-8783b4378f13\"},\"displayName\":\"Remote Development\"},{\"identifier\":{\"id\":\"ms-vscode.cpptools\",\"uuid\":\"690b692e-e8a9-493f-b802-8089d50ac1b2\"},\"displayName\":\"C/C++\"},{\"identifier\":{\"id\":\"ms-vscode.remote-explorer\",\"uuid\":\"11858313-52cc-4e57-b3e4-d7b65281e34b\"},\"displayName\":\"Remote Explorer\"},{\"identifier\":{\"id\":\"ms-vscode.remote-server\",\"uuid\":\"105c0b3c-07a9-4156-a4fc-4141040eb07e\"},\"displayName\":\"Remote - Tunnels\"},{\"identifier\":{\"id\":\"ms-vscode.vscode-embedded-tools\",\"uuid\":\"10d19823-b8c0-4b72-b48d-65a421aed669\"},\"displayName\":\"Embedded Tools\"},{\"identifier\":{\"id\":\"ms-vscode.vscode-serial-monitor\",\"uuid\":\"17dcad22-0c4b-428f-8a04-5d2629f1480e\"},\"displayName\":\"Serial Monitor\"},{\"identifier\":{\"id\":\"njpwerner.autodocstring\",\"uuid\":\"2d6fea35-f68e-461d-9b7b-5cd05be99451\"},\"displayName\":\"autoDocstring - Python Docstring Generator\"},{\"identifier\":{\"id\":\"nordic-semiconductor.nrf-kconfig\",\"uuid\":\"3c214a32-71ea-4549-a492-0f972af076a5\"},\"displayName\":\"nRF Kconfig\"},{\"identifier\":{\"id\":\"nordic-semiconductor.nrf-terminal\",\"uuid\":\"6da21755-76f1-4b76-ad44-a93a24af38d1\"},\"displayName\":\"nRF Terminal\"},{\"identifier\":{\"id\":\"redhat.vscode-yaml\",\"uuid\":\"2061917f-f76a-458a-8da9-f162de22b97e\"},\"displayName\":\"YAML\"},{\"identifier\":{\"id\":\"shd101wyy.markdown-preview-enhanced\",\"uuid\":\"3b1db1fc-c7f7-4bd6-9fa4-b499dfa99a8a\"},\"displayName\":\"Markdown Preview Enhanced\"},{\"identifier\":{\"id\":\"tamasfe.even-better-toml\",\"uuid\":\"b2215d5f-675e-4a2b-b6ac-1ca737518b78\"},\"displayName\":\"Even Better TOML\"},{\"identifier\":{\"id\":\"tekumara.typos-vscode\",\"uuid\":\"cacf9bc1-be24-4469-a257-69f3cbe32e04\"},\"displayName\":\"Typos spell checker\"},{\"identifier\":{\"id\":\"twxs.cmake\",\"uuid\":\"2be7cf14-2603-402e-9771-fd79df83cdf8\"},\"displayName\":\"CMake\"},{\"identifier\":{\"id\":\"usernamehw.errorlens\",\"uuid\":\"9d8c32ab-354c-4daf-a9bf-20b633734435\"},\"displayName\":\"Error Lens\"},{\"identifier\":{\"id\":\"vsciot-vscode.vscode-arduino\",\"uuid\":\"cf5a111e-3bd1-4e32-9526-20ec73780741\"},\"displayName\":\"Arduino\"},{\"identifier\":{\"id\":\"wayou.vscode-todo-highlight\",\"uuid\":\"97a08c5f-6667-4242-a5c5-045dfb6bd4b9\"},\"displayName\":\"TODO Highlight\"},{\"identifier\":{\"id\":\"xabikos.javascriptsnippets\",\"uuid\":\"a2cec723-5349-460d-9de9-0fd1f8d3456f\"},\"displayName\":\"JavaScript (ES6) code snippets\"},{\"identifier\":{\"id\":\"xaver.clang-format\",\"uuid\":\"04208f17-8aed-4d49-b0a2-fbce829efbeb\"},\"displayName\":\"Clang-Format\"},{\"identifier\":{\"id\":\"yzhang.markdown-all-in-one\",\"uuid\":\"98790d67-10fa-497c-9113-f6c7489207b2\"},\"displayName\":\"Markdown All in One\"}]","globalState":"{\"storage\":{\"workbench.panel.markers.hidden\":\"[{\\\"id\\\":\\\"workbench.panel.markers.view\\\",\\\"isHidden\\\":false}]\",\"workbench.panel.output.hidden\":\"[{\\\"id\\\":\\\"workbench.panel.output\\\",\\\"isHidden\\\":false}]\",\"terminal.hidden\":\"[{\\\"id\\\":\\\"terminal\\\",\\\"isHidden\\\":false}]\",\"workbench.explorer.views.state.hidden\":\"[{\\\"id\\\":\\\"outline\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"timeline\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.explorer.openEditorsView\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"workbench.explorer.emptyView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.explorer.fileView\\\",\\\"isHidden\\\":false}]\",\"workbench.scm.views.state.hidden\":\"[{\\\"id\\\":\\\"workbench.scm.repositories\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"workbench.scm\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.repositories\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"gitlens.views.commits\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.branches\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.remotes\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.stashes\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.tags\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.worktrees\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.contributors\\\",\\\"isHidden\\\":false}]\",\"workbench.view.search.state.hidden\":\"[{\\\"id\\\":\\\"workbench.view.search\\\",\\\"isHidden\\\":false}]\",\"workbench.activityBar.location\":\"side\",\"workbench.activity.pinnedViewlets2\":\"[{\\\"id\\\":\\\"workbench.view.explorer\\\",\\\"pinned\\\":true,\\\"order\\\":0},{\\\"id\\\":\\\"workbench.view.search\\\",\\\"pinned\\\":true,\\\"order\\\":1},{\\\"id\\\":\\\"workbench.view.scm\\\",\\\"pinned\\\":true,\\\"order\\\":2},{\\\"id\\\":\\\"workbench.view.debug\\\",\\\"pinned\\\":true,\\\"order\\\":3},{\\\"id\\\":\\\"workbench.view.extensions\\\",\\\"pinned\\\":true,\\\"order\\\":4},{\\\"id\\\":\\\"workbench.view.remote\\\",\\\"pinned\\\":true,\\\"order\\\":4},{\\\"id\\\":\\\"workbench.view.extension.test\\\",\\\"pinned\\\":true,\\\"order\\\":6},{\\\"id\\\":\\\"workbench.view.extension.references-view\\\",\\\"pinned\\\":true,\\\"order\\\":7},{\\\"id\\\":\\\"workbench.view.extension.gitlens\\\",\\\"pinned\\\":true,\\\"order\\\":8},{\\\"id\\\":\\\"workbench.view.extension.gitlensInspect\\\",\\\"pinned\\\":true,\\\"order\\\":9},{\\\"id\\\":\\\"workbench.view.extension.gitlensPatch\\\",\\\"pinned\\\":true,\\\"order\\\":10},{\\\"id\\\":\\\"workbench.view.extension.graphite\\\",\\\"pinned\\\":true,\\\"order\\\":11},{\\\"id\\\":\\\"workbench.view.extension.dockerView\\\",\\\"pinned\\\":true,\\\"order\\\":12},{\\\"id\\\":\\\"workbench.view.extension.jupyter\\\",\\\"pinned\\\":true,\\\"order\\\":13},{\\\"id\\\":\\\"workbench.panel.chatSidebar\\\",\\\"pinned\\\":true,\\\"order\\\":100},{\\\"id\\\":\\\"userDataProfiles\\\",\\\"pinned\\\":true},{\\\"id\\\":\\\"workbench.view.sync\\\",\\\"pinned\\\":true},{\\\"id\\\":\\\"workbench.view.editSessions\\\",\\\"pinned\\\":true}]\",\"workbench.panel.pinnedPanels\":\"[{\\\"id\\\":\\\"workbench.panel.markers\\\",\\\"pinned\\\":true,\\\"order\\\":0},{\\\"id\\\":\\\"workbench.panel.output\\\",\\\"pinned\\\":true,\\\"order\\\":1},{\\\"id\\\":\\\"workbench.panel.repl\\\",\\\"pinned\\\":true,\\\"order\\\":2},{\\\"id\\\":\\\"terminal\\\",\\\"pinned\\\":true,\\\"order\\\":3},{\\\"id\\\":\\\"workbench.panel.testResults\\\",\\\"pinned\\\":true,\\\"order\\\":3},{\\\"id\\\":\\\"~remote.forwardedPortsContainer\\\",\\\"pinned\\\":true,\\\"order\\\":5},{\\\"id\\\":\\\"workbench.view.extension.gitlensPanel\\\",\\\"pinned\\\":true,\\\"order\\\":6},{\\\"id\\\":\\\"workbench.view.extension.memory-view\\\",\\\"pinned\\\":true,\\\"order\\\":7},{\\\"id\\\":\\\"workbench.view.extension.rtos-views\\\",\\\"pinned\\\":true,\\\"order\\\":8},{\\\"id\\\":\\\"workbench.view.extension.jupyter-variables\\\",\\\"pinned\\\":true,\\\"order\\\":9},{\\\"id\\\":\\\"workbench.view.extension.vscode-embedded-embeddedTools\\\",\\\"pinned\\\":true,\\\"order\\\":10},{\\\"id\\\":\\\"workbench.view.extension.vscode-serial-monitor-tools\\\",\\\"pinned\\\":true,\\\"order\\\":11},{\\\"id\\\":\\\"workbench.view.extension.nrf-terminal\\\",\\\"pinned\\\":true,\\\"order\\\":12},{\\\"id\\\":\\\"refactorPreview\\\",\\\"pinned\\\":true}]\",\"nps/lastSessionDate\":\"Fri Apr 26 2024\",\"nps/sessionCount\":\"1\",\"workbench.view.debug.state.hidden\":\"[{\\\"id\\\":\\\"workbench.debug.welcome\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.variablesView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.watchExpressionsView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.callStackView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.loadedScriptsView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.breakPointsView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"jsBrowserBreakpoints\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"jsExcludedCallers\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"cortex-debug.liveWatch\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"mcu-debug.peripheral-viewer.svd\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"CppSshTargetsView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"vscode-embedded.webview.registerView\\\",\\\"isHidden\\\":false}]\",\"workbench.telemetryOptOutShown\":\"true\",\"workbench.panel.repl.hidden\":\"[{\\\"id\\\":\\\"workbench.panel.repl.view\\\",\\\"isHidden\\\":false}]\",\"colorThemeData\":\"{\\\"id\\\":\\\"vs-dark vscode-theme-defaults-themes-dark_modern-json\\\",\\\"label\\\":\\\"Dark Modern\\\",\\\"settingsId\\\":\\\"Default Dark Modern\\\",\\\"themeTokenColors\\\":[{\\\"settings\\\":{\\\"foreground\\\":\\\"#D4D4D4\\\"},\\\"scope\\\":[\\\"meta.embedded\\\",\\\"source.groovy.embedded\\\",\\\"string meta.image.inline.markdown\\\",\\\"variable.legacy.builtin.python\\\"]},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":\\\"emphasis\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\"},\\\"scope\\\":\\\"strong\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#000080\\\"},\\\"scope\\\":\\\"header\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#6A9955\\\"},\\\"scope\\\":\\\"comment\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"constant.language\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":[\\\"constant.numeric\\\",\\\"variable.other.enummember\\\",\\\"keyword.operator.plus.exponent\\\",\\\"keyword.operator.minus.exponent\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#646695\\\"},\\\"scope\\\":\\\"constant.regexp\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"entity.name.tag\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"},\\\"scope\\\":[\\\"entity.name.tag.css\\\",\\\"entity.name.tag.less\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"},\\\"scope\\\":\\\"entity.other.attribute-name\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"},\\\"scope\\\":[\\\"entity.other.attribute-name.class.css\\\",\\\"source.css entity.other.attribute-name.class\\\",\\\"entity.other.attribute-name.id.css\\\",\\\"entity.other.attribute-name.parent-selector.css\\\",\\\"entity.other.attribute-name.parent.less\\\",\\\"source.css entity.other.attribute-name.pseudo-class\\\",\\\"entity.other.attribute-name.pseudo-element.css\\\",\\\"source.css.less entity.other.attribute-name.id\\\",\\\"entity.other.attribute-name.scss\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f44747\\\"},\\\"scope\\\":\\\"invalid\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"underline\\\"},\\\"scope\\\":\\\"markup.underline\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"markup.bold\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"bold\\\",\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"markup.heading\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":\\\"markup.italic\\\"},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"strikethrough\\\"},\\\"scope\\\":\\\"markup.strikethrough\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":\\\"markup.inserted\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"markup.deleted\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"markup.changed\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#6A9955\\\"},\\\"scope\\\":\\\"punctuation.definition.quote.begin.markdown\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#6796e6\\\"},\\\"scope\\\":\\\"punctuation.definition.list.begin.markdown\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"markup.inline.raw\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#808080\\\"},\\\"scope\\\":\\\"punctuation.definition.tag\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"meta.preprocessor\\\",\\\"entity.name.function.preprocessor\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"meta.preprocessor.string\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":\\\"meta.preprocessor.numeric\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"},\\\"scope\\\":\\\"meta.structure.dictionary.key.python\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"meta.diff.header\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"storage\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"storage.type\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"storage.modifier\\\",\\\"keyword.operator.noexcept\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":[\\\"string\\\",\\\"meta.embedded.assembly\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"string.tag\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ce9178\\\"},\\\"scope\\\":\\\"string.value\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"},\\\"scope\\\":\\\"string.regexp\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"punctuation.definition.template-expression.begin\\\",\\\"punctuation.definition.template-expression.end\\\",\\\"punctuation.section.embedded\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"},\\\"scope\\\":[\\\"meta.template.expression\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"},\\\"scope\\\":[\\\"support.type.vendored.property-name\\\",\\\"support.type.property-name\\\",\\\"source.css variable\\\",\\\"source.coffee.embedded\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"keyword\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"keyword.control\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"},\\\"scope\\\":\\\"keyword.operator\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"keyword.operator.new\\\",\\\"keyword.operator.expression\\\",\\\"keyword.operator.cast\\\",\\\"keyword.operator.sizeof\\\",\\\"keyword.operator.alignof\\\",\\\"keyword.operator.typeid\\\",\\\"keyword.operator.alignas\\\",\\\"keyword.operator.instanceof\\\",\\\"keyword.operator.logical.python\\\",\\\"keyword.operator.wordlike\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":\\\"keyword.other.unit\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"punctuation.section.embedded.begin.php\\\",\\\"punctuation.section.embedded.end.php\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9cdcfe\\\"},\\\"scope\\\":\\\"support.function.git-rebase\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#b5cea8\\\"},\\\"scope\\\":\\\"constant.sha.git-rebase\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d4d4d4\\\"},\\\"scope\\\":[\\\"storage.modifier.import.java\\\",\\\"variable.language.wildcard.java\\\",\\\"storage.modifier.package.java\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":\\\"variable.language\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#DCDCAA\\\"},\\\"scope\\\":[\\\"entity.name.function\\\",\\\"support.function\\\",\\\"support.constant.handlebars\\\",\\\"source.powershell variable.other.member\\\",\\\"entity.name.operator.custom-literal\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#4EC9B0\\\"},\\\"scope\\\":[\\\"support.class\\\",\\\"support.type\\\",\\\"entity.name.type\\\",\\\"entity.name.namespace\\\",\\\"entity.other.attribute\\\",\\\"entity.name.scope-resolution\\\",\\\"entity.name.class\\\",\\\"storage.type.numeric.go\\\",\\\"storage.type.byte.go\\\",\\\"storage.type.boolean.go\\\",\\\"storage.type.string.go\\\",\\\"storage.type.uintptr.go\\\",\\\"storage.type.error.go\\\",\\\"storage.type.rune.go\\\",\\\"storage.type.cs\\\",\\\"storage.type.generic.cs\\\",\\\"storage.type.modifier.cs\\\",\\\"storage.type.variable.cs\\\",\\\"storage.type.annotation.java\\\",\\\"storage.type.generic.java\\\",\\\"storage.type.java\\\",\\\"storage.type.object.array.java\\\",\\\"storage.type.primitive.array.java\\\",\\\"storage.type.primitive.java\\\",\\\"storage.type.token.java\\\",\\\"storage.type.groovy\\\",\\\"storage.type.annotation.groovy\\\",\\\"storage.type.parameters.groovy\\\",\\\"storage.type.generic.groovy\\\",\\\"storage.type.object.array.groovy\\\",\\\"storage.type.primitive.array.groovy\\\",\\\"storage.type.primitive.groovy\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#4EC9B0\\\"},\\\"scope\\\":[\\\"meta.type.cast.expr\\\",\\\"meta.type.new.expr\\\",\\\"support.constant.math\\\",\\\"support.constant.dom\\\",\\\"support.constant.json\\\",\\\"entity.other.inherited-class\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C586C0\\\"},\\\"scope\\\":[\\\"keyword.control\\\",\\\"source.cpp keyword.operator.new\\\",\\\"keyword.operator.delete\\\",\\\"keyword.other.using\\\",\\\"keyword.other.directive.using\\\",\\\"keyword.other.operator\\\",\\\"entity.name.operator\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9CDCFE\\\"},\\\"scope\\\":[\\\"variable\\\",\\\"meta.definition.variable.name\\\",\\\"support.variable\\\",\\\"entity.name.variable\\\",\\\"constant.other.placeholder\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#4FC1FF\\\"},\\\"scope\\\":[\\\"variable.other.constant\\\",\\\"variable.other.enummember\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#9CDCFE\\\"},\\\"scope\\\":[\\\"meta.object-literal.key\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#CE9178\\\"},\\\"scope\\\":[\\\"support.constant.property-value\\\",\\\"support.constant.font-name\\\",\\\"support.constant.media-type\\\",\\\"support.constant.media\\\",\\\"constant.other.color.rgb-value\\\",\\\"constant.other.rgb-value\\\",\\\"support.constant.color\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#CE9178\\\"},\\\"scope\\\":[\\\"punctuation.definition.group.regexp\\\",\\\"punctuation.definition.group.assertion.regexp\\\",\\\"punctuation.definition.character-class.regexp\\\",\\\"punctuation.character.set.begin.regexp\\\",\\\"punctuation.character.set.end.regexp\\\",\\\"keyword.operator.negation.regexp\\\",\\\"support.other.parenthesis.regexp\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d16969\\\"},\\\"scope\\\":[\\\"constant.character.character-class.regexp\\\",\\\"constant.other.character-class.set.regexp\\\",\\\"constant.other.character-class.regexp\\\",\\\"constant.character.set.regexp\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#DCDCAA\\\"},\\\"scope\\\":[\\\"keyword.operator.or.regexp\\\",\\\"keyword.control.anchor.regexp\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"},\\\"scope\\\":\\\"keyword.operator.quantifier.regexp\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#569cd6\\\"},\\\"scope\\\":[\\\"constant.character\\\",\\\"constant.other.option\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#d7ba7d\\\"},\\\"scope\\\":\\\"constant.character.escape\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C8C8C8\\\"},\\\"scope\\\":\\\"entity.name.label\\\"}],\\\"semanticTokenRules\\\":[{\\\"_selector\\\":\\\"newOperator\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#d4d4d4\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"stringLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#ce9178\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"customLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#d4d4d4\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"numberLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#b5cea8\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"newOperator\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#c586c0\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"stringLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#ce9178\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"customLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#dcdcaa\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}},{\\\"_selector\\\":\\\"numberLiteral\\\",\\\"_style\\\":{\\\"_foreground\\\":\\\"#b5cea8\\\",\\\"_bold\\\":null,\\\"_underline\\\":null,\\\"_italic\\\":null,\\\"_strikethrough\\\":null}}],\\\"extensionData\\\":{\\\"_extensionId\\\":\\\"vscode.theme-defaults\\\",\\\"_extensionIsBuiltin\\\":true,\\\"_extensionName\\\":\\\"theme-defaults\\\",\\\"_extensionPublisher\\\":\\\"vscode\\\"},\\\"themeSemanticHighlighting\\\":true,\\\"colorMap\\\":{\\\"checkbox.border\\\":\\\"#3c3c3c\\\",\\\"editor.background\\\":\\\"#1f1f1f\\\",\\\"editor.foreground\\\":\\\"#cccccc\\\",\\\"editor.inactiveSelectionBackground\\\":\\\"#3a3d41\\\",\\\"editorIndentGuide.background1\\\":\\\"#404040\\\",\\\"editorIndentGuide.activeBackground1\\\":\\\"#707070\\\",\\\"editor.selectionHighlightBackground\\\":\\\"#add6ff26\\\",\\\"list.dropBackground\\\":\\\"#383b3d\\\",\\\"activityBarBadge.background\\\":\\\"#0078d4\\\",\\\"sideBarTitle.foreground\\\":\\\"#cccccc\\\",\\\"input.placeholderForeground\\\":\\\"#989898\\\",\\\"menu.background\\\":\\\"#1f1f1f\\\",\\\"menu.foreground\\\":\\\"#cccccc\\\",\\\"menu.separatorBackground\\\":\\\"#454545\\\",\\\"menu.border\\\":\\\"#454545\\\",\\\"statusBarItem.remoteForeground\\\":\\\"#ffffff\\\",\\\"statusBarItem.remoteBackground\\\":\\\"#0078d4\\\",\\\"ports.iconRunningProcessForeground\\\":\\\"#369432\\\",\\\"sideBarSectionHeader.background\\\":\\\"#181818\\\",\\\"sideBarSectionHeader.border\\\":\\\"#2b2b2b\\\",\\\"tab.lastPinnedBorder\\\":\\\"#cccccc33\\\",\\\"list.activeSelectionIconForeground\\\":\\\"#ffffff\\\",\\\"terminal.inactiveSelectionBackground\\\":\\\"#3a3d41\\\",\\\"widget.border\\\":\\\"#313131\\\",\\\"actionBar.toggledBackground\\\":\\\"#383a49\\\",\\\"activityBar.activeBorder\\\":\\\"#0078d4\\\",\\\"activityBar.background\\\":\\\"#181818\\\",\\\"activityBar.border\\\":\\\"#2b2b2b\\\",\\\"activityBar.foreground\\\":\\\"#d7d7d7\\\",\\\"activityBar.inactiveForeground\\\":\\\"#868686\\\",\\\"activityBarBadge.foreground\\\":\\\"#ffffff\\\",\\\"badge.background\\\":\\\"#616161\\\",\\\"badge.foreground\\\":\\\"#f8f8f8\\\",\\\"button.background\\\":\\\"#0078d4\\\",\\\"button.border\\\":\\\"#ffffff12\\\",\\\"button.foreground\\\":\\\"#ffffff\\\",\\\"button.hoverBackground\\\":\\\"#026ec1\\\",\\\"button.secondaryBackground\\\":\\\"#313131\\\",\\\"button.secondaryForeground\\\":\\\"#cccccc\\\",\\\"button.secondaryHoverBackground\\\":\\\"#3c3c3c\\\",\\\"chat.slashCommandBackground\\\":\\\"#34414b\\\",\\\"chat.slashCommandForeground\\\":\\\"#40a6ff\\\",\\\"checkbox.background\\\":\\\"#313131\\\",\\\"debugToolBar.background\\\":\\\"#181818\\\",\\\"descriptionForeground\\\":\\\"#9d9d9d\\\",\\\"dropdown.background\\\":\\\"#313131\\\",\\\"dropdown.border\\\":\\\"#3c3c3c\\\",\\\"dropdown.foreground\\\":\\\"#cccccc\\\",\\\"dropdown.listBackground\\\":\\\"#1f1f1f\\\",\\\"editor.findMatchBackground\\\":\\\"#9e6a03\\\",\\\"editorGroup.border\\\":\\\"#ffffff17\\\",\\\"editorGroupHeader.tabsBackground\\\":\\\"#181818\\\",\\\"editorGroupHeader.tabsBorder\\\":\\\"#2b2b2b\\\",\\\"editorGutter.addedBackground\\\":\\\"#2ea043\\\",\\\"editorGutter.deletedBackground\\\":\\\"#f85149\\\",\\\"editorGutter.modifiedBackground\\\":\\\"#0078d4\\\",\\\"editorLineNumber.activeForeground\\\":\\\"#cccccc\\\",\\\"editorLineNumber.foreground\\\":\\\"#6e7681\\\",\\\"editorOverviewRuler.border\\\":\\\"#010409\\\",\\\"editorWidget.background\\\":\\\"#202020\\\",\\\"errorForeground\\\":\\\"#f85149\\\",\\\"focusBorder\\\":\\\"#0078d4\\\",\\\"foreground\\\":\\\"#cccccc\\\",\\\"icon.foreground\\\":\\\"#cccccc\\\",\\\"input.background\\\":\\\"#313131\\\",\\\"input.border\\\":\\\"#3c3c3c\\\",\\\"input.foreground\\\":\\\"#cccccc\\\",\\\"inputOption.activeBackground\\\":\\\"#2489db82\\\",\\\"inputOption.activeBorder\\\":\\\"#2488db\\\",\\\"keybindingLabel.foreground\\\":\\\"#cccccc\\\",\\\"notificationCenterHeader.background\\\":\\\"#1f1f1f\\\",\\\"notificationCenterHeader.foreground\\\":\\\"#cccccc\\\",\\\"notifications.background\\\":\\\"#1f1f1f\\\",\\\"notifications.border\\\":\\\"#2b2b2b\\\",\\\"notifications.foreground\\\":\\\"#cccccc\\\",\\\"panel.background\\\":\\\"#181818\\\",\\\"panel.border\\\":\\\"#2b2b2b\\\",\\\"panelInput.border\\\":\\\"#2b2b2b\\\",\\\"panelTitle.activeBorder\\\":\\\"#0078d4\\\",\\\"panelTitle.activeForeground\\\":\\\"#cccccc\\\",\\\"panelTitle.inactiveForeground\\\":\\\"#9d9d9d\\\",\\\"peekViewEditor.background\\\":\\\"#1f1f1f\\\",\\\"peekViewEditor.matchHighlightBackground\\\":\\\"#bb800966\\\",\\\"peekViewResult.background\\\":\\\"#1f1f1f\\\",\\\"peekViewResult.matchHighlightBackground\\\":\\\"#bb800966\\\",\\\"pickerGroup.border\\\":\\\"#3c3c3c\\\",\\\"progressBar.background\\\":\\\"#0078d4\\\",\\\"quickInput.background\\\":\\\"#222222\\\",\\\"quickInput.foreground\\\":\\\"#cccccc\\\",\\\"settings.dropdownBackground\\\":\\\"#313131\\\",\\\"settings.dropdownBorder\\\":\\\"#3c3c3c\\\",\\\"settings.headerForeground\\\":\\\"#ffffff\\\",\\\"settings.modifiedItemIndicator\\\":\\\"#bb800966\\\",\\\"sideBar.background\\\":\\\"#181818\\\",\\\"sideBar.border\\\":\\\"#2b2b2b\\\",\\\"sideBar.foreground\\\":\\\"#cccccc\\\",\\\"sideBarSectionHeader.foreground\\\":\\\"#cccccc\\\",\\\"statusBar.background\\\":\\\"#181818\\\",\\\"statusBar.border\\\":\\\"#2b2b2b\\\",\\\"statusBar.debuggingBackground\\\":\\\"#0078d4\\\",\\\"statusBar.debuggingForeground\\\":\\\"#ffffff\\\",\\\"statusBar.focusBorder\\\":\\\"#0078d4\\\",\\\"statusBar.foreground\\\":\\\"#cccccc\\\",\\\"statusBar.noFolderBackground\\\":\\\"#1f1f1f\\\",\\\"statusBarItem.focusBorder\\\":\\\"#0078d4\\\",\\\"statusBarItem.prominentBackground\\\":\\\"#6e768166\\\",\\\"tab.activeBackground\\\":\\\"#1f1f1f\\\",\\\"tab.activeBorder\\\":\\\"#1f1f1f\\\",\\\"tab.activeBorderTop\\\":\\\"#0078d4\\\",\\\"tab.activeForeground\\\":\\\"#ffffff\\\",\\\"tab.border\\\":\\\"#2b2b2b\\\",\\\"tab.hoverBackground\\\":\\\"#1f1f1f\\\",\\\"tab.inactiveBackground\\\":\\\"#181818\\\",\\\"tab.inactiveForeground\\\":\\\"#9d9d9d\\\",\\\"tab.unfocusedActiveBorder\\\":\\\"#1f1f1f\\\",\\\"tab.unfocusedActiveBorderTop\\\":\\\"#2b2b2b\\\",\\\"tab.unfocusedHoverBackground\\\":\\\"#1f1f1f\\\",\\\"terminal.foreground\\\":\\\"#cccccc\\\",\\\"terminal.tab.activeBorder\\\":\\\"#0078d4\\\",\\\"textBlockQuote.background\\\":\\\"#2b2b2b\\\",\\\"textBlockQuote.border\\\":\\\"#616161\\\",\\\"textCodeBlock.background\\\":\\\"#2b2b2b\\\",\\\"textLink.activeForeground\\\":\\\"#4daafc\\\",\\\"textLink.foreground\\\":\\\"#4daafc\\\",\\\"textPreformat.foreground\\\":\\\"#d0d0d0\\\",\\\"textPreformat.background\\\":\\\"#3c3c3c\\\",\\\"textSeparator.foreground\\\":\\\"#21262d\\\",\\\"titleBar.activeBackground\\\":\\\"#181818\\\",\\\"titleBar.activeForeground\\\":\\\"#cccccc\\\",\\\"titleBar.border\\\":\\\"#2b2b2b\\\",\\\"titleBar.inactiveBackground\\\":\\\"#1f1f1f\\\",\\\"titleBar.inactiveForeground\\\":\\\"#9d9d9d\\\",\\\"welcomePage.tileBackground\\\":\\\"#2b2b2b\\\",\\\"welcomePage.progress.foreground\\\":\\\"#0078d4\\\"},\\\"watch\\\":false}\",\"memento/gettingStartedService\":\"{\\\"installGit\\\":{\\\"done\\\":true}}\",\"encryption.migratedToGnomeLibsecret\":\"true\",\"themeUpdatedNotificationShown\":\"true\",\"userDataProfiles.state.hidden\":\"[{\\\"id\\\":\\\"workbench.views.profiles.import.preview\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.profiles.export.preview\\\",\\\"isHidden\\\":false}]\",\"ces/skipSurvey\":\"1.87.2\",\"workbench.view.extension.nrf-terminal.state.hidden\":\"[{\\\"id\\\":\\\"nrf-terminal-view\\\",\\\"isHidden\\\":false}]\",\"workbench.panel.alignment\":\"center\",\"workbench.welcomePage.walkthroughMetadata\":\"[[\\\"eamodio.gitlens#gitlens.welcome\\\",{\\\"firstSeen\\\":1714135850654,\\\"stepIDs\\\":[\\\"gitlens.welcome.tutorial\\\",\\\"gitlens.welcome.sidebars\\\",\\\"gitlens.welcome.currentLineBlame\\\",\\\"gitlens.welcome.fileAnnotations\\\",\\\"gitlens.welcome.revisionHistory\\\",\\\"gitlens.welcome.commitGraph\\\",\\\"gitlens.welcome.workspaces\\\",\\\"gitlens.welcome.hostingServiceIntegrations\\\",\\\"gitlens.welcome.labs\\\",\\\"gitlens.welcome.preview\\\",\\\"gitlens.welcome.trial\\\",\\\"gitlens.welcome.services\\\",\\\"gitlens.welcome.additional\\\"],\\\"manaullyOpened\\\":false}],[\\\"GitHub.copilot#copilotWelcome\\\",{\\\"firstSeen\\\":1714135850654,\\\"stepIDs\\\":[\\\"copilot.signin\\\",\\\"copilot.firstsuggest\\\",\\\"copilot.chatWin\\\",\\\"copilot.chatNonWin\\\",\\\"copilot.realfiles.openrecent\\\",\\\"copilot.realfiles.quickopen\\\",\\\"copilot.iterate\\\",\\\"copilot.creativity\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-azuretools.vscode-docker#dockerStart\\\",{\\\"firstSeen\\\":1714135850654,\\\"stepIDs\\\":[\\\"openFolder\\\",\\\"openFolderMac\\\",\\\"scaffold\\\",\\\"buildImage\\\",\\\"runContainer\\\",\\\"dockerExplorer\\\",\\\"pushImage\\\",\\\"azDeploy\\\",\\\"learn\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-python.python#pythonWelcome\\\",{\\\"firstSeen\\\":1714135850654,\\\"stepIDs\\\":[\\\"python.createPythonFile\\\",\\\"python.installPythonWin8\\\",\\\"python.installPythonMac\\\",\\\"python.installPythonLinux\\\",\\\"python.selectInterpreter\\\",\\\"python.createEnvironment\\\",\\\"python.runAndDebug\\\",\\\"python.learnMoreWithDS\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-python.python#pythonWelcome2\\\",{\\\"firstSeen\\\":1714135850654,\\\"stepIDs\\\":[\\\"python.createPythonFile\\\",\\\"python.installPythonWin8\\\",\\\"python.installPythonMac\\\",\\\"python.installPythonLinux\\\",\\\"python.createEnvironment2\\\",\\\"python.runAndDebug2\\\",\\\"python.learnMoreWithDS2\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-python.python#pythonDataScienceWelcome\\\",{\\\"firstSeen\\\":1714135850654,\\\"stepIDs\\\":[\\\"python.installJupyterExt\\\",\\\"python.createNewNotebook\\\",\\\"python.openInteractiveWindow\\\",\\\"python.dataScienceLearnMore\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-toolsai.jupyter#jupyterWelcome\\\",{\\\"firstSeen\\\":1714135850654,\\\"stepIDs\\\":[\\\"ipynb.newUntitledIpynb\\\",\\\"jupyter.selectKernel\\\",\\\"jupyter.exploreAndDebug\\\",\\\"jupyter.dataScienceLearnMore\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-vscode-remote.remote-wsl#wslWalkthrough\\\",{\\\"firstSeen\\\":1714135850654,\\\"stepIDs\\\":[\\\"explore.commands\\\",\\\"open.wslwindow\\\",\\\"create.project\\\",\\\"open.project\\\",\\\"linux.environment\\\",\\\"install.tools\\\",\\\"run.debug\\\",\\\"come.back\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-vscode.cpptools#cppWelcome\\\",{\\\"firstSeen\\\":1714135850654,\\\"stepIDs\\\":[\\\"awaiting.activation.mac\\\",\\\"awaiting.activation.linux\\\",\\\"awaiting.activation.windows\\\",\\\"awaiting.activation.windows10\\\",\\\"awaiting.activation.windows11\\\",\\\"no.compilers.found.mac\\\",\\\"no.compilers.found.linux\\\",\\\"no.compilers.found.windows\\\",\\\"no.compilers.found.windows10\\\",\\\"no.compilers.found.windows11\\\",\\\"verify.compiler.mac\\\",\\\"verify.compiler.linux\\\",\\\"verify.compiler.windows\\\",\\\"verify.compiler.windows10\\\",\\\"verify.compiler.windows11\\\",\\\"create.cpp.file\\\",\\\"relaunch.developer.command.prompt.windows\\\",\\\"run.project.mac\\\",\\\"run.project.linux\\\",\\\"run.project.windows\\\",\\\"customize.debugging.linux\\\",\\\"customize.debugging.windows\\\",\\\"customize.debugging.mac\\\"],\\\"manaullyOpened\\\":false}]]\",\"workbench.view.extension.gitlensPanel.state.hidden\":\"[{\\\"id\\\":\\\"gitlens.views.graph\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"gitlens.views.graphDetails\\\",\\\"isHidden\\\":false}]\"}}"} \ No newline at end of file